博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web项目中的执行流程参数传递详解
阅读量:6786 次
发布时间:2019-06-26

本文共 1005 字,大约阅读时间需要 3 分钟。

还是从这个图开始讲解:

struts2中有一个存放数据的中心:值栈。(值栈里面有map和对象栈)

首先:值栈的作用范围是一个请求:request作用域(一个请求是代表的一个过程,即页面点击到数据返回到页面的一个过程)

这个图的原理是这样子的:

(1)当页面发出请求的时候首先会自动创建一个值栈,然后进行初始化(这里所谓的初始化就是先向值栈中放入一个些东西:什么东西呢?map中会放入如图所示的jsp的内置对象,对象栈中存放的是action或者其他的,这些东西都是准备来装载数据的)

(2)初始化后的值栈中已经存在了一些东西,但是这些很多都是空的,需要我们继续向里面装载内容。请求发出的前后会经过一系列的拦截器:比如ModelDriven(用来封装model对象)和Params(用来封装参数)。这个model对象怎么获取呢,这个可以看modelDriven的源码:当我们创建一个action实例的时候,会实现ModelDriven类,此时会将这个实例对象比如Role传递给ModelDriven,然后将这个实例对象会作为model封装到值栈中,model默认放在对象栈的顶层。也就是说这个role对象此时已经在对象栈中了,当我们在页面填入一些有关这个role类的属性内容的时候,这个model就获取到内容存入到对象栈中,也就是说页面填入的内容封装到了model中,我们在代码中可以直接使用。

 第二个Params这个拦截器用来封装参数的,当我们的实例需要一些额外的参数的时候,我们可以在action中定义,然后这个参数会由param拦截器拦截同样放入到对象栈中的action中,也就是说action中定义的参数我们也放入到了栈中。不要忘了:当定义了参数后,不要忘了使用get和set方法来获取和设置值。

(3)其实这个是一个循环的过程,当经过action执行的时候,我们进行业务逻辑的实现,这个时候是从数据库中获取到一些数据,这些数据会通过ActionContext存放到值栈中,然后在jsp页面通过某种方式来获取这个值,然后展示在页面,然后当点击页面请求的时候,这些数据都会显示出来,在jsp页面定义一些访问的url,点击按钮的时候这个时候从数据库中获取的值也默认在此url中,然后又一轮循环开始。

 

转载于:https://www.cnblogs.com/fengli9998/p/6523930.html

你可能感兴趣的文章
第一天使用博客园 ----与肝胆人共事,于无字句处读书
查看>>
20172318 2018-2019-1 《程序设计与数据结构》第4周学习总结
查看>>
【python3的学习之路十二】面向对象高级编程
查看>>
机器学习导图系列(3):过程
查看>>
JSON
查看>>
js——BOM
查看>>
常用的加密与解密类
查看>>
hrbeu 哈工程 Eular Graph
查看>>
web crawling(plus6) pic mining
查看>>
sintimental analysis
查看>>
打印沙漏
查看>>
visual studio 2005没有找到MSVCR80D.dll问题
查看>>
获取鼠标的当前位置
查看>>
django_models_一对一关系
查看>>
内核常见锁的机制与实现分析2
查看>>
Configure the handler mapping priority in Spring MVC
查看>>
Send an image over a network using Qt
查看>>
ubuntu下安装ftp服务器
查看>>
sites
查看>>
第14章 Python和XML
查看>>