欢迎光临
我们一直在努力

对struts一点理解总结-JSP教程,Java基础

建站超值云服务器,限时71元/月

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类中的process(execute)方法。

process中调用的方法都是可以重载的, 如果有需要,可以实现为自己特定的方法。比如,对于locale问题,通常都是在系统最一开始加载的时候读取的,如果用户想在任何时刻都可以切换或者选择自己的locale,我们就可以重载processlocale()方法。然后只需要在配置文件中加入段就可以了

================

action类是实现整个体系的核心部分,它在客户请求、界面表示和业务逻辑之间起到一个桥梁的作用。每一个action都用来处理某一项任务,或者进行一个业务操作。当然了,我们说一项任务不是说action只实现一个业务操作方法,而是集中实现某一个功能单元。比如登录用的logonaction、查找用的searchaction等等。action是在requestprocessor中,由processactionperform方法调用的

非常重要的一点:不要在action中包含任何业务逻辑操作,而是应该调用一个model层的javabean来实现你的业务逻辑操作。在某些情况下,可能包含少许表现逻辑。这样,就可以充分进行代码重用,比如上例中调用的istorefrontservice接口,这个接口在实现时完全可以不用考虑客户端的事情,所以它可以被其它部分或者其它系统所使用。否则的话,action会变得非常难于理解,难于维护,代码也不能重用。

struts-example工程的设计就是一个bug,它把业务逻辑封装到了action类中

===================

在action的execute方法中,返回一个actionforward类。actionforward把配置文件中forward部分的信息包装起来,减少了应用程序和物理资源信息之间的耦合性。通过actionmapping类,可以在配置文件中查找相应的forward信息。例如,对于一个loginaction,它的配置信息可能是这样的:

返回的actionforward就会包含段中的信息。在actionmapping类的findforward方法中,首先会根据查找forward的name查找是否有相应的forward段,如果没有,则在配置文件中的段中进行查找,如果还没有就会抛出一个例外。

=====================

以前,页面上的输入数据都通过http request提交,服务方检索出输入的数据,进行验证,然后将这些数据传递给其它组件进行业务处理。一切基本都需要手工编写代码进行操作,比较麻烦,也使代码变得复杂。

actionform[org.apache.struts.action.actionform]用来收集用户的输入,并且把这些信息传递给action对象,然后,在action对象中,actionform中的数据被取出来传递给业务逻辑层进行处理。

actionform一方面作为一个缓冲区,临时存储用户输入的数据;另一方面,可以把actionform当成是http和action之间的一个防火墙,它可以验证输入数据的正确性,如果验证不通过,这个request是不会发送给action进行处理的。

actionform可以有两种scope,request或者session。request就是只能在rquest到response,之后actionform就不可见了;session可以保存时间长一点。

==================

在actionform的validate方法中返回的是actionerrors对象。这个对象可以将错误信息都封装起来,并且自动把它们显示给用户。

在相应jsp页面上添加,可以自动将actionerrors中的错误信息显示出来。包括,每一个具体的,通过add添加的错误信息,和一个errorheader和一个errorfooter,这些都可以通过配置文件指定,并且可以包含html语法。

==========================

struts提供了四种自定义tag库:

bean:struts-bean taglib包含在访问bean和bean属性时使用的tag,也包含一些消息显示的tag。

html:struts-html taglib包含用来创建struts输入表单的tag,和其它通常用来创建基于html用户界面的tag。

logic:struts-logic taglib包含的tag用来管理根据条件生成输出文本,和其它一些用来控制的信息。

template:struts-template taglib包含的tag用来定义模板机制。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 对struts一点理解总结-JSP教程,Java基础
分享到: 更多 (0)

相关推荐

  • 暂无文章