文档章节

深入浅出了解Struts的处理流程(有图有真相)

白志华
 白志华
发布于 2015/10/18 10:57
字数 443
阅读 8
收藏 0

      Struts框架在java web开发中很常用。最近我也在逐步摸索和学习。今天就来说说Struts的处理流程。


      先来一幅Struts工作原理图:


      从上面这幅图,我们可以清楚的看到Struts的实现原理:

  • 客户端的每个请求,都会首先到达ActionServlet,截取url;

  • ActionServlet会根据截取的url,在struts-config.xml的action-mapping中,找到对应action的配置信息,然后读取到ActionMapping中;

  • ActionServlet拿到ActionMapping中的name属性值,再从form-beans中找到对应的ActionForm,反射出实例来。将页面表单内容通过自动转换器转换后,放入到这个ActionForm中,传递给action处理类;

  • Action处理类拿到ActionForm,即可获取表单数据。通过ActionMapping则可以实现页面的转发。


      上面就是Struts工作原理的基本流程。通过断点调试struts,详细解释一下运行的流程:


      通过查看代码得知,

  • ActionServlet是通过process()方法来处理全部逻辑的。

  • action配置信息并不是全部加载,而是找与截取的url对应的action配置信息,加载到ActionMapping中,也就是一个action对应一个ActionMapping。

  • ActionForm也并不是每次都反射,而是会先判断一下request或者session中是否已经创建,如果没有,则创建一次,并保存在request或者session中。

  • Action处理类同样是先检查是否已经创建过,然后在操作。而且struts1中的Action创建过程存在线程安全问题。

  • ActionServlet根据Action返回的ActionForward,调用processForwardConfig,进行页面导航。


      

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/xiaoxian8023/article/details/11516043

共有 人打赏支持
白志华
粉丝 32
博文 265
码字总数 57524
作品 0
长沙
程序员
私信 提问
用Struts建立MVC应用的介绍【转】

Model 1 和Model 2简介 我们在开发Web应用时经常提到的一个概念是Model 1/Model 2,那么到底它是什么意思呢?其实它是对采用JSP技术构成Web应用的不同模型的描述。下面对这个概念做一个简单的...

磊神Ray
2011/09/05
0
0
struts1.* 异常处理机制

几个重要类的说明 ActionServlet struts的核心类,用于初始化struts配置文件,处理发送到action的请求; ModuleConfig struts配置文件信息加载的接口,ModuleConfigImpl是接口的默认实现,可...

STG0825
2013/08/29
0
0
Struts2核心工作原理解析

阐述struts2的执行流程。 Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。 核心控制器FilterDispatcher是Struts 2框架的...

蚂蚁也疯狂
2015/04/14
0
0
基于struts1.框架的异常处理方案

首先感谢“郡主”对我的支持,她帮忙完善了跳转地址重定向问题。 1. 目标——什么异常需要我们处理 通常来说,在业务流程中已经将大部分异常进行处理,因为大部分异常是继承java.lang.Excep...

STG0825
2013/09/06
0
0
struts2源码分析之配置文件加载顺序

本次源码分析的目标: 弄清struts2加载各配置文件的顺序,得到此配置文件加载顺序,则源码分析任务结束。 引言 问题的引出是由于前些天在oschina上看到的一篇帖子,http://www.oschina.net/...

算法与编程之美
2013/04/09
0
6

没有更多内容

加载失败,请刷新页面

加载更多

docker部署springboot项目

安装docker 菜鸟教程 springboot项目 maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001......

yimingkeji
今天
10
0
ios多个target

1.建立3个target,分别为heroone,heroone test,heroone dev;分别为正式环境,test环境,dev环境 2.注意取消掉autocreate以防止名字不对,分别以Duplicate的方式建立另外两个scheme 3.创建...

HeroHY
今天
5
0
php获取客户端IP

php获取客户端IP 首先先阅读关于IP真实性安全的文章:如何正確的取得使用者 IP? 「任何從客戶端取得的資料都是不可信任的!」 HTTP_CLIENT_IP头是有的,但未成标准,不一定服务器都实现。 ...

DrChenXX
昨天
0
0
. The valid characters are defined in RFC 7230 and RFC 问题

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tom...

west_coast
昨天
1
0
刷leetcode第704题-二分查找

今天双十一买的算法书到货了,路上刷到有人说的这个题,借(chao)鉴(xi)一下别人的思路,这个是C++标准库里面的经典方法,思路精巧,优雅好品味 int search(int* nums, int numsSize, in...

锟斤拷烫烫烫
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部