根据使用体会并结合书总结了一下这个处理过程,加深理解
我一开始作项目就用的这个框架,用熟了以后感觉挺好用的。,但好像有很多人说她不好用,说webwork好用。我没用过这个。
作用:struts 负责 web层.
要理解Struts-config.xml文件,弄清楚struts处理页面得过程。
下面为客户点击或提交form到服务器端处理,得到响应的过程
如提交×××Action.do后

1)查找servlet
Servlet容器在web..xml文件中寻找url-pattern属性为*.do的<servlet-mapping>元素:

Java代码
  1. <servlet-mapping>
  2. <servlet-name>action</servlet-name>
  3. <url-pattern>*.do</url-pattern>
  4. </servlet-mapping>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

servlet容器根据<servlet-mapping>元素的name属性,在web..xml文件中找到相应的servlet。

Java代码
  1. <servlet>
  2. <servlet-name>action</servlet-name>
  3. <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  4. </servlet>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>

2)找到相应action
servlet容器把请求转发给ActionServlet,这个servlet根据请求路径,在struts的配置文件里按照这个路径找到相应的XXXaction,(其实ActionServlet检索的是ActionMapping对象,在容器启动的时候,初始化Actionservlet会加载struts-config.Xml文件,把配置信息放到相应的配置类实例里,如Action的配置信息就放在ActionMapping对象中,里面是个map,每个action元素可以有多个forward子元素,每个forward子元素配置信息放在一个ActionForward对象里)

3)给form赋值
ActionServlet根据action元素的name属性,创建一个form对象,把客户从页面提交的表单数据传给form对象,一般是request范围内有效(我经常用动态formbean,struts把提交的数据组装成对象放到form里,挺好用的)。

4)表单验证
如果validate属性为true,ActionServlet会调用form对象的validate方法进行表达验证。此方法返回ActionErros对象,里面包含ActionMessage对象,封装了错误消息。如果没有ActionMessage对象表示验证成功,并放在request范围内。
用struts的表单验证也比较好用,需求加两个文件validation.xml,validator-rules.xml。关于这个东东,我在单独写她怎么用

5)action进行真正的业务处理
ActionServlet查找XXXaction实例是否存在,不存在就创建一个实例,然后调用他的excute方法。
在这里可以调用service的一些方法,进行crud操作。

6)返回forward,转到客户端
最后调用mapping.findForward(“forward”)方法,从action元素中查找name为XXXActin的forward子元素,然后返回ActionForward对象。其实就是查找ActionMapping本身的HashMap。
Excute()方法把ActionForward对象返回给ActionServlet,ActionServlet根据这个forward把响应转到具体页面。

到此对一个请求的处理完毕。里面贯穿了struts的运行过程。

strut处理页面请求过程相关推荐

  1. Web 页面请求过程

    1.DHCP 配置主机信息 假设主机最开始没有 IP 地址以及其它信息,那么就需要先使用 DHCP 来获取. 主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口68 的 U ...

  2. http请求过程(访问一个页面,发生了怎样的网络请求?)

    1. 域名解析->域名 ->缓存->根域dns->顶级域dns->本域dns->服务器IP 1.搜索浏览器自身DNS缓存,如果不存在或者过期(>60s)放弃 ...

  3. JSP页面请求响应过程中的编码解码

    该片简要讲述:JSP页面传输过程中,浏览器与服务器的编码解码以及HTTP协议对URL进行的编码解码. 问题如下: //所有的JSP页面的编码都是UTF-8的格式 //test1.jsp <%@ ...

  4. asp css怎么写?_一次完整的asp.netmvc页面优化过程

      一. 项目结构 后台系统开发使用了典型的微软ASP.Net MVC框架,但是版本略旧,.Net Framework4,MVC4,EF5,基本没有采用其它的技术工具,业务逻辑大致都混乱的分布在Con ...

  5. 深入理解WEB请求过程

    随着web2.0时代的到来,互联网的网络架构已经从传统的C/S架构转变成更加方便快捷的B/S架构,B/S架构大大简化了用户使用网络应用的难度,带来了以下两方面的好处: 1.客户端使用统一的浏览器.由于 ...

  6. 浏览器输入网址到浏览器渲染页面的过程

    1) 在客户端浏览器中输入网址URL. 2) 发送到DNS(域名服务器)获得域名对应的WEB服务器的IP地址. 3) 客户端浏览器与WEB服务器建立TCP(传输控制协议)连接. 4) 客户端浏览器向对 ...

  7. 浏览器从输入URL到页面渲染过程 —— 浏览器的进程与线程

    之前我有总结过一篇经典面试题:浏览器从输入URL到页面渲染过程,接下里我将对某些知识点进行更细致的解析. 浏览器从输入URL到页面渲染过程 系列文章: (二):浏览器从输入URL到页面渲染过程 --页 ...

  8. web应用程序servlet的映射名称的规则及请求过程

    首先用MyEclipse创建一个web Project(工程名起为TestServletProject),新建一个Servlet(这里servlet的名字起TestServlet),将请求的servl ...

  9. linux http用户,HTTP完整请求过程

    一.引言 前端不仅要让用户对网页有完美的体验,让用户尽快体验到完美的网页也是很重要的,这就要前端攻城狮掌握一些网络原理相关的知识了.这里就来聊一聊从用户输入 url 到页面加载完成的过程中都发生了什么 ...

  10. Web页面请求的历程(从应用层到链路层)

    Web页面请求的历程 前面从应用层到数据链路层都详细讲过了,现在回顾总结一下一个简单请求背后隐藏的秘密细节.下面假定一名学生bob下载web页面(www.baidu.com)如下图 1.准备:DHCP ...

最新文章

  1. injectionForXcode代码注入步骤
  2. 43 | 发挥人的潜能:探索式测试
  3. python字符串随机排序_python 随机数使用方法,推导以及字符串,双色球小程序实例...
  4. 信息学奥赛一本通(2029:【例4.15】水仙花数)
  5. Script标签解决跨域
  6. JavaScript数据结构——栈(Stack)
  7. C++基础:第四章 数组、vector和字符串
  8. python or 和and的优先级_python中not、and和or的优先级与详细用法介绍
  9. xshell xftp免费版下载
  10. Windows Server 2019 Datacenter x64 安装 SHARP AR-2048N 打印机驱动
  11. 输出大于某个正整数n的最小质数(1除外
  12. Linux != Windows( Linux 不是 Windows)
  13. 2023年全国最新工会考试精选真题及答案33
  14. 写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc)
  15. kali linux基本口令_kali linux 基本命令(第一批)
  16. 推荐几款好用的思维导图软件
  17. C4D 克隆 学习笔记
  18. C语言I博客作业05
  19. C++ 没有找到接受const _Ty类型的左操作数的运算符
  20. 读心术python_有哪些厉害的观人术读心术?

热门文章

  1. led伏安特性实验误差分析_1实验数据的误差分析与处理.doc
  2. 以太坊parity安装
  3. 那些年常见的前端bug (持续更新)
  4. 适合c语言初学者的刷题网站
  5. 2022/11/6周报
  6. 配对碱基链(C语言)
  7. 2019 年第 29 周 DApp 影响力排行榜 | TokenInsight
  8. C#中操作Excel(4)—— 向Excel中插入两种图表以及设置图表格式
  9. python语料库是什么,Python 语料库的搭建
  10. 2021-10-18记录 MediaTek MT7620A 平台对应的类型