根据使用体会并结合书总结了一下这个处理过程,加深理解
我一开始作项目就用的这个框架,用熟了以后感觉挺好用的。,但好像有很多人说她不好用,说webwork好用。我没用过这个。
作用:struts 负责 web层.
要理解Struts-config.xml文件,弄清楚struts处理页面得过程。
下面为客户点击或提交form到服务器端处理,得到响应的过程
如提交×××Action.do后
1)查找servlet
Servlet容器在web..xml文件中寻找url-pattern属性为*.do的<servlet-mapping>元素:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
servlet容器根据<servlet-mapping>元素的name属性,在web..xml文件中找到相应的servlet。
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
2)找到相应action
servlet容器把请求转发给ActionServlet,这个servlet根据请求路径,在struts的配置文件里按照这个路径找到相应的XXXaction,(其实ActionServlet检索的是ActionMapping对象,在容器启动的时候,初始化Actionservlet会加载struts-config.Xml文件,把配置信息放到相应的配置类实例里,如Action的配置信息就放在ActionMapping对象中,里面是个map,每个action元素可以有多个forward子元素,每个forward子元素配置信息放在一个ActionForward对象里)
3)给form赋值
ActionServlet根据action元素的name属性,创建一个form对象,把客户从页面提交的表单数据传给form对象,一般是request范围内有效(我经常用动态formbean,struts把提交的数据组装成对象放到form里,挺好用的)。
4)表单验证
如果validate属性为true,ActionServlet会调用form对象的validate方法进行表达验证。此方法返回ActionErros对象,里面包含ActionMessage对象,封装了错误消息。如果没有ActionMessage对象表示验证成功,并放在request范围内。
用struts的表单验证也比较好用,需求加两个文件validation.xml,validator-rules.xml。关于这个东东,我在单独写她怎么用
5)action进行真正的业务处理
ActionServlet查找XXXaction实例是否存在,不存在就创建一个实例,然后调用他的excute方法。
在这里可以调用service的一些方法,进行crud操作。
6)返回forward,转到客户端
最后调用mapping.findForward(“forward”)方法,从action元素中查找name为XXXActin的forward子元素,然后返回ActionForward对象。其实就是查找ActionMapping本身的HashMap。
Excute()方法把ActionForward对象返回给ActionServlet,ActionServlet根据这个forward把响应转到具体页面。
到此对一个请求的处理完毕。里面贯穿了struts的运行过程。
分享到:
相关推荐
在Struts 1.2.x中,请求处理流程是整个框架的核心部分,它涉及到了从用户发起请求到服务器响应的完整过程。下面将详细解释这个流程。 1. **请求开始**: 当用户通过浏览器向服务器发送HTTP请求时,请求通常会指向一...
然而,将SQL存储过程与Struts框架结合使用,是Java Web开发中常见的场景,尤其是在处理数据库交互时。下面,我们将深入探讨这一主题,包括Struts框架的基础知识、如何在Struts中调用存储过程,以及存储过程在Struts...
3. **Web.xml中的FORWARD配置**:在web.xml中,`<error-page>`标签可以用来配置错误处理页面,例如404错误。如果`<jsp:forward/>`指向的页面不存在,服务器会抛出404错误,此时需要确保web.xml中有正确的错误处理...
3. **Action处理逻辑**:创建一个Struts2 Action类,该类负责处理用户请求并准备数据。Action中可能包括获取数据、处理业务逻辑等操作,最终将数据模型(通常是Java对象)封装到值栈中。 4. **渲染静态页面**:当...
9. **异常处理**:Struts2允许自定义全局和局部的异常处理策略,对于注册过程中的异常情况,比如数据库操作失败,可以统一处理并返回相应的错误页面。 10. **国际化支持**:Struts2支持多语言环境,通过资源文件...
9. **异常处理(Exception Handling)**:通过配置全局异常处理,Struts2可以捕获并统一处理Action执行过程中的异常,提供一致的错误反馈。 10. **国际化(Internationalization, i18n)**:Struts2支持多语言,...
在这个过程中,JSP页面主要负责展现和交互,Struts控制器处理请求,执行验证逻辑,而Ajax则作为通信桥梁,使这一切在用户无感知的情况下完成。 总结来说,"ajax无页面刷新验证、struts结构+ajax+验证码jsp页面"这个...
在使用Struts2的过程中,可能会遇到一个常见的问题,即应用试图跳转到一个不存在的页面,导致用户看到404错误。404错误通常表示服务器无法找到请求的资源,这可能是由于URL配置错误、控制器映射问题或者资源实际不...
当一个请求被发送到服务器并由Struts框架处理时,首先会执行相应的`Action`类。如果在这个过程中发生异常,Struts框架会捕获这个异常,并根据配置文件中的规则来决定如何处理。 1. **Action类中的异常处理**:在`...
在Struts2中,请求的处理流程涉及多个组件和步骤,确保了请求的正确路由、业务逻辑的执行以及响应的生成。以下是Struts2请求处理的详细分析: 1. **初始化请求**:客户端发起一个HTTP请求到Servlet容器,如Tomcat或...
通过上述步骤,我们清晰地了解了Struts框架如何处理用户的请求并生成动态页面的过程。这种结构化的处理方式不仅提高了代码的可维护性和可扩展性,也使得开发者能够更加专注于业务逻辑的实现,而非繁琐的基础架构代码...
Struts1.x是一个非常经典的Java Web开发框架,它在处理用户请求时,通过Action类来转发请求并返回相应的视图。然而,在实际开发过程中,难免会遇到各种异常情况,这时候就需要一套有效的异常处理机制来捕获和处理...
3. ActionForm:ActionForm是Struts1中的表单对象,用于封装来自JSP页面的用户输入,它在请求处理过程中起着桥梁的作用,将数据从视图传递到模型。 4. JSP与Taglib:Struts1提供了丰富的标签库(Taglib),如html...
在处理用户输入时,Struts2框架需要将请求参数转换为对应的Java对象属性,这个过程就涉及到类型转换。然而,当用户输入的数据格式不正确时,就会出现类型转换错误,例如在尝试将字符串转换为日期时。本篇文章将深入...
在这个过程中,Spring可以帮助管理Action的生命周期,比如事务控制、异常处理等。 为了实现多页面注册,我们需要为每个步骤创建一个单独的Action,并在Action之间传递用户输入的数据。例如,第一个Action可能接收并...
- **Struts1**: 在Struts1中,所有的业务逻辑和请求处理都通过单个Action类来完成。这意味着所有相关的请求都会被转发到同一个Action对象上进行处理。 - **Struts2**: Struts2中的Action更像是工厂模式下的产品,...
在此过程中,Action可以从服务层获取数据或处理用户输入。 4. Action执行完毕后,返回一个结果(通常是字符串),这个结果与一个JSP页面或另一个Action关联。 5. 根据返回的结果,Struts2框架将控制权交给相应的JSP...
1. **Action类与Result**:Struts 2中的Action类替代了Struts 1的Form Bean,负责处理用户请求并返回结果。Result则定义了Action执行后的跳转逻辑,可以是页面、重定向或任何其他响应。 2. **拦截器(Interceptor)...
8. **异常处理(Exception Handling)**:Struts1提供了全局异常处理机制,当Action执行过程中抛出异常时,可以统一捕获并显示错误页面。 学习和分析这个小项目,可以帮助我们深入理解Struts1的工作原理,以及如何...