`
tntxia
  • 浏览: 1507439 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts由入门到精通(第二章)-Struts入门经验

阅读更多

Struts controller基本功能是

1. 截获用户的Http请求

2. 把这个请求映射到一个定义好的业务操作上

3. 获取业务操作结果,提供给客户端

4. 决定下一步应该显示哪一个页面 有几个部分共同组成了Struts Controller,用户的请求发送到ActionServlet中,ActionServlet调用RequestProssor开始处理用户请求的流程,在这个流程中,会查找ApplicationConfig,得到用户请求对应的Action,调用相应的Action来具体执行用户的请求,最后返回ActionForward,转向相应的流程。

================ org.apache.struts.action.ActionServlet Struts Controller中最主要的部分,所有用户请求都会被发送到这里,所有的其它处理也必须从这里经过。ActionServlet是从HttpServlet中继承过来的。 ActionServlet接收到HTTP request的时候,不管是doGet()或者doPost()方法,都会调用process()方法。 protected void process(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { RequestUtils.selectApplication( request, getServletContext() ); getApplicationConfig(request).getProcessor().process( request, response );} 一般情况下,我们不需要自己实现或者修改ActionServlet类,仅仅使用就可以了。某些情况下,我们可以自己扩展ActionServlet类,从ActionServlet继承,实现自己的MyActionServlet类。覆盖其中的一些方法来达到你的特殊处理的需要。ActionServlet继承自javax.servlet.http.HttpServlet,所以在本质上它和一个普通的servlet没有区别,你完全可以把它当做一个servlet来看待,只是在其中完成的功能不同罢了。 ================ RequestProssor具体处理用户的request,作为一个request handler存在。同样,处理request的时候,会执行RequestProcessor类中的processexecute)方法。 process中调用的方法都是可以重载的, 如果有需要,可以实现为自己特定的方法。比如,对于Locale问题,通常都是在系统最一开始加载的时候读取的,如果用户想在任何时刻都可以切换或者选择自己的Locale,我们就可以重载processLocale()方法。然后只需要在配置文件中加入段就可以了 ================ Action类是实现整个体系的核心部分,它在客户请求、界面表示和业务逻辑之间起到一个桥梁的作用。每一个Action都用来处理某一项任务,或者进行一个业务操作。当然了,我们说一项任务不是说Action只实现一个业务操作方法,而是集中实现某一个功能单元。比如登录用的LogonAction、查找用的SearchAction等等。Action是在RequestProcessor中,由processActionPerform方法调用的 非常重要的一点:不要在Action中包含任何业务逻辑操作,而是应该调用一个Model层的JavaBean来实现你的业务逻辑操作。在某些情况下,可能包含少许表现逻辑。这样,就可以充分进行代码重用,比如上例中调用的IStorefrontService接口,这个接口在实现时完全可以不用考虑客户端的事情,所以它可以被其它部分或者其它系统所使用。否则的话,Action会变得非常难于理解,难于维护,代码也不能重用。 struts-example工程的设计就是一个bug,它把业务逻辑封装到了Action类中 =================== Actionexecute方法中,返回一个ActionForward类。ActionForward把配置文件中forward部分的信息包装起来,减少了应用程序和物理资源信息之间的耦合性。通过ActionMapping类,可以在配置文件中查找相应的forward信息。例如,对于一个LoginAction,它的配置信息可能是这样的: 返回的ActionForward就会包含段中的信息。在ActionMapping类的findForward方法中,首先会根据查找forwardname查找是否有相应的forward段,如果没有,则在配置文件中的段中进行查找,如果还没有就会抛出一个例外。 ===================== 以前,页面上的输入数据都通过HTTP request提交,服务方检索出输入的数据,进行验证,然后将这些数据传递给其它组件进行业务处理。一切基本都需要手工编写代码进行操作,比较麻烦,也使代码变得复杂。 ActionForm[org.apache.struts.action.ActionForm]用来收集用户的输入,并且把这些信息传递给Action对象,然后,在Action对象中,ActionForm中的数据被取出来传递给业务逻辑层进行处理。 ActionForm一方面作为一个缓冲区,临时存储用户输入的数据;另一方面,可以把ActionForm当成是HTTPAction之间的一个防火墙,它可以验证输入数据的正确性,如果验证不通过,这个request是不会发送给Action进行处理的。 ActionForm可以有两种Scoperequest或者sessionrequest就是只能在rquestresponse,之后ActionForm就不可见了;session可以保存时间长一点。 ================== ActionFormValidate方法中返回的是ActionErrors对象。这个对象可以将错误信息都封装起来,并且自动把它们显示给用户。 在相应JSP页面上添加,可以自动将ActionErrors中的错误信息显示出来。包括,每一个具体的,通过add添加的错误信息,和一个ErrorHeader和一个ErrorFooter,这些都可以通过配置文件指定,并且可以包含HTML语法。 ========================== Struts提供了四种自定义Tag库: beanstruts-bean taglib包含在访问beanbean属性时使用的tag,也包含一些消息显示的tag htmlstruts-html taglib包含用来创建struts输入表单的tag,和其它通常用来创建基于HTML用户界面的tag logicstruts-logic taglib包含的tag用来管理根据条件生成输出文本,和其它一些用来控制的信息。 templatestruts-template taglib包含的tag用来定义模板机制。

分享到:
评论

相关推荐

    Eclipse从入门到精通(第二版)----源码

    本资源"**Eclipse从入门到精通(第二版)----源码**"提供了书籍《Eclipse从入门到精通(第二版)》的配套源代码,涵盖了从基础使用到高级开发的多个关键章节。这份源码旨在帮助读者更深入地理解Eclipse的工作原理,...

    J2EE电子商务系统从入门到精通--基于Struts和Hibernate技术实现.

    第二章重点介绍了Struts框架的基础知识及其在J2EE项目中的应用。 - **2.1 MVC模式概述** - **2.1.1 MVC设计模式**:这部分阐述了MVC(Model-View-Controller)设计模式的概念,它如何帮助分离业务逻辑和用户界面。...

    JAVA WEB从入门到精通 随书源码

    本资源包含"JAVA WEB从入门到精通"这本书随书附带的第2到第10章的源代码,这些章节通常涵盖了Web开发的基础到进阶内容。 1. **基础概念**:Java Web开发首先涉及Servlet和JSP(JavaServer Pages),它们是构建动态...

    JAVA WEB从入门到精通 随书源码 J2EE

    JAVA WEB从入门到精通随书光盘源码11到20章,其余章节在另一个链接,太大一次性传不上来,适合J2EE、WEB开发参考,源码详细。由浅入深,分五篇介绍了Struts、Hibernate和Spring框架。第一篇为J2EE开发的基础知识,...

    j2ee电子商务系统开发从入门到精通

    ### J2EE电子商务系统开发从入门到精通 #### 一、J2EE概论 - **双层(C/S)软件架构设计**:早期的客户端/服务器架构将应用程序分为两个部分,一部分安装在客户端计算机上,另一部分安装在服务器端。这种架构下,...

    Eclipse Web开发从入门到精通(实例版)

    《Eclipse Web开发从入门到精通(实例版)...通过以上知识点的梳理,《Eclipse Web开发从入门到精通(实例版)》无疑是一部全面而实用的指南,无论是初学者还是有一定经验的开发者,都能从中获得丰富的知识和实践经验。

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

    共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、...

    Struts2.1权威指南——基于WebWork核心的MVC开发.pdf

    - **第2章Struts2下的HelloWorld**:通过一个简单的示例展示如何搭建Struts2环境并运行第一个程序。 - **第3章Struts2基础**:涵盖Struts2的核心组件、配置文件、请求处理流程等基础知识。 - **第4章深入Struts2**:...

Global site tag (gtag.js) - Google Analytics