还是从这个图开始讲解:

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项目中的执行流程参数传递详解的更多相关文章

  1. linux部署web项目到tomcat下(图文详解)

    大家好,相信不少初学者不知道如何将windows eclipse下开发的web项目部署到linux系统的tomcat下,今天我将图文并茂教大家 首先呢,比如我新建一个web项目,打开eclipse编辑 ...

  2. UWP开发之Mvvmlight实践一:如何在项目中添加使用Mvvmlight(图文详解)

    最近一直在做UWP开发,为了节省成本等等接触到MVVMlight,觉得有必要发点时间研究它的用法与实现原理才行.如果有问题的地方或者有好的建议欢迎提出来. 随着移动开发的热门,Mvvmlight在An ...

  3. log4net项目中如何配置,以下详解

    log4net.config配置文件 <?xml version="1.0" encoding="utf-8"?> <log4net debu ...

  4. web.xml中的<jsp-config>的用法详解

    <jsp-config> 包括<taglib> 和<jsp-property-group> 两个子元素. 其中<taglib>元素在JSP 1.2时就已 ...

  5. php课程 1-3 web项目中php、html、js代码的执行顺序是怎样的(详解)

    php课程 1-3 web项目中php.html.js代码的执行顺序是怎样的(详解) 一.总结 一句话总结:b/s结构 总是先执行服务器端的先.js是客户端脚本 ,是最后执行的.所以肯定是php先执行 ...

  6. 转 web项目中的web.xml元素解析

    转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45)   阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...

  7. 重新学习Spring一--Spring在web项目中的启动过程

    1 Spring 在web项目中的启动过程 Spring简介 Spring 最简单的功能就是创建对象和管理这些对象间的依赖关系,实现高内聚.低耦合.(高内聚:相关性很强的代码组成,既单一责任原则:低耦 ...

  8. JAVA WEB项目中各种路径的获取

    JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报  分类: JAVA开发(41)  1.可以在s ...

  9. Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

    本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...

随机推荐

  1. iOS静默推送(Silent Remote Notifications)

    此功能是iOS7新增加的功能,允许应用收到通知后在后台(background)状态下运行一段代码,可用于从服务器获取内容更新. 普通推送:收到推送后(有文字有声音),点开通知,进入APP后,才执行-- ...

  2. 常用算法Java实现之希尔排序

    希尔排序严格来说是基于插入排序的思想,又被称为缩小增量排序. 具体流程如下: 1.将包含n个元素的数组,分成n/2个数组序列,第一个数据和第n/2+1个数据为一对... 2.对每对数据进行比较和交换, ...

  3. Spring笔记⑥--整合struts2

    Spring如何在web应用里面用 需要额外加入的jar包 Spring-web-4.0.0 Spring-webmvc-4.0.0 Spring的配置文件,没什么不同   需要在web.xml下配置 ...

  4. Leetcode题库——15.三数之和

    @author: ZZQ @software: PyCharm @file: threeSum.py @time: 2018/10/6 19:47 说明:给定一个包含 n 个整数的数组 nums,判断 ...

  5. 【CSAPP笔记】3. 浮点数

    回想起刚学C语言时,我对浮点数的印象大概是"能够表示小数"的数据类型.还死记硬背过例如什么"小数用double存,用%f输出"这类的话.实际上呢,浮点数可以用这 ...

  6. js 刷新当前页面会弹出提示框怎样将这个提示框去掉

    //禁止刷新提示window.onbeforeunload = function() { var n = window.event.screenX - window.screenLeft; var b ...

  7. 【第二周】PSP

    日期 C类别 C内容 S开始时间 E结束时间 I间隔(单位:分钟) T净时间(单位:分钟) 9月8日 编程 结对编程 12:15 13:15 10 50    编程 结对编程  16:35 17:30 ...

  8. 使用testng多线程来测试成交编号重复的问题

    1.首先编写一个测试用的 function CREATE OR REPLACE FUNCTION getDealmainNo_test(dealdate IN varchar2, productcod ...

  9. [转帖]紧急预警:Globelmposter3.0变种来袭,多行业中招

    紧急预警:Globelmposter3.0变种来袭,多行业中招 https://www.csdn.net/article/a/2018-09-04/15959658   CSDN 转载深信服...   ...

  10. TCP&UDP基础

    TCP TCP/IP是一种网络通讯协议,而socket则是TCP/IP网络最为通用的API,即一种应用程序接口,称为套接字.TCP是面向连接的协议,在进行数据收发前必须连接,且在收发时必须保持该连接. ...