还是从这个图开始讲解:

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. 分布式日志收集收集系统:Flume(转)

    Flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统.支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力.Fl ...

  2. sprint2 (第八天)

    今天课多,没做什么功能.这个sprint定的目标比较高,要实现的功能较多,可能完成不了目标值.因为GitHub下载和上传很慢,经常失败,所以这几天都没有更新GitHub,功能明天早点实现然后上传到Gi ...

  3. 20135231 JAVA实验报告三:敏捷开发与XP实践

    ---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...

  4. python learning1.py

    # 廖雪峰的官方网站 python教材 1~4章 # 格式控制符语法 print('Hello, %s' % 'world') print('hello, %s, you have %d dollar ...

  5. 团队作业之四则运算GUI展示

    一.项目Coding.net原码仓库地址:https://git.coding.net/caoying/Teamwork.git 队员: 卢琪:2016011986 曹滢:2016012102 二.P ...

  6. 深入理解Java类加载器(1)

    类加载器概述: java类的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制 ...

  7. ASP.NET MVC 1.0 参考源码索引

    http://www.projky.com/asp.netmvc/1.0/System/Web/Mvc/AcceptVerbsAttribute.cs.htmlhttp://www.projky.co ...

  8. C++编译与链接(0)-.h与.cpp中的定义与声明

    C++中有的东西需要放在可以在.h文件中定义,有的东西则必须放在.cpp文件中定义,有的东西在不同的cpp文件中的名字可以一样,而有的则不能一样 那么究竟哪些东西可在头文件中定义,声明,哪些东西又必须 ...

  9. Android封装TitleBar基本适用所有常规开发

    Android封装TitleBar基本适用所有常规开发 github地址:https://github.com/SiberiaDante/SiberiaDanteLib/blob/master/sib ...

  10. Beta阶段——第二篇 Scrum 冲刺博客

    i. 提供当天站立式会议照片一张: ii. 每个人的工作 (有work item 的ID) (1) 昨天已完成的工作: 账单收支分明,剩余舍费关联成功 (2) 今天计划完成的工作: 账单删除功能,排序 ...