首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>JAVA专区>STRUTS>五步解释Struts处理请求的过程
五步解释Struts处理请求的过程
来源: 发布时间:2007-11-22 发布人: 浏览: 人次   字体: [ ]  

Struts的核心控制组件是:ActionServlet,它是org.apache.struts.action.ActionServlet类型的Servlet。
   他继承javax.Servlet.Http.HttpServlet,并实现了init(),doGet()/doPost(),destroy()等Servlet生命周期所用到的方法。还添加了一个process(),它本身不复杂,但它会调用其他的复杂方法。
    和spring框架有一样,web容器在启动的时候,先是初始化web.xml中配置的ActionServlet,ActionServlet再加载配置文件。(配置文件写明了不同的请求的不同的ActionMapping)。
    其它接受客户端请求的作出响应的过程如下:
1.    查找servlet并找到相应的action
1、Servlet容器在web..xml文件中寻找url-pattern属性为*.do的<servlet-mapping>元素。
2、Servlet容器根据<servlet-mapping>元素的name属性,在web..xml文件中找到相应的servlet。
2.    查找相应的action
1、Servlet根据浏览器是post还是get请求调用doPost()、doGet()方法,在其中调用ActionServlet的process()方法。
2、Process()获取RequestProcessor对象,调用RequestProcessor对象的process()方法。
3、 RequestProcessor对象的Process()方法,读取struts-config.xml,在其中查找<action>子元素,查找的条件是:用户请求的URI与action元素的path属性值一样,找到后确定name属性,根据name找到<form-bean>元素,再根据action元素的name匹配值找到相应的ActionForm bean。
3.    Actionform重设,赋值,验证
       1、创建新的ActionFormc对象。
       2、保存ActionForm对象。
              保存为用户请求(request)或会话(session)的属性。Actionform的作用域由ActionMapping配置中的scope属性值来决定。名称为配置文件中的ActionMapping中的Attributte决定。
       2、调用ActinForm的reset()方法初始化ActionForm。
              调用reset方法的目的是为了对ActionForm中的值进行复位操作。通常情况要覆盖reset()方法,把ActionForm的值恢复为默认值。
       3、调用ActionForm bean的setter方法为AtionForm赋值。
       4、验证。
如果validate属性为true,ActionServlet会调用form对象的validate方法进行表达验证。此方法返回ActionErros对象,里面包含ActionMessage对象,封装了错误消息。通过标记库的errors标记可以将这里返回的错误信息显示在页面上。Validate()没有返回任何异常,那么就会继承进行下面的处理。
用struts的Validator验证组件比较好用,需求加两个文件validation.xml,validator-rules.xml。这个组件的使用我会在下一次说明。
4.   action进行真正的业务处理
ActionServlet查找这个XXaction实例是否存在,不存在就创建一个实例,然后调用他的excute方法进行业务处理。
5.            返回forward,转到客户端
最后调用mapping.findForward(“abc”)方法,从ActionMapping元素中查找name为abc的forward元素,然后返回这个forward元素对应的页面。其实就是查找ActionMapping本身的HashMap。
 
到此对一个请求的处理完毕。里面贯穿了struts的运行过程。

相 关 文 章   发布商链接
·struts框架中使用tiles组件代码实例
·Struts2入门实例
·structs2输入校验实例代码
·struts2文件上传实例
·struts2 redirect-action传递参数问...
·小解Struts2验证不能生成validateFor...
·Struts2中文乱码问题解决的几种方法...
·Struts+hibernate实现投票系统代码实...
·Struts常见的11个错误汇总,附说明
·Struts中文的乱码问题两种经典解决方...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·Struts中实现多人合作多模块...
·如何在struts中应用国际化
·Struts中文的乱码问题两种经...
·Struts常见的11个错误汇总,附
·Struts+hibernate实现投票系...
·Struts2中文乱码问题解决的几
·小解Struts2验证不能生成vali...
·struts2 redirect-action传递
·struts2文件上传实例
·structs2输入校验实例代码
·Struts2入门实例
·struts框架中使用tiles组件代
·Tomcat+MySql+Struts中文问题
热 门 文 章
·Struts+hibernate实现投票系...
·struts2 redirect-action传递...
·Struts2中文乱码问题解决的几...
·struts2文件上传实例
·Struts2入门实例
·struts框架中使用tiles组件代...
·structs2输入校验实例代码
·Struts中文的乱码问题两种经...
·小解Struts2验证不能生成vali...
·Tomcat+MySql+Struts中文问题...
·Struts2 系统架构图中文版图...
·实例详解struts2常用的拦截器
·小解struts2的action使用
·Struts常见的11个错误汇总,附...
·Struts中实现多人合作多模块...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .