Struts回顾 RequestProcessor部分

要谈struts那不得不谈servlet.
 
什么是servlet.servlet是一个接口。下面是servlet中定义的方法。

servlet作为一个顶级的古老的接口,是很多技术的源头。
主要的承担了web服务器处理客户端的请求的功能。
下面让我们站在服务器的角度看servlet。
 
class web服务器{
 
根据请求创建(或者寻找)一个servlet
 
将一些配置文件的初始化内容封装到ServletConfig对象
作为参数调用Servlet.init(ServletConfig)
初始化servlet对象
 
将客户端请求,一些流对象封装到ServletRequest和ServletResponce对象
调用Servlet.service(ServletRequest,ServletResponce)
执行客户请求
 
服务器决定某个时刻调用destory()用于清除servlet使用的资源
 
销毁servlet
 
}
 
这个也就是servelt所谓的生命周期或者说是servlet被调用的过程。
 
下面是servlet2个包主要接口和类(javax.servlet javax.servlet.http)
一般都是继承HttpServlet,重写HttpServlet的doGet,doPost让HttpServlet的
service方法来调用,达到处理请求的目的。
 

下面根据回顾一些struts的基本知识
前面说过谈struts必须要谈servlet原因是:
struts最重要的类ActionServlet继承于HttpServlet。
所以说所谓的struts不过是一个servlet.
 
首先看一个web配置文件谈谈Struts的启动
 
这个配置文件告诉我
所谓ActionServlet就是一个servlet。在这里名字叫作action.
任何以.do结束的URL都去会访问这个叫做action的servlet.
这个叫action的servlet在服务器装载的时候会以最高优先级被初始化。
初始化时struts-config.xml等init-param信息会被封装到一个ServletConfig中
并调用这个servlet的init方法。具体strtus的init方法的内容比较复杂这里省略。
至此Struts启动初始化工作完成。
 
 
现在具体谈谈struts响应一个请求的过程(也就是servlet.service)
 
一般struts入门的时候都知道struts框架3个重要的类。
ActionServlet,Action,ActionForm.
但其实有一个重要的类被忽视了就是RequestProcessor。
它透明的协调了ActionServlet,Aciton和ActionForm.
 
当ActionServlet接受一个请求时ActionServlet会调用超类方法service()
service接着会调用doGet,doPost。
ActionServlet的doGet,doPost都会调用RequestProcessor的process()处理请求。
但是process内部很复杂会调用N个processXXXX(也都是RequestProcessor的方法).
其实这也就是所谓Struts处理请求的过程了。
 
先谈下方法的调用次序
  1. processMultipart()
  2. processPath()
  3. processLocale()
  4. processContent()
  5. processNoCache()
  6. processPreprocess()
  7. processMapping()
  8. processRoles()
  9. processActionForm()
  10. processPopulate()
  11. processValidate()
  12. processForward()
  13. processInclude()
  14. processActionCreate()
  15. processActionPerform()
  16. processActionForward()
今天先谈一些简单的顺序流程7->9->10->11->14->15->16
processMapping 判断是否存在指点定的ActionMap
processActionForm 寻找或创建一个ActionForm,并保存
processPopulate 调用ActionForm.reset然后将表单数据放入ActionForm
processValidate 调用ActionForm.validate验证表单
processActionCreate 创建或寻找一个Action
processActionPerform 执行Action的execute方法
processActionForward 根据Action.execut()的返回对象ActionForword重定向
 
 
这是RequestProcessor类结构
 
struts的启动和响应请求就暂时回顾到这里
下面是手头关于struts的一些日文资料。很粗糙,大体上讲了strut的流程,
但遗漏了很多细节。
 
①リクエストの送信
②リクエストデータの格納
③アクションクラスの起動
④ビジセスロジックの実行
⑤処理結果の返答
⑥処理結果の返答
⑦JSPの呼び出し
⑧レスポンスの返信
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值