strut处理页面请求过程
根据使用体会并结合书总结了一下这个处理过程,加深理解
我一开始作项目就用的这个框架,用熟了以后感觉挺好用的。,但好像有很多人说她不好用,说webwork好用。我没用过这个。
作用:struts 负责 web层.
要理解Struts-config.xml文件,弄清楚struts处理页面得过程。
下面为客户点击或提交form到服务器端处理,得到响应的过程
如提交×××Action.do后
1)查找servlet
Servlet容器在web..xml文件中寻找url-pattern属性为*.do的<servlet-mapping>元素:
- <servlet-mapping>
- <servlet-name>action</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
servlet容器根据<servlet-mapping>元素的name属性,在web..xml文件中找到相应的servlet。
- <servlet>
- <servlet-name>action</servlet-name>
- <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
- </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处理页面请求过程相关推荐
- Web 页面请求过程
1.DHCP 配置主机信息 假设主机最开始没有 IP 地址以及其它信息,那么就需要先使用 DHCP 来获取. 主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口68 的 U ...
- http请求过程(访问一个页面,发生了怎样的网络请求?)
1. 域名解析->域名 ->缓存->根域dns->顶级域dns->本域dns->服务器IP 1.搜索浏览器自身DNS缓存,如果不存在或者过期(>60s)放弃 ...
- JSP页面请求响应过程中的编码解码
该片简要讲述:JSP页面传输过程中,浏览器与服务器的编码解码以及HTTP协议对URL进行的编码解码. 问题如下: //所有的JSP页面的编码都是UTF-8的格式 //test1.jsp <%@ ...
- asp css怎么写?_一次完整的asp.netmvc页面优化过程
一. 项目结构 后台系统开发使用了典型的微软ASP.Net MVC框架,但是版本略旧,.Net Framework4,MVC4,EF5,基本没有采用其它的技术工具,业务逻辑大致都混乱的分布在Con ...
- 深入理解WEB请求过程
随着web2.0时代的到来,互联网的网络架构已经从传统的C/S架构转变成更加方便快捷的B/S架构,B/S架构大大简化了用户使用网络应用的难度,带来了以下两方面的好处: 1.客户端使用统一的浏览器.由于 ...
- 浏览器输入网址到浏览器渲染页面的过程
1) 在客户端浏览器中输入网址URL. 2) 发送到DNS(域名服务器)获得域名对应的WEB服务器的IP地址. 3) 客户端浏览器与WEB服务器建立TCP(传输控制协议)连接. 4) 客户端浏览器向对 ...
- 浏览器从输入URL到页面渲染过程 —— 浏览器的进程与线程
之前我有总结过一篇经典面试题:浏览器从输入URL到页面渲染过程,接下里我将对某些知识点进行更细致的解析. 浏览器从输入URL到页面渲染过程 系列文章: (二):浏览器从输入URL到页面渲染过程 --页 ...
- web应用程序servlet的映射名称的规则及请求过程
首先用MyEclipse创建一个web Project(工程名起为TestServletProject),新建一个Servlet(这里servlet的名字起TestServlet),将请求的servl ...
- linux http用户,HTTP完整请求过程
一.引言 前端不仅要让用户对网页有完美的体验,让用户尽快体验到完美的网页也是很重要的,这就要前端攻城狮掌握一些网络原理相关的知识了.这里就来聊一聊从用户输入 url 到页面加载完成的过程中都发生了什么 ...
- Web页面请求的历程(从应用层到链路层)
Web页面请求的历程 前面从应用层到数据链路层都详细讲过了,现在回顾总结一下一个简单请求背后隐藏的秘密细节.下面假定一名学生bob下载web页面(www.baidu.com)如下图 1.准备:DHCP ...
最新文章
- injectionForXcode代码注入步骤
- 43 | 发挥人的潜能:探索式测试
- python字符串随机排序_python 随机数使用方法,推导以及字符串,双色球小程序实例...
- 信息学奥赛一本通(2029:【例4.15】水仙花数)
- Script标签解决跨域
- JavaScript数据结构——栈(Stack)
- C++基础:第四章 数组、vector和字符串
- python or 和and的优先级_python中not、and和or的优先级与详细用法介绍
- xshell xftp免费版下载
- Windows Server 2019 Datacenter x64 安装 SHARP AR-2048N 打印机驱动
- 输出大于某个正整数n的最小质数(1除外
- Linux != Windows( Linux 不是 Windows)
- 2023年全国最新工会考试精选真题及答案33
- 写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc)
- kali linux基本口令_kali linux 基本命令(第一批)
- 推荐几款好用的思维导图软件
- C4D 克隆 学习笔记
- C语言I博客作业05
- C++ 没有找到接受const _Ty类型的左操作数的运算符
- 读心术python_有哪些厉害的观人术读心术?