传智播客struts2课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《传智播客struts2课件.ppt》由会员分享,可在线阅读,更多相关《传智播客struts2课件.ppt(194页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育Struts2讲师:冯威讲师:冯威高级软件人才实作培训专家高级软件人才实作培训专家!Struts2 概述Struts2是一个用来开发MVC应用程序的框架.它提供了提供了Web应用程应用程序开发过程中的一些常见问题的解决方案序开发过程中的一些常见问题的解决方案:对页面导航页面导航活动进行管理对来自用户的输入数据进行合法性验证输入数据进行合法性验证统一的布局统一的布局可扩展性可扩展性国际化和本地化国际化和本地化支持Ajax表单的重复提交表单的重复提交高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育Struts2的优
2、点和和struts1struts1一样,一样,Struts2 Struts2也都是属于也都是属于MVCMVC框架。不过有一点大家需要注意的是:虽然框架。不过有一点大家需要注意的是:虽然Struts2Struts2和和struts1struts1在名字上差别不大,但在名字上差别不大,但Struts2Struts2编码模式与编码模式与struts1struts1几乎可以说是不一样的。那么几乎可以说是不一样的。那么既然有了既然有了struts1struts1,为何还要推出,为何还要推出struts2struts2。主要是因为。主要是因为struts2struts2有以下优点:有以下优点:1 在软件设
3、计上Struts2没有像struts1那样跟Servlet API和struts API有着紧密的耦合,Struts2的应用可以不依赖于Servlet API和struts API。Struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计。public class OrderListAction extends Action public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)thro
4、ws Exception 2 Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。3 Strut2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。在Struts1中,如果我们要实现同样的功能,就必须向Struts1的底层实现BeanUtil注册类型转换器才行。4 Struts2提供支持多种表现层技术,如:JSP、freeMarker、Velocity等5 Struts2的输入校验可以对指定方法进行校验,解决了Struts1长久之痛。6 提供了全局范围、包范围和Action范围的国际化资源文件管理实现高级软件人才实作培训专家高级软件人才实作培训专家!从 S
5、truts1 升级到 Struts2lStruts2从本质上讲已不是从不是从Struts1扩展而来扩展而来的,说它是一个换换了品牌标签的了品牌标签的WebWork更合适l从Struts1升级到Struts2:Struts1里使用ActionServlet作为控制器;Struts2使用了一个过滤使用了一个过滤器作为控制器器作为控制器Struts1中每个HTML表单都对应一个ActionForm实例.Struts2中中,HTML表单将被直接映射到一个表单将被直接映射到一个POJO.Struts1的验证逻辑编写在ActionForm中;Struts2中的验证逻辑中的验证逻辑编写在编写在Action中
6、中.Struts1中,Action类必须继承类;Struts2中任何一个中任何一个POJO都可都可以是一个以是一个Action类类.Struts2在页面里使用在页面里使用OGNL来显示各种对象模型来显示各种对象模型,可以不再使用EL和JSTL高级软件人才实作培训专家高级软件人才实作培训专家!Struts2入门入门高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育搭建Struts2开发环境的步骤搭建Struts2环境时,我们一般需要做以下几个步骤的工作:1创建javaweb工程2找到开发Struts2应用需要使用到的jar文件.3创建jsp文件.4创建action文件5编写Str
7、uts2的配置文件6在web.xml中加入Struts2MVC框架启动配置高级软件人才实作培训专家高级软件人才实作培训专家!1 创建javaweb工程创建struts2test工程高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育2 开发Struts2需要的jar文件到http:/struts.apache.org/download.cgi#struts2014下载,目前最新版为。下载完后解压文件,开发struts2应用需要依赖的jar文件在解压目录的lib文件夹下。不同的应用需要的JAR包是不同的。下面给出了开发Struts2程序最少需要的JAR。:Struts2框架的核心类
8、库:XWork类库,Struts2在其上构建:对象图导航语言(ObjectGraphNavigationLanguage),struts2框架通过其读写对象的属性f:Struts2的UI标签的模板使用FreeMarker编写commons-logging-1.1.x.jar:ASF出品的日志包,Struts2框架使用这个日志包来支持Log4J和JDK1.4+的日志记录。文件上传组件,版本后需要加入此文件commons-io-1.3.2.jar,上传文件依赖的jar包高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育3 创建jsp文件定义test.jsp文件增加如下连接:hell
9、oworld高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育4 创建action文件importcom.opensymphony.xwork2.Action;publicclassHelloWorldActionimplementsActionpublicStringexecute()throwsExceptionSystem.out.println(helloWorld);/转到成功页面returnsuccess;注:struts2中action要实现action的接口高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育5 编写Struts2的配置文件Stru
10、ts2默认的配置文件为struts.xml,该文件需要存放在WEB-INF/classes下,也就是当前工程的src下,该文件的配置模版如下:配置package元素Struts2 把各种 Action 分门别类地组织成不同的包.可以把包想象为一个模块.一个典型的 struts.xml 文件可以有一个或多个包每个 package 元素都必须有一个 name 属性namespace 属性是可选的,如果它没有给出,则以“/”为默认值.若 namespace 有一个非默认值,则要想调用这个包里的Action,就必须把这个属性所定义的命名空间添加到有关的 URI 字符串里package 元素通常要对 s
11、truts-default.xml 文件里定义的 struts-default 包进行扩展.这么做了以后,包里的所有动作就可以使用在 struts-default.xml 文件里的结果类型和拦截器了.高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育5 编写Struts2的配置文件配置action元素action 元素嵌套在 package 元素内部,它表示一个 Struts请求.每个 action 都必须有一个 name 属性,该属性和用户请求 servletPath 之间存在着一一对应关系action 元素的 class 属性是可选的.如果没有配置 class 属性,Str
12、uts 将把 com.opensymphony.xwork2.ActionSupport 作为其默认值.如果配置了 class 属性,还可以使用 method 属性配置该类的一个动作方法.method 属性的默认值为 execute 高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育5 编写Struts2的配置文件配置result元素result 元素:的一个子元素,它告诉 struts 在完成动作后把控制权转交到哪里.result 元素(的name 属性)对应着 Action 方法的返回值.因为动作方法在不同情况下可能返回不同的值,所以同一个 action 元素可能会有多个
13、result 元素result 元素的 name 属性建立 和 Action 方法返回值之间的映射关系。name 属性的默认值为“success”result 元素的 type 属性负责指定结果类型.type 属性的值必须是在包含当前包或者是当前包的父包里注册过的结果类型.type 属性的默认值为 dispatcher高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育5 编写Struts2的配置文件在struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Act
14、ion放在同一个包下。配置包时必须指定name属性,如果其他包要继承该包,必须通过该属性进行引用,注意:name名称是唯一。包的namespace属性用于定义该包的命名空间。该属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为“/”通常每个包都应该继承struts-default包,struts-default包是由struts内置的,它定义了struts2内部的众多拦截器和Result类型。而Struts2很多核心的功能都是通过这些内置的拦截器实现。如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。当包继承了struts-default包才能使
15、用struts2为我们提供的这些功能。struts-default包是在文件中的struts-default.xml中定义。struts-default.xml也是Struts2默认配置文件。Struts2每次都会自动加载 struts-default.xml文件。包还可以通过abstract=“true”定义为抽象包,抽象包中不能包含action。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育6 Struts2的启动配置在struts1.x中,struts框架是通过Servlet启动的.在struts2中,struts框架是通过Filter启动的。在web.xml中的配置
16、如下:StrutsPrepareAndExecuteFilterorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter!-自从以后,下面的FilterDispatcher已经标注为过时org.apache.struts2.dispatcher.FilterDispatcher-StrutsPrepareAndExecuteFilter/*在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。注意:struts2读取到st
17、ruts.xml的内容后,是将内容封装进javabean对象然后存放在内存中,以后用户的每次请求处理将使用内存中的数据,而不是每次请求都读取struts.xml文件高级软件人才实作培训专家高级软件人才实作培训专家!6 Struts2的启动配置(底层代码)以上方法在类中高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育Struts2的处理流程StrutsPrepareAndExecuteFilterInterceptorActionResultJsp/html用户请求Struts2内置的一些拦截器或用户自定义拦截器用户编写的action类,类似struts1中的Action类似s
18、truts1中的forward响应高级软件人才实作培训专家高级软件人才实作培训专家!拦截器概述(struts-default.xml)高级软件人才实作培训专家高级软件人才实作培训专家!拦截器概述(演示过滤器和拦截器的执行顺序)使用如下三个拦截器演示struts的执行流程(断点演示)默认的是defaultStack在栈中的顺序如下在栈中的顺序如下:高级软件人才实作培训专家高级软件人才实作培训专家!Struts基本配置基本配置高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育访问HelloWorld应用的路径的设置在struts1中,通过节点的path属性指定访问该action的U
19、RL路径。在struts2中,访问struts2中action的URL路径由两部份组成:包的命名空间包的命名空间+action的名称的名称例如:访问本例子HelloWorldAction的URL路径为:/primer/helloWorldAction.action(注意:完整路径为:http:/localhost:端口/内容路径/primer/helloWorldAction.action)。另外我们也可以加上.action后缀访问此Action。/success.jsp高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育Action名称的搜索顺序1获得请求路径的URI,例如ur
20、l是:http:/server/struts2/path1/path2/path3/test.action2首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤3;3寻找namespace为/path1/path2的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤4;4寻找namespace为/path1的package,如果存在这个package,则在
21、这个package中寻找名字为test的action,如果仍然不存在这个package,就去默认的namaspace的package下面去找名字为test的action(默认的命名空间为空字符串“/”),如果还是找不到,页面提示找不到action。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育Action配置中的各项默认值问题问题:如果没有为如果没有为action指定指定class,默认是,默认是执行执行ActionSupport中的中的execute方法方法由由struts-default.xml文件文件决定决定/success.jsp/success.jsp1如果没有为
22、action指定class,默认是ActionSupport。2如果没有为action指定method,默认执行action中的execute()方法。ActionSupport的execute方法里面就一句话returnsuccess;3如果没有指定result的name属性,默认值为success。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育Action配置中的各项默认值问题问题:如果请求的路径查找不到如果请求的路径查找不到action的情况下的情况下,程序运行会抛出异常程序运行会抛出异常,可以通过配置当找不到可以通过配置当找不到action的情况下的情况下,会执行默
23、认的会执行默认的action/success.jsp/success.jsp高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育ActionSupportl类是默认的Action类.在编写Action类时,通常会对这个类进行扩展高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育Struts 2处理的请求后缀StrutsPrepareAndExecuteFilter是Struts2框架的核心控制器,它负责拦截由/*指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求。默认情况下,如果用户请求的路径不带后缀或者后缀以.action结尾,这时请求将被转入
24、Struts2框架处理,否则Struts2框架将略过该请求的处理。根据配置文件包下的根据配置文件包下的文件定义的常量决定文件定义的常量决定=action,默认处理的后缀是可以通过常量”“进行修改的,如下面配置Struts2只处理以.do为后缀的请求路径:如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。如:高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育细说常量定义常量可以在struts.xml或struts.properties中配置,建议在struts.xml中配置,两种配置方式如下:在在struts.xml文件中配置常量文件中配置常量在在struts.p
25、roperties中配置常量中配置常量,(struts.properties文件放置在文件放置在src下下)=do因为常量可以在多个配置文件中进行定义,所以我们需要了解下struts2加载常量的搜索顺序:1struts-default.xml2struts-plugin.xml3struts.xml4struts.properties5web.xml如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值.高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育常用的常量介绍指定默认编码集,作用于HttpServletRequest的setCharac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 传智播客 struts2 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内