struts1的几个核心组件是值得我们注意的:
1 、ActionServlet(核心控制器)。
2、RequestProcessor类(处理异常的核心组件)。
3、ActionForm(接收页面中传过的数据)。
4、Action(是控制器,主要是从ActionForm中接收页面传进来的数据,然后进行逻辑
处理)。
5、ActionForward(页面跳转,跳转到jsp组件)。
6、ActionMapping(配置每个Action所对应的映射关系)。
Struts1是一个经典的Java Web框架,它遵循Model-View-Controller (MVC)设计模式,为开发者提供了一种组织和管理应用程序结构的方式。下面我们将详细解释Struts1的工作流程和核心组件。
Struts1的体系结构由以下几个关键部分组成:
1. **ActionServlet**:这是核心控制器,作为Servlet在`web.xml`中配置,负责接收HTTP请求,并根据`struts-config.xml`中的配置来调度请求。当Web服务器启动时,ActionServlet实例化并加载配置信息。
2. **RequestProcessor**:处理异常的核心组件,它负责处理请求,并根据请求类型进行进一步的处理。
3. **ActionForm**:用于接收和封装从页面传递的数据。当用户填写表单并提交时,这些数据会被封装到ActionForm对象中。
4. **Action**:控制器,主要职责是从ActionForm中获取数据,执行业务逻辑,然后可能调用模型层(如DAO或Service)进行数据处理。
5. **ActionForward**:定义页面跳转,当Action执行完毕后,它指示ActionServlet将请求转发到哪个JSP页面。
6. **ActionMapping**:配置每个Action与URL的映射关系,定义Action如何响应特定的HTTP请求。
Struts1的工作流程可以分为以下步骤:
1. **请求接收**:客户端发送HTTP请求,ActionServlet捕获这个请求。
2. **配置解析**:ActionServlet初始化`struts-config.xml`中的配置信息,并将相关对象加载到内存。
3. **映射查找**:ActionServlet根据请求寻找匹配的ActionMapping。如果没有找到,返回500错误。
4. **ActionForm处理**:如果找到匹配的ActionMapping,检查对应的ActionForm实例。如果存在,清空其数据;如果不存在,创建新的ActionForm实例,并填充用户提交的数据。
5. **表单验证**:根据配置,如果需要验证,调用ActionForm的validate()方法。如果验证失败,返回错误信息;否则,表示验证成功,继续下一步。
6. **Action执行**:ActionServlet创建Action实例(如果尚未创建),并调用其execute()方法。这个方法是业务逻辑的主要执行点。
7. **ActionForward决定**:execute()方法返回一个ActionForward对象,指示ActionServlet将请求转发到哪个JSP页面。
8. **页面渲染**:ActionServlet将请求转发给ActionForward指定的JSP,JSP生成动态网页,并响应给客户端。
通过这种方式,Struts1实现了从用户界面到后台业务逻辑的分离,使得代码更易于维护和扩展。然而,随着技术的发展,Struts1逐渐被Struts2或其他现代框架如Spring MVC所取代,因为它们提供了更先进的特性和更好的性能。尽管如此,理解Struts1的工作原理对于理解MVC模式和Web开发的基础仍然是非常有价值的。