您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > struts2的使用教程
为什么要使用struts2与struts1相比,它的优点:在软件设计上Struts2没有像struts1那样跟ServletAPI和strutsAPI有着紧密的耦合,Struts2的应用可以不依赖于ServletAPI和strutsAPI。Struts2的这种设计属于无入侵式设计,而Struts1却属于入侵式设计。Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能Struts2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。在Struts1中,如果我们要实现同样的功能,就需要向Struts1的底层实现BeanUtil注册类型拦截器才行。Struts提供支持多种表现层技术,如:jsp、freeMarker、Velocity等Struts2的输入校验可以对指定的方法进行校验,解决了struts1长久之痛Struts2提供了全局范围、包范围和Action范围的国际化资源文件管理实现1.struts2(struts2.1.8)环境的搭建1导入jar包:commons-fileupload-1.2.1.jar:文件上传组件,struts2.1.6版本后必须加入此文件上传commons-logging-1.0.4.jar:ASF出品的日志包,Struts框架使用这个日志包来支持Log4J和JDK1.4+的日志记录freemarker-2.3.15.jar:Struts2的UI标签的模版使用FreeMarker编写ognl-2.7.3.jar:对象图导航语言(ObjectGraphNavigationLanguage),struts2框架通过其读写对象属性struts2-core-2.1.8.jar:Struts2框架的核心类库xwork-core-2.1.6.jar:XWork类库,Struts2在其上构建2编写Struts2的配置文件?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN=actionnamespace=/testextends=struts-defaultactionname=hellowordclass=com.lizhong.action.HelloWordActionmethod=executeresultname=successtype=redirect/index.jsp/result/action/struts3在web.xml中加入Struts2MVC框架启动配置filterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter/filter-class/filterfilter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-pattern/filter-mapping2.Action名称的搜索顺序1)获得请求路径的URL.例如url是:)首先寻找namespace为/path1/parth2/parth3的package,如果不存在这个package则执行步骤3;如果存在这个package,则在这个package中寻找名字为test的action,当在该package下寻找不到action时就会直接跑到默认namespace的package里面去寻找action(默认的命名空间为空字符串“”),如果在默认的namespace的package里面还是寻找不到该Action,页面提示找不到action3)寻找namespace为/path1/parth2的package,如果不存在这个package则执行步骤4;如果存在这个package,则在这个package中寻找名字为test的action,当在该package下寻找不到action时就会直接跑到默认namespace的package里面去寻找名字为test的action,如果在默认的namespace的package里面还是寻找不到该Action,页面提示找不到action4)寻找namespace为/path1的package,如果不存在这个package则执行步骤5;如果存在这个package,则在这个package中寻找名字为test的action,当在该package下寻找不到action时就会直接跑到默认namespace的package里面去寻找名字为test的action,如果在默认的namespace的package里面还是寻找不到该Action,页面提示找不到action5)寻找namespace为/的package,如果存在这个package,则在这个package中寻找名字为test的action,当在该package下寻找不到action时就会直接跑到默认namespace的package里面去寻找名字为test的action,如果在默认的namespace的package里面还是寻找不到该Action,页面提示找不到action3.Action配置中的各项默认值!--如果不定义class属性,默认使用ActionSupport类,method默认值:execute--actionname=addUI!--result没有定义name属性,默认值是success--result/WEB-INF/page/addstudent.jsp/result/action4.Action配置中的各种视图转发类型!--浏览器重定向到视图使用type=redirect--actionname=redirectresulttype=redirect/index.jsp/result/action!--重定向到Action,使用type=redirectAction--actionname=redirect!—重定向到不同包下的action--resulttype=redirectAction!--action的名称--paramname=actionNameredirect/param!--action的命名空间--paramname=namespace/test/param/result!—重定向到同一包下的action,redirect为同一包下action的名称--resulttype=redirectActionredirect/result/action!--原样返回页面的源代码,不会执行里面的内容--actionname=plainTextresulttype=plainText!--要返回的页面--paramname=location/index.jsp/param!--使用的编码方式--paramname=charSetUTF-8/param/result/action5.为Action的属性注入值actionname=setterclass=com.lizhong.action.SetterTestActionmethod=executeparamname=savepath/images/111/paramresult/WEB-INF/page/setter.jsp/result/action首先:在SetterTestAction中要存在savepath属性的setter方法,如果需要在页面上显示,要提供getter方法.其次:在配置该Action时,使用paramname=savepath/images/111/param来为savepath注入值,name指定需要注入值的属性名称.6.Struts2的常量配置常量可以在struts.xml或struts.properties中配置,建议在struts.xml中配置,两种配置方式如下:在struts.xml文件中配置常量strutsconstantname=struts.action.extensionvalue=do,action//struts在struts.properties文件中配置常量struts.action.extension=do因为常量可以再下面多个配置文件中进行定义,所以我们需要了解struts2加载常量的搜索顺序:struts-default.xmlstruts-plugin.xmlstruts.xmlstruts.propertiesweb.xml如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值常用的常量介绍:!--该属性指定需要Struts2处理的请求后缀的请求后缀,该属性默认值是action,即所有匹配*.action的请求都有Struts2处理.如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号隔开--constantname=struts.action.extensionvalue=do,action/!--指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法和Freemarker,Velocity的输出--constantname=struts.i18n.encodingvalue=UTF-8/!--设置浏览器是否缓存静态内容,默认值为ture(生产环境下使用),开发环境下最好关闭--constantname=struts.serve.static.browserCachevalue=false/!--当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开--constantname=struts.configuration.xml.reloadvalue=true/!--开发环境下使用,这样可以打印出更详细的错误信息--constantname=struts.devModevalue=true/!--默认的视图主题--constantname=struts.ui.themevalue=simple/!--与spring集成时,指定由Spring负责action对象的创建--constantname=struts.objectFactoryvalue=spring/!--该属性设置Struts2是否支持动态方法调用,该属性的默认值为true,如果需要关闭动态方法调用,则可设置该属性为false,使用通配符调用方法也是如此--constantname=struts.enable.DynamicMethodInvocationvalue=false/!--上传文件的大小限制--constantname=struts.multipart.maxSizevalue=10240000/7.Struts2的处理流程StrutsPrepareAndExecuteFilter是struts2框架的核心控制器,它负责拦截有url-pattern/*/url-pattern指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求.默认情况下,如果用户请求的
本文标题:struts2的使用教程
链接地址:https://www.777doc.com/doc-2850783 .html