`
yinwufeng
  • 浏览: 287039 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts的页面请求过程

阅读更多

Struts的处理页面请求的过程

今天下午再看我们公司的框架源码,突然想和struts对比一下,特地写此博客,先把struts的页面请求过程温习一下子。

作用:struts 负责 web层.
要理解Struts-config.xml文件,弄清楚struts处理页面的过程。
下面为客户点击或提交form到服务器端处理,得到响应的过程
如提交×××Action.do后
1)查找servlet
Servlet容器在web..xml文件中寻找url-pattern属性为*.do的<servlet-mapping>元素:
Java代码 复制代码
  1. <servlet-mapping>      
  2.     <servlet-name>action</servlet-name>      
  3. <url-pattern>*.do</url-pattern>      
  4. </servlet-mapping>   
<servlet-mapping>   
    <servlet-name>action</servlet-name>   
<url-pattern>*.do</url-pattern>   
</servlet-mapping> 

servlet容器根据<servlet-mapping>元素的name属性,在web..xml文件中找到相应的servlet。
Java代码 复制代码
  1. <servlet>      
  2.     <servlet-name>action</servlet-name>      
  3. <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>      
  4. </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的运行过程。
分享到:
评论

相关推荐

    struts2 存储过程

    在视图层(通常为JSP页面),使用Struts2标签库显示存储过程执行的结果。例如,使用`s:property`标签显示输出参数的值。 8. **配置Struts2**: 在struts.xml文件中,配置Action类的拦截器栈和结果类型。确保...

    struts存储过程

    标题与描述均提到了“Struts存储过程”,但根据所提供的部分内容来看,这实际上是一段用于分页查询的SQL存储过程代码,并非直接关联Struts框架。然而,将SQL存储过程与Struts框架结合使用,是Java Web开发中常见的...

    struts2 跳转至404 页面的解决方案

    在使用Struts2的过程中,可能会遇到一个常见的问题,即应用试图跳转到一个不存在的页面,导致用户看到404错误。404错误通常表示服务器无法找到请求的资源,这可能是由于URL配置错误、控制器映射问题或者资源实际不...

    Struts-_1.2.x_请求处理流程图

    在Struts 1.2.x中,请求处理流程是整个框架的核心部分,它涉及到了从用户发起请求到服务器响应的完整过程。下面将详细解释这个流程。 1. **请求开始**: 当用户通过浏览器向服务器发送HTTP请求时,请求通常会指向一...

    Struts2静态页面生成

    Struts2结合FreeMarker模板引擎可以方便地生成静态页面,提高网站的响应速度和用户体验。 FreeMarker是一个强大的、轻量级的模板语言,用于生成动态内容。它与Java紧密集成,允许开发者用模板来分离业务逻辑和表现...

    Struts2请求处理流程及源码分析[整理].pdf

    在Struts2中,请求的处理流程涉及多个组件和步骤,确保了请求的正确路由、业务逻辑的执行以及响应的生成。以下是Struts2请求处理的详细分析: 1. **初始化请求**:客户端发起一个HTTP请求到Servlet容器,如Tomcat或...

    ajax无页面刷新验证、struts结构+ajax+验证码jsp页面

    在这个过程中,JSP页面主要负责展现和交互,Struts控制器处理请求,执行验证逻辑,而Ajax则作为通信桥梁,使这一切在用户无感知的情况下完成。 总结来说,"ajax无页面刷新验证、struts结构+ajax+验证码jsp页面"这个...

    Struts2中实现页面的跳转

    在Struts2框架中,页面跳转是常见的需求,它涉及到前端控制器的设计模式以及请求处理流程。`&lt;jsp:forward/&gt;`标签在JavaServer Pages (JSP)中用于将一个请求转发到另一个资源,比如从一个JSP页面跳转到另一个JSP页面...

    struts2 学习过程中的收获

    在学习Struts2的过程中,你将会接触到许多重要的知识点,这些知识点对于初学者来说尤其有价值。Struts2是一个强大的MVC(Model-View-Controller)框架,它简化了Java Web应用程序的开发,提供了丰富的功能和良好的可...

    Struts框架响应客户请求的工作流程

    通过上述步骤,我们清晰地了解了Struts框架如何处理用户的请求并生成动态页面的过程。这种结构化的处理方式不仅提高了代码的可维护性和可扩展性,也使得开发者能够更加专注于业务逻辑的实现,而非繁琐的基础架构代码...

    struts2完全捕获404错误的方法

    现在,当用户请求不存在的页面时,Struts2会调用我们的`Custom404Interceptor`,并在那里执行我们定义的404错误处理逻辑。此外,如果请求的Action不存在,Struts2将会尝试执行默认Action并显示预定义的404错误页面。...

    struts1写的登陆页面,非常适合初学者

    3. ActionForm:ActionForm是Struts1中的表单对象,用于封装来自JSP页面的用户输入,它在请求处理过程中起着桥梁的作用,将数据从视图传递到模型。 4. JSP与Taglib:Struts1提供了丰富的标签库(Taglib),如html...

    struts1和struts2的区别

    - **Struts1**: 使用标准的JSP页面作为视图层,页面上的数据显示主要依赖于JSP标签。 - **Struts2**: 引入了ValueStack的概念,这使得开发者可以在视图层直接访问Action中的数据。Struts2还支持多种视图技术,如...

    struts2.0整合Struts 1

    5. **Tiles视图技术**:虽然不是Struts 2的核心部分,但可以通过Struts 2的集成来实现页面布局和组件重用,提高开发效率。 6. **国际化(i18n)与主题(Theme)**:Struts 2提供了内置的支持,方便开发者实现多语言...

    struts-2.5.14.1 基本框架 基于注解 返回页面 返回json数据

    Struts2允许开发者使用注解来替代传统的XML配置文件,简化应用的配置过程。例如,我们可以使用`@Action`注解标记一个方法为处理特定的HTTP请求。这个注解可以定义请求映射、结果类型和其他相关属性。`@Results`注解...

    struts1小项目

    这个过程涉及到了请求的转发和重定向,是Struts1的核心流程之一。 项目中的"杆塔电力系统"可能是一个模拟电力设施管理的应用,比如用于记录、查询和管理电力设施的位置、状态等信息。在这个系统中,我们可能会看到...

    使用Spring整合Struts编写多页面用户注册模块

    总的来说,整合Spring和Struts编写多页面用户注册模块涉及到的主要知识点有:Spring的DI和AOP,Struts的MVC架构,Action和Result的配置,以及JSP或模板引擎的使用。通过这样的整合,我们可以构建出一个灵活、可扩展...

    Struts书籍 Struts_In_Action_中文版

    深入探讨Struts在处理请求过程中的一些关键环节,例如ActionForm对象的使用、Action类的实现等。 **2.5.3 Struts是富有效率的吗?** 讨论Struts框架在性能方面的表现,包括其高效性背后的设计原理和技术实现。 **...

    struts的九个必备常用包

    6. **struts-bean**:这个包包含了一些处理JavaBean的标签,如`&lt;bean:define&gt;`、`&lt;bean:message&gt;`,它们简化了在JSP页面上操作和显示Bean属性的过程。 7. **struts-el**:支持表达式语言(EL,Expression Language...

Global site tag (gtag.js) - Google Analytics