要谈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处理请求的过程了。
先谈下方法的调用次序
- processMultipart()
- processPath()
- processLocale()
- processContent()
- processNoCache()
- processPreprocess()
- processMapping()
- processRoles()
- processActionForm()
- processPopulate()
- processValidate()
- processForward()
- processInclude()
- processActionCreate()
- processActionPerform()
- 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の呼び出し
⑧レスポンスの返信
分享到:
相关推荐
这个Bean通常是一个实现了RequestProcessor接口的类,它会委托真实RequestProcessor执行大部分工作,同时添加额外的功能,如Spring的依赖注入。 2. **Struts1配置**:接着,需要在Struts的配置文件(struts-config....
2. **使用DelegatingRequestProcessor替换RequestProcessor**:在`struts-config.xml`中,将Struts的RequestProcessor替换为Spring的`DelegatingRequestProcessor`,并在Spring配置文件中定义与Struts `...
另一方面,`RequestProcessor`是Spring MVC框架的一部分,它是Spring处理HTTP请求的第一道防线。当服务器接收到请求后,`RequestProcessor`会解析请求并决定是否交给Spring的DispatcherServlet处理。`...
4. **拦截器**:虽然Struts1没有正式的拦截器概念,但通过RequestProcessor可以实现类似的功能。 5. **标签库**:Struts1提供了丰富的自定义标签库,如logic、bean、html等,简化了JSP页面的编写。 **Struts2详解:...
- **struts-core-1.3.8.jar**:这是Struts的核心库,包含了Action、ActionForm、ActionMapping、RequestProcessor等关键类。这些类用于处理HTTP请求,调度业务逻辑,并将结果返回给用户界面。 - **struts-taglib-...
//第一种方式:使用 Spring 的 ActionSupport 类整合 Structs ...//第二种方式:使用 Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor //第三种方式:将 Struts Action 管理委托给 Spring 框架
Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构中的Controller部分。Struts1 API是开发者在使用该框架时的重要参考文档,提供了详细的类、接口和...
- Struts 1.2 框架默认使用 ISO-8859-1 编码来解析请求参数,这与大部分中文网页使用的 GBK 或 UTF-8 编码不一致。 3. **配置不当:** - struts-config.xml 文件中没有正确配置编码转换相关的过滤器或处理器。 -...
源码分析可以帮助你掌握Action、Form Bean、ActionForward、ActionMapping等关键类的内部实现,以及RequestProcessor、Dispatcher等组件的工作流程。 其次,`struts-1.2.4-lib`是一个包含Struts1.2运行所需库文件的...
Struts1.x的配置相对静态,每个Action的请求处理器(RequestProcessor)配置在web.xml中,不易修改。而Struts2.x通过拦截器栈(Interceptor Stack)实现了动态配置,可以根据需要为不同Action配置不同的拦截器,大大...
以上知识点只是Struts1 API的一部分,实际使用中还包括ActionSupport、RequestProcessor、ServletActionContext等重要组件。理解并熟练运用这些知识点,能帮助开发者构建稳定、高效的Java Web应用。在实践中,还需要...
- 可以通过自定义`RequestProcessor`类来扩展Struts的功能,`processorClass`属性指定自定义的处理器类。 7. **DynaActionForm**: - DynaActionForm是Struts的一种动态表单,允许在运行时定义表单属性,无需预先...
1. **Struts架构**:Struts框架主要由Action、ActionForm、ActionForward、ActionMapping、RequestProcessor、配置文件(struts-config.xml)等组件构成。 2. **Model-View-Controller模式**:MVC模式是一种设计模式...
在源码分析部分,你将了解到Struts2如何解析HTTP请求,如何通过ActionMapper定位Action,ActionProxy是如何创建并执行Action的,以及RequestProcessor的角色。通过阅读源码,开发者能更深入地理解Struts2的工作原理...
5. **Tiles**: Struts的一个扩展,用于创建可重用的页面布局,它允许将一个大的页面分解为多个小的、可复用的部分。 6. **Struts-config.xml**: 配置文件,定义了应用的结构,包括Action、Form Bean、ActionMapping...
1. 覆盖Struts的默认RequestProcessor,使用Spring的DelegatingRequestProcessor。 2. 在的type属性中使用DelegatingActionProxy类。 这两种方法都能让你在action-context.xml文件中管理Action及其依赖关系。通过在...
`RequestProcessor`是Struts框架中的核心组件,它负责处理ActionServlet接收到的所有请求,并将请求分解为多个任务。通过自定义`RequestProcessor`,我们可以在请求处理的早期阶段就解决编码问题,使得所有后续操作...
6. **RequestProcessor**:这是Struts框架的一部分,负责处理请求并进行预处理。 接下来,我们按步骤解析登录实例的实现过程: 1. **创建Login.jsp**:这是一个包含用户名和密码输入框的HTML表单,提交到Struts的...
6. **RequestProcessor**:每个模块(Module)都有一个RequestProcessor,它处理来自ActionServlet的请求,负责调用ActionForm的validate()方法进行数据校验,并根据结果决定是否调用Action的execute()方法。...
首先,让我们了解一下Struts的核心概念和组成部分: 1. **ActionServlet**:这是Struts框架的核心控制器,它负责处理HTTP请求,并根据配置信息调用相应的Action来执行业务逻辑。 2. **Action**:Action是处理业务...