`
java虫
  • 浏览: 532947 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts的处理页面请求的过程

阅读更多
根据使用体会并结合书总结了一下这个处理过程,加深理解
我一开始作项目就用的这个框架,用熟了以后感觉挺好用的。,但好像有很多人说她不好用,说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原理、开发及项目实施

    } } &lt;br/&gt;每一个FormBean 都必须继承ActionForm类,FormBean是对页面请求的封装。即把HTTP request 封装在一个对象中,需要说明的一点就是多个HTTP request可以共用一个FormBean,便于维护和重用。...

    Struts Spring Hibernate面试题汇总

    控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。 然后根据处理的结果调用相应的视图来显示处理的结果。 MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行...

    JAVA-SSH面试题

    控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。 + 然后根据处理的结果调用相应的视图来显示处理的结果。 MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行...

    学生成绩管理系统(SSH+MYSQL).zip

    Struts负责处理用户请求和页面跳转,Spring提供业务逻辑的实现和管理,Hibernate则负责数据的持久化操作。通过SSH框架的整合,学生成绩管理系统能够实现业务逻辑与数据访问的分离,简化开发过程,提高系统的可维护性...

    基于AJAX技术实现Struts校验框架

    它可以使用服务器端校验来配置应用程序并且使用在校验过程(在请求处理期间激活)中生成的错误消息;而且它也可以通过在请求页面上生成的JavaScript来实现客户端校验。 AJAX是一种能异步地调用服务器并返回XML文档...

    java面试题附带答案

    "Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和...

    基于EXT SSI的简单树实现

    在struts内部,这个请求交给了getDesc方法来处理,getDesc方法返回来一个XML串。 &lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;nodes&gt;咨询" /&gt;建议" /&gt;投诉" /&gt;预约" /&gt;报障" /&gt;集团自查工单修改" /&gt;明天" /&gt;业务支撑...

    ssm框架思维导图.rar

    本文档压缩了SSM三大框架的学习...页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

    JAVA程序开发大全---上半部分

    本书系统全面地介绍了Java中的各项主流技术,以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、...

    java面试题

    答:在Struts2里面是将每次页面的请求进行处理,然后将请求需要输出的数据转发到需要做数据显示的页面。Struts2只是起到一个数据接收和转接的功能,就是Controller控制器,而传来数据的页面叫view显示层,Struts2将...

    网站开发实习报告(1).doc

    实习报告 实习日期:2011-7——2011-8 实习内容:二手房发布网站 ... 之后做页面,使用Dreamwear先做大体的框架,然后在使用JS做页面上接受数据,传递 请求的操作。 最后,测试有数据库的情况下网站的允许情况。 回

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare And Execute Filter过滤器 8.8.2 struts.xml文件配置出错 8.9 精彩回顾 第9章 庖丁解牛 ——揭密...

    火炬博客系统7

    Struts框架中Controller角色是由一个中心Servlet类和众多Action类合作扮演的,中心Servlet类为控制器提供中心控制点来初步处理所有的用户请求,并选择一个Action类处理具体业务逻辑。 Struts负责管理用户的请求...

    火炬博客系统6

    Struts框架中Controller角色是由一个中心Servlet类和众多Action类合作扮演的,中心Servlet类为控制器提供中心控制点来初步处理所有的用户请求,并选择一个Action类处理具体业务逻辑。 Struts负责管理用户的请求...

    ssh(structs,spring,hibernate)框架中的上传下载

    WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。  本文后面的章节将从数据持久层->业务层->Web层的...

    火炬博客系统5

    Struts框架中Controller角色是由一个中心Servlet类和众多Action类合作扮演的,中心Servlet类为控制器提供中心控制点来初步处理所有的用户请求,并选择一个Action类处理具体业务逻辑。 Struts负责管理用户的请求...

    EasyJWeb服务调度和自定义邮件引擎技术的CRM系统实战开发

    EasyJWeb框架是基于Velocity模板技术的,所有的页面都是静态HTML页面,省略了JSP的编译过程,大大提高了系统的访问速度。EasyJWeb对于中小型的软件项目来说是十分优秀的,内置的Action可以轻易的捕获前台的请求,而...

    计算机科学系毕业设计论文范文

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。因为Struts 2和Struts 1有着太大的变化,...

    基于J2EE框架的个人博客系统项目毕业设计论...

    可以在管理页面上添加博文的分类,可以上传图片和游览自己的相册,在上传过程中可以将一张图片定义为自己的签名,在个人管理页面中注册用户还可以修改自己的个人信息。博文管理,友情链接管理及博文分类管理,用例图...

Global site tag (gtag.js) - Google Analytics