Struts整合

上传人:天*** 文档编号:295227366 上传时间:2022-05-20 格式:DOC 页数:5 大小:44KB
返回 下载 相关 举报
Struts整合_第1页
第1页 / 共5页
Struts整合_第2页
第2页 / 共5页
Struts整合_第3页
第3页 / 共5页
Struts整合_第4页
第4页 / 共5页
Struts整合_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《Struts整合》由会员分享,可在线阅读,更多相关《Struts整合(5页珍藏版)》请在金锄头文库上搜索。

1、Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架。 Struts2不只是Struts1下一个版本,它是一个完全重写的Struts架构。实现原理:(1) 客户端(Client)向Action发用一个请求(Request)(2) Container通过web.xml映射请求,并获得控制器(Controller)的名字(3) 容器(Container)调用控制器(StrutsPrepareAndExecuteFilter或FilterDispatcher)。在Struts2.1以前调用FilterDispatcher,Struts2.1以后调用StrutsPrepareAndExe

2、cuteFilter(4) 控制器(Controller)通过ActionMapper获得Action的信息(5) 控制器(Controller)调用ActionProxy(6) ActionProxy读取struts.xml文件获取action和interceptor stack的信息。(7) ActionProxy把request请求传递给ActionInvocation(8) ActionInvocation依次调用action和interceptor(9) 根据action的配置信息,产生result(10)Result信息返回给ActionInvocation(11)产生一个Http

3、ServletResponse响应(12)产生的响应行为发送给客服端。工作流程:1、客户端浏览器发出HTTP请求.2、根据web.xml配置,该请求被FilterDispatcher接收3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面6、返回HTTP响应到客户端浏览器优点(为什么使用Struts2): (1) 实现了MVC模式,层次结构清晰,使程序员只需关注业务

4、逻辑的实现。 (2) 丰富的标签库,大大提高了开发的效率。 (3) Struts2提供丰富的拦截器实现。 (4) 通过配置文件,就可以掌握整个系统各个部分之间的关系。 (5) 异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理。(6) Struts2的可扩展性高。Struts2的核心jar包中由一个struts-default.xml文件,在该文件中设置了一些默认的bean,resultType类型,默认拦截器栈等,所有这些默认设置,用户都可以利用配置文件更改,可以更改为自己开发的bean,resulttype等。因此用户开发了插件的话只要很简单的配置就可以很容易的和Stru

5、ts2框架融合,这实现了框架对插件的可插拔的特性。 (7) 面向切面编程的思想在Strut2中也有了很好的体现。最重要的体现就是拦截器的使用,拦截器就是一个一个的小功能单位,用户可以将这些拦截器合并成一个大的拦截器,这个合成的拦截器就像单独的拦截器一样,只要将它配置到一个、Action中就可以。1如何实现?1. 加载jar包2. 加入Struts配置文件3.Web.xml配置代码 org.springframework.web.context.ContextLoaderListener OpenSessionInViewFilterorg.springframework.orm.hiberna

6、te3.support.OpenSessionInViewFilterOpenSessionInViewFilter*.action struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* 1. 有什么功能通过过滤拦截所有的网页请求,使用Struts2内置的类进行处理,将处理结果根据Struts.xml配置文件进行调整,最后跳转到指定的类或jsp中主要的请求包括*.action和其他路径,*.action的处理方式就是 会根据*这个字符串在Struts.xml的action配

7、置中寻找匹配想同的字符串进入方法,根据方法返回的字符串进入action标签中的result标签进入到相应的action或者jsp中2. struts.xml文件结构详解分为头文件,标签,子标签,子标签解决插入中文乱码问题标签:标签:name属性:要过滤的名称Class属性:标明的去哪个类执行Method属性:去类的哪个方法执行举例:要完成的功能:网页拦截到的请求是showdept.action的时候进入指定action类的指定方法实现方法:name就要写成对应的showdept class写成com.wuban.action.deptaction,或者已经配置好的可以代表这个类的属性metho

8、d写成show如果要写活的话就是你输入showdept=show方法,deletedept=delete方法,Struts2提供了活用的代码name写成*dept,那么这个action标签拦截所有任何的带有dept.action的请求如果将method写成”1”,会根据dept前边的内容,寻找对应的方法方法执行之后会返回一个字符串交给这个action标签下的result子标签处理result标签有name和type两个属性Name:如果方法返回的字符串对应name,跳转到result标明的属性这个jsp中Type:如果想要让网页在Struts2中跳转到其他action中,要额外增加一个type

9、属性值为redirectAction,此时result的值为要跳转的action标签name值Struts的action类:位于三层框架的action层,用于代替servlet实现应用逻辑代码,action类需要继承com.opensymphony.xwork2.ActionSupport这个类,上文的方法均存在于这个类如果在这个类定义成员变量,然后添加get() set()方法,这里的变量值会根据Struts2的跳转带到jsp中,可以使用jstl标签得到值,反之jsp中的标签带有value的,name可以设置为action类中变量得名字,经过Struts2的跳转,会传回该类,name为实体对

10、象.属性亦有效.Struts1和Struts2的区别和对比:1,在Action实现类方面:Struts1要求Action类继承一个抽象基类;Struts1的一个具体问题是使用抽象类编程而不是接口。Struts2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制服务成为可能。Struts2 提供一个ActionSupport基类 去实现常用的接口。即使Action接口不是必须实现的,只有一个包含execute方法的POJO类都可以用作Struts2的Action。2,线程模式方面:Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实

11、例来处理所有的请求。单例策略限制了Struts1 Action能做的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的;Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。3,Servlet依赖方面:Struts1 Action依赖于Servlet API,因为Struts1 Action的execute方法中有HttpServletRequest和HttpServletResponse方法。Struts2 Action 不再依赖于ServletAPI,从而允许Action脱离Web容器运行,从而降低了测试Action的难度。当然,如果Action

12、 需要直接访问HttpServletRequest和HttpServletResponse参数,Struts2 Action仍然可以访问它们。但是,大部分时候,Action都无需直接访问HttpServletRequest和HttpServletResponse,从而给开发者更多灵活的选择。4,可测试方面:测试Struts1 Action的一个主要问题是execute方法依赖于Servlet于ServletAPI, 这使得Action 仍然的测试要依赖于Web容器。为了脱离Web容器测试Struts1 的Action, 必须借助于第三方扩展:Struts TestCase,该扩展下包含了系列的

13、Mock对象,从而脱离Web容器测试Struts1的Action类。Struts2Action可以通过初始化,设置属性,调用方法来测试。5,封装请求参数方面:Struts1 使用ActionForm对象封装用户的请求参数,所有的ActionForm 必须继承一个基类:ActionForm。 普通的JavaBean不能用作ActionForm因此,开发者必须创建大量的ActionForm类封装用户请求参数。虽然Struts1 提供了动态ActionForm 来简化ActionForm 的开发,但依然需要在配置文件中定义ActionForm; Struts2 直接使用Action 属性来封装用户请求属性,避免了开发者需要大量开发ActionForm类的繁琐,实际上,这些属性还可以是包含子属性的Rich对象类型。如果开发者依然怀念Struts1 ActionForm 的模式Struts 2 提供了ModelDriven 模式, 可以让开发者使用单独的Model 对象来封装用户请求参

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 计算机应用/办公自动化

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号