web项目中的执行流程参数传递详解

还是从这个图开始讲解:
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中,然后又一轮循环开始。
。
web项目中的执行流程参数传递详解的更多相关文章
- linux部署web项目到tomcat下(图文详解)
		大家好,相信不少初学者不知道如何将windows eclipse下开发的web项目部署到linux系统的tomcat下,今天我将图文并茂教大家 首先呢,比如我新建一个web项目,打开eclipse编辑 ... 
- UWP开发之Mvvmlight实践一:如何在项目中添加使用Mvvmlight(图文详解)
		最近一直在做UWP开发,为了节省成本等等接触到MVVMlight,觉得有必要发点时间研究它的用法与实现原理才行.如果有问题的地方或者有好的建议欢迎提出来. 随着移动开发的热门,Mvvmlight在An ... 
- log4net项目中如何配置,以下详解
		log4net.config配置文件 <?xml version="1.0" encoding="utf-8"?> <log4net debu ... 
- web.xml中的<jsp-config>的用法详解
		<jsp-config> 包括<taglib> 和<jsp-property-group> 两个子元素. 其中<taglib>元素在JSP 1.2时就已 ... 
- php课程 1-3 web项目中php、html、js代码的执行顺序是怎样的(详解)
		php课程 1-3 web项目中php.html.js代码的执行顺序是怎样的(详解) 一.总结 一句话总结:b/s结构 总是先执行服务器端的先.js是客户端脚本 ,是最后执行的.所以肯定是php先执行 ... 
- 转 web项目中的web.xml元素解析
		转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45) 阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ... 
- 重新学习Spring一--Spring在web项目中的启动过程
		1 Spring 在web项目中的启动过程 Spring简介 Spring 最简单的功能就是创建对象和管理这些对象间的依赖关系,实现高内聚.低耦合.(高内聚:相关性很强的代码组成,既单一责任原则:低耦 ... 
- JAVA WEB项目中各种路径的获取
		JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报 分类: JAVA开发(41) 1.可以在s ... 
- Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问
		本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ... 
随机推荐
- python清空列表的方法
			1.大数据量的list,要进行局部元素删除,尽量避免用del随机删除,非常影响性能,如果删除量很大,不如直接新建list,然后用下面的方法释放清空旧list. 2.对于一般性数据量超大的list,快速 ... 
- iOS自学-混合编程
			OC调用swift,引入头文件 #improt "工程名字-swift.h" swift调用OC,在桥梁文件里面引入OC文件 的头文件 尽情混合编程吧... 
- ASP.NET中实现封装与策略模式
			首先把运算方法封装起来,这样在网页界面中直接就可以调用了,不过是换张脸而已! using System; using System.Collections.Generic; using System. ... 
- BATA冲刺准备
			目录 第一部分 调研,评测 福大助手的bug IOS端 Android端 福大助手结构体系的思维导图 为什么开发人员没有发现这个bug 假设团队开发这款app,应注意哪些方面(架构.部署运维.微服务等 ... 
- “吃神么,买神么”的第一个Sprint计划(第六天)
			“吃神么,买神么”项目Sprint计划 ——5.26 星期二(第六天)立会内容与进度 摘要:logo最终出来了,,背景也出来了,可以开始将完成的部分放到同一个文件中,决定剩下的时间把昨晚的部分贴上去 ... 
- 对于Redis的了解
			Redis :高性能的key-value数据库,支持存储的value类型包括字符串.链表.集合.有序集合.哈希类型. redis使用两种文件格式:全量数据和增量请求. 全量数据格式是将内存中的数据写入 ... 
- 个人作业-Week 2
			一.代码复审 概要部分 代码能符合需求和规格说明么? 能: 代码设计是否有周全的考虑? 有较为周全的考虑: 代码可读性如何? 可读性一般: 代码容易维护么? 不太容易维护: 代码的每一行都执行并检查过 ... 
- 使用Fiddler后谷歌浏览器访问https不安全
			今天初次接触java爬虫,师兄给了一个软件加一个demo,软件是Fiddler,在网上找资料稍微学习了一下,自己一顿乱配...然后gg,谷歌浏览器访问https协议时都提示不安全,“您的链接不是一个私 ... 
- m3u8 player
			m3u8 player m3u8 是一种基于 HTTP Live Streaming 文件视频格式,它主要是存放整个视频的基本信息和分片(Segment)组成.目前 由 Apple.inc 率先提出的 ... 
- macOS how to install python3
			macOS how to install python3 macOS & Python 3.7.2 https://www.python.org/downloads/mac-osx/ http ... 
