`
syoumei
  • 浏览: 48765 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

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の呼び出し
⑧レスポンスの返信
分享到:
评论

相关推荐

    struts1整合spring 通过代理RequestProcessor实现

    这个Bean通常是一个实现了RequestProcessor接口的类,它会委托真实RequestProcessor执行大部分工作,同时添加额外的功能,如Spring的依赖注入。 2. **Struts1配置**:接着,需要在Struts的配置文件(struts-config....

    整合Spring与Struts的几种方法

    2. **使用DelegatingRequestProcessor替换RequestProcessor**:在`struts-config.xml`中,将Struts的RequestProcessor替换为Spring的`DelegatingRequestProcessor`,并在Spring配置文件中定义与Struts `...

    DisapatchAction测试和RequestProcessor控制器类

    另一方面,`RequestProcessor`是Spring MVC框架的一部分,它是Spring处理HTTP请求的第一道防线。当服务器接收到请求后,`RequestProcessor`会解析请求并决定是否交给Spring的DispatcherServlet处理。`...

    struts1和struts2中文教程

    4. **拦截器**:虽然Struts1没有正式的拦截器概念,但通过RequestProcessor可以实现类似的功能。 5. **标签库**:Struts1提供了丰富的自定义标签库,如logic、bean、html等,简化了JSP页面的编写。 **Struts2详解:...

    struts1.3.8开发包

    - **struts-core-1.3.8.jar**:这是Struts的核心库,包含了Action、ActionForm、ActionMapping、RequestProcessor等关键类。这些类用于处理HTTP请求,调度业务逻辑,并将结果返回给用户界面。 - **struts-taglib-...

    Spring中集成Struts的三种方式

    //第一种方式:使用 Spring 的 ActionSupport 类整合 Structs ...//第二种方式:使用 Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor //第三种方式:将 Struts Action 管理委托给 Spring 框架

    struts1 api 帮助文档

    Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构中的Controller部分。Struts1 API是开发者在使用该框架时的重要参考文档,提供了详细的类、接口和...

    struts1.2 解决中文乱码

    - Struts 1.2 框架默认使用 ISO-8859-1 编码来解析请求参数,这与大部分中文网页使用的 GBK 或 UTF-8 编码不一致。 3. **配置不当:** - struts-config.xml 文件中没有正确配置编码转换相关的过滤器或处理器。 -...

    struts1.2资源整合

    源码分析可以帮助你掌握Action、Form Bean、ActionForward、ActionMapping等关键类的内部实现,以及RequestProcessor、Dispatcher等组件的工作流程。 其次,`struts-1.2.4-lib`是一个包含Struts1.2运行所需库文件的...

    struts1.x和struts2.x区别

    Struts1.x的配置相对静态,每个Action的请求处理器(RequestProcessor)配置在web.xml中,不易修改。而Struts2.x通过拦截器栈(Interceptor Stack)实现了动态配置,可以根据需要为不同Action配置不同的拦截器,大大...

    struts1的api

    以上知识点只是Struts1 API的一部分,实际使用中还包括ActionSupport、RequestProcessor、ServletActionContext等重要组件。理解并熟练运用这些知识点,能帮助开发者构建稳定、高效的Java Web应用。在实践中,还需要...

    Eclipse开发Struts1.2

    - 可以通过自定义`RequestProcessor`类来扩展Struts的功能,`processorClass`属性指定自定义的处理器类。 7. **DynaActionForm**: - DynaActionForm是Struts的一种动态表单,允许在运行时定义表单属性,无需预先...

    myEclipse创建Struts Project

    1. **Struts架构**:Struts框架主要由Action、ActionForm、ActionForward、ActionMapping、RequestProcessor、配置文件(struts-config.xml)等组件构成。 2. **Model-View-Controller模式**:MVC模式是一种设计模式...

    Struts2+技术内幕——深入解析Struts2架构设计与实现原理

    在源码分析部分,你将了解到Struts2如何解析HTTP请求,如何通过ActionMapper定位Action,ActionProxy是如何创建并执行Action的,以及RequestProcessor的角色。通过阅读源码,开发者能更深入地理解Struts2的工作原理...

    struts-1.3.8 java doc

    5. **Tiles**: Struts的一个扩展,用于创建可重用的页面布局,它允许将一个大的页面分解为多个小的、可复用的部分。 6. **Struts-config.xml**: 配置文件,定义了应用的结构,包括Action、Form Bean、ActionMapping...

    Spring整合Struts

    1. 覆盖Struts的默认RequestProcessor,使用Spring的DelegatingRequestProcessor。 2. 在的type属性中使用DelegatingActionProxy类。 这两种方法都能让你在action-context.xml文件中管理Action及其依赖关系。通过在...

    struts解决中文乱码问题

    `RequestProcessor`是Struts框架中的核心组件,它负责处理ActionServlet接收到的所有请求,并将请求分解为多个任务。通过自定义`RequestProcessor`,我们可以在请求处理的早期阶段就解决编码问题,使得所有后续操作...

    Struts1.2登录实例

    6. **RequestProcessor**:这是Struts框架的一部分,负责处理请求并进行预处理。 接下来,我们按步骤解析登录实例的实现过程: 1. **创建Login.jsp**:这是一个包含用户名和密码输入框的HTML表单,提交到Struts的...

    struts类图

    6. **RequestProcessor**:每个模块(Module)都有一个RequestProcessor,它处理来自ActionServlet的请求,负责调用ActionForm的validate()方法进行数据校验,并根据结果决定是否调用Action的execute()方法。...

    struts-1.2.9-all-src

    首先,让我们了解一下Struts的核心概念和组成部分: 1. **ActionServlet**:这是Struts框架的核心控制器,它负责处理HTTP请求,并根据配置信息调用相应的Action来执行业务逻辑。 2. **Action**:Action是处理业务...

Global site tag (gtag.js) - Google Analytics