传智播客之Struts2详细课件

上传人:飞*** 文档编号:56923875 上传时间:2018-10-17 格式:PPT 页数:80 大小:270.50KB
返回 下载 相关 举报
传智播客之Struts2详细课件_第1页
第1页 / 共80页
传智播客之Struts2详细课件_第2页
第2页 / 共80页
传智播客之Struts2详细课件_第3页
第3页 / 共80页
传智播客之Struts2详细课件_第4页
第4页 / 共80页
传智播客之Struts2详细课件_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《传智播客之Struts2详细课件》由会员分享,可在线阅读,更多相关《传智播客之Struts2详细课件(80页珍藏版)》请在金锄头文库上搜索。

1、Struts2,Struts2,Struts2是在WebWork2基础发展而来的。和struts1一样, Struts2也属于MVC框架。不过有一点大家需要注意的是:尽管Struts2和struts1在名字上的差别不是很大,但Struts2和struts1在代码编写风格上几乎是不一样的。那么既然有了struts1,为何还要推出struts2。主要是因为struts2有以下优点: 1 在软件设计上Struts2没有像struts1那样跟Servlet API和struts API有着紧密的耦合,Struts2的应用可以不依赖于Servlet API和struts API。 Struts2的这种设

2、计属于无侵入式设计,而Struts1却属于侵入式设计。 public class OrderListAction extends Action public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception 2 Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。 3 Strut2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。在Stru

3、ts1中,如果我们要实现同样的功能,就必须向Struts1的底层实现BeanUtil注册类型转换器才行。 4 Struts2提供支持多种表现层技术,如:JSP、freeMarker、Velocity等 5 Struts2的输入校验可以对指定方法进行校验,解决了Struts1长久之痛。 6 提供了全局范围、包范围和Action范围的国际化资源文件管理实现,搭建Struts2开发环境,搭建Struts2环境时,我们一般需要做以下几个步骤的工作: 1找到开发Struts2应用需要使用到的jar文件. 2编写Struts2的配置文件 3在web.xml中加入Struts2 MVC框架启动配置,搭建St

4、ruts2开发环境-开发Struts2应用依赖的jar文件,我们可以到http:/struts.apache.org/download.cgi#struts2014下载struts-2.x.x-all.zip,目前最新版为2.1.8。下载完后解压文件,开发struts2应用需要依赖的jar文件在解压目录的lib文件夹下。不同的应用需要的JAR包是不同的。下面给出了开发Struts 2程序最少需要的JAR。 struts2-core-2.x.x.jar :Struts 2框架的核心类库 xwork-core-2.x.x.jar :XWork类库,Struts 2在其上构建 ognl-2.6.x.

5、jar :对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性 freemarker-2.3.x.jar :Struts 2的UI标签的模板使用FreeMarker编写 commons-logging-1.x.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。 commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后必须加入此文件,搭建Struts2开发环境- Struts2应用的配置文件,Struts2默认的配置文件为strut

6、s.xml ,该文件需要存放在WEB-INF/classes下,该文件的配置模版如下:注意:此文件在开发的时候是放到src目录下,程序编译后会自动拷贝到WEB-INF/classes目录下。此文件我们可以不用自己手写直接到Struts框架的例子程序中拷贝过来稍稍修改一下即可,搭建Struts2开发环境-Struts2在web中的启动配置,在struts1.x中, struts框架是通过Servlet启动的。在struts2中,struts框架是通过Filter启动的。他在web.xml中的配置如下:struts2org.apache.struts2.dispatcher.ng.filter.S

7、trutsPrepareAndExecuteFilterorg.apache.struts2.dispatcher.FilterDispatcher struts2/*在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。注意:struts2读取到struts.xml的内容后,以javabean形式存放在内存中,以后struts2对用户的每次请求处理将使用内存中的数据,而不是每次都读取struts.xml文件,第一个Struts2应用-HelloWorld,在默认的配置文件struts.xml 中加入如

8、下配置:/WEB-INF/page/hello.jsp,Struts.xml配置中的包介绍,/WEB-INF/page/hello.jsp在struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,他不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下Action的路径的一部分,如访问上面例子的

9、Action,访问路径为:/test/helloworld.action。 namespace属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为“”(空字符串)。通常每个包都应该继承struts-default包, 因为Struts2很多核心的功能都是拦截器来实现。如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。 struts-default定义了这些拦截器和Result类型。可以这么说:当包继承了struts-default才能使用struts2提供的核心功能。 struts-default包是在struts2-core-2.x.x.jar文

10、件中的struts-default.xml中定义。 struts-default.xml也是Struts2默认配置文件。 Struts2每次都会自动加载 struts-default.xml文件。包还可以通过abstract=“true”定义为抽象包,抽象包中不能包含action。,第一个Struts2应用-HellWorld,例子中使用到的cn.itcast.action.HelloWorldAction类如下: package cn.itcast.action; public class HelloWorldActionprivate String message;public Strin

11、g getMessage() return message;public void setMessage(String message) this.message = message;public String execute() this.message = “我的第一个struts2应用“;return “success“; ,第一个Struts2应用-HelloWorld,例子中使用到的/WEB-INF/page/hello.jsp如下:第一个struts2应用$message 可以使用EL表达式访问Action中的属性。,访问HelloWorld应用,在struts1中,通过节点的pa

12、th属性指定访问该action的URL路径。在struts2中,情况就不是这样了,访问struts2中action的URL路径由两部份组成:包的命名空间+action的名称,例如访问本例子HelloWorldAction的URL路径为:/test/helloworld (注意:完整路径为:http:/localhost:端口/内容路径/test/helloworld)。另外我们也可以加上.action后缀访问此Action。/WEB-INF/page/hello.jsp,Action名称的搜索顺序,1获得请求路径的URI,例如url是:http:/server/struts2/path1/pa

13、th2/path3/test.action2首先寻找namespace为/path1/path2/path3的package,如果不存在这个package则执行步骤3;如果存在这个package,则在这个package中寻找名字为test的action,当在该package下寻找不到action 时就会直接跑到默认namaspace的package里面去寻找action(默认的命名空间为空字符串“” ) ,如果在默认namaspace的package里面还寻找不到该action,页面提示找不到action 3寻找namespace为/path1/path2的package,如果不存在这个pac

14、kage,则转至步骤4;如果存在这个package,则在这个package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action 4寻找namespace为/path1的package,如果不存在这个package则执行步骤5;如果存在这个package,则在这个package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namas

15、pace的package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action 5寻找namespace为/的package,如果存在这个package,则在这个package中寻找名字为test的action,当在package中寻找不到action或者不存在这个package时,都会去默认namaspace的package里面寻找action,如果还是找不到,页面提示找不到action。,Action配置中的各项默认值,/WEB-INF/page/hello.jsp1如果没有为action指定class,默认

16、是ActionSupport。 2如果没有为action指定method,默认执行action中的execute() 方法。 3如果没有指定result的name属性,默认值为success。,Action中result的各种转发类型,/WEB-INF/page/hello.jspresult配置类似于struts1中的forward,但struts2中提供了多种结果类型,常用的类型有: dispatcher(默认值)、 redirect 、 redirectAction 、 plainText。在result中还可以使用$属性名表达式访问action中的属性,表达式里的属性名对应action中的属性。如下: /view.jsp?id=$id下面是redirectAction 结果类型的例子,如果重定向的action中同一个包下: helloworld 如果重定向的action在别的命名空间下:helloworld/testplaintext:显示原始文件内容,例如:当我们需要原样显示jsp文件源代码 的时候,我们可以使用此类型。/xxx.jspUTF-8 ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

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