看看process方法做了什么?

1、            调用processMultipart( )方法。如果HttpServletRequest是POST方式,且请求为multipart/form-data ,Struts框架将请求对象包装成处理multipart 请求专用的请求对象,否则,只是简单地返回原有的请求对象。一
般来说,除非需要处理文件上传,否则不用关心 multipart 功能的具体细节。
2、            调用processPath( ) 方法,该方法用来从请求URL中获应用取路径部分。获取到的信息在稍后的步骤中用于
选择合适的Struts Action调用。
3、            调用processLocale( ) 方法处理一些国际化的事务。
4、           调用方法来决定processContent( )请求的content type编码(encoding)方式。content type可以配合在配置文件中,也可以在jsp文件中配置,默认为 text/html。
5、           根据noCache属性的设置调用processNoCache( ) 方法,如果noCache设置为true。则添加合适的响应头到响应对象中,使得页面保留在浏览器的Cache中。这些响应头包含Pragma, Cache-Control, 和Expires 。

6、            调用processPreprocess( )方法,这个方法在这儿设置一个钩子,方法的默认实现只是简单地返回true,这样
给了自定义处理器的开发者提供了一个合适的地方让你添加自己的业务逻辑。因为这个方法在调用 Action之前
被调用,如果你重载这个方法,只需要返回false,则Action就不会被调用。例如,你可以重载这个方法用户检
查客户 session,如果不通过就返回false。

7、            调用processMapping( )方法,根据客户请求信息中的 path 信息来决定是否返回ActionMapping对象实例。如果不能够找到path 的映射,则客户将会得到一个error 响应。
8、            通过调用processRoles( )方法检查是否为Action配置了安全角色。如果配置了角色要求,则请求对象的
isUserInRole( )方法被调用,如果用户属于这些角色,则客户会得到显示一个 error 响应。
9、            调用processActionForm( )方法检查是否存在为ActionMapping配置的ActionForm 。如果存在,则在有效区域内查找是否存在该ActionForm的实例,存在,则复用,不存在,则创建一个实例。然后将实例保存与再配置
文件中配置好的有效区域(request,session,application)内, 并用Action元素的name属性作为该实例的关键字。 
10、       调用processPopulate( )方法,如果存来存在为ActionMapping配置的ActionForm,则封装请求对象中的数据到ActionForm中,在进行封装之前,先调用 ActionForm的reset( )方法进行属性值的默认化。
11、         调用processValidate( )方法。如果 ActionForm被配置好,并且 action元素的属性validate被设
置为true ,则进一步调用validate( )方法进行规则校验。如果validate( )方法校验失败,就会保存一
个ActionErrors 对象到请求区域中, 请求将会自动重定向到action映射的input属性所指定的页面中。 如
果校验通过或在action 映射中没有配置ActionForm,则继续处理请求。

12、         根据action 映射是否配置了forward属性或 include属性来决定下一步操作。如果配置了任意一个,则相应
地调用RequestDispatcher对象的forward( )方法或include( )方法,调用后,对客户请求的处理结束。否则,
继续处理请求。
13、         调用processActionCreate( )方法创建或获取一个Action对象实例处理请求。processActionCreate( )方法会在缓存中查找是否存在已经创建好的Action实例,如果存在,则复用,否则,则重新创建并将其村于缓存中。
14、       调用processActionPerform( )方法,该方法用于在一个try/catch 代码块中调用action 实例的execute( )方法,这样确保action 的execute( )方法一旦发生执行异常能够被RequestProcessor捕获。
15、       调用processActionForward( )方法,并传入action的execute( )方法所返回的ActionForward对象实例,方法通过检查ActionForward对象实例,决定采用redirect或forword方式进行重定向。究竟采用 redirect还是
forword取决于forward元素的redirect属性值。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值