Struts2简单入门

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Struts 2.1.6简单入门1优点1.1 Struts2的应用可以不依赖于Servlet API和struts API1.2 Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能1.3 Struts2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型1.4 Struts2提供支持多种表现层技术1.5 Struts2的输入校验可以对指定方法进行校验1.6 提供了全局范围、包范围和Action范围的国际化资源文件管理实现2搭建Struts2的开发环境2.1 找到开发Struts2应用需要使用到的jar文件struts2-core-2.x.x.jar:Struts2框架的核心类库xwork-core-2.x.x.jar:XWork类库,Struts2在其上构建ognl-2.6.x.jar:对象图导航语言(ObjectGraphNavigationLanguage),struts2框架通过其读写对象的属性freemarker-2.3.x.jar:Struts2的UI标签的模板使用FreeMarker编写commons-logging-1.x.x.jar:ASF出品的日志包,Struts2框架使用这个日志包来支持Log4J和JDK1.4+的日志记录。commons-fileupload-1.2.1.jar文件上传组件,2.1.6版本后必须加入此文件2.2 编写Struts2的配置文件Struts2中使用包来管理Action,包管理一组业务相同的Action配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,他不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下Action的路径的一部分,如访问上面例子的Action,访问路径为:/test/helloworld.action。namespace属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为“”(空字符串)。通常每个包都应该继承struts-default包,因为Struts2很多核心的功能都是拦截器来实现。如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。struts-default定义了这些拦截器和Result类型。可以这么说:当包继承了struts-default才能使用struts2提供的核心功能。struts-default包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定义。struts-default.xml也是Struts2默认配置文件。Struts2每次都会自动加载struts-default.xml文件。包还可以通过abstract=“true”定义为抽象包,抽象包中不能包含action。2.3 在web.xml中加入Struts2 MVC框架启动配置配置filterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterclass!--自从Struts2.1.3以后,下面的FilterDispatcher已经标注为过时filter-classorg.apache.struts2.dispatcher.FilterDispatcher/filter-class--/filterfilter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-pattern/filter-mapping3相关知识3.1 访问路径: 端口名/内容途径/命名空间/action的名称3.2 Action配置中的各项默认值3.2.11如果没有为action指定class,默认是ActionSupport3.2.22如果没有为action指定method,默认执行action中的execute()方法3.2.33如果没有指定result的name属性,默认值为success3.3 多个Action共享一个视图--全局result配置package....global-resultsresultname=message/message.jsp/result/global-results/package3.4 指定需要Struts 2处理的请求后缀3.4.1指定多个:constantname=struts.action.extensionvalue=do,go/3.4.2指定一个:constantname=struts.action.extensionvalue=do,go/3.5 Struts2常量配置因为常量可以在下面多个配置文件中进行定义,所以我们需要了解struts2加载常量的搜索顺序:struts-default.xmlstruts-plugin.xmlstruts.xmlstruts.propertiesweb.xml如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值.3.5.1在struts.xml文件中配置常量 constant name=struts.action.extension value=do/3.5.2在struts.properties中配置常量struts.action.extension=do3.5.3其他常量配置,及其用法!--指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法和freemarker、velocity的输出--constantname=struts.i18n.encodingvalue=UTF-8/!--该属性指定需要Struts2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。--constantname=struts.action.extensionvalue=do/!--设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭--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=“10701096/3.6 Struts2处理流程用户请求---StrtusPrepareAndExcetueFilter---Interceptor(Struts2内置的拦截器和用户自定义的拦截器)---Action(用户编好的Action类)---Result---JSP(页面输出)3.7 为应用指定多个struts配置文件3.7.1includefile=struts-user.xml/3.8 动态方法调用3.8.1如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法:!other.in3.9 使用通配符定义Action3.10 接收请求参数3.10.1采用基本类型接收请求参数3.10.2采用复合类型接收请求参数3.11 中文请求参数乱码3.12 自定义类型转换器3.12.1定义局部类型转换器写一个转换器类extends DefaultTypeConverter 并且重写里面converValue方法配置局部转换器的参数:名称:Action的类名+conversion.properties;eg:DateAction-conversion.properties键值:属性值=转换器的全名,eg:date=cn.itcast.conversion.DateConverter3.12.2定义全局类型转换器写一个转换器类extends DefaultTypeConverter 并且重写里面converValue方法配置全局转换器的参数:在WEB-INF/classes下放置xwork-conversion.properties文件键值:待转换的类型=类型转换器的全类名3.13 设置取出request/session/application属性的方法3.13.1ActionContextactionContext=ActionContext.getContext();3.13.2HttpServletRequestrequest=ServletActionContext.getRequest();3.13.3HttpServletContextapplication=ServletActionContext.getServletContext();3.13.4HttpServletResponseresponse=ServletActionContext.getResponse();3.14 上传文件3.14.1上传单个文件form enctype=multipart/form-data mehtod=post action=${pageContext.request.contextPath}/命名空间/action名.方法名.actionString realpath =ServletActionContext.getServletContext().getRealPath(“/upload);//获取上传路径realpath.getParentFile().exist() //判断当前文件夹是否存在realpath.getParentFile().mkdirs()// 如果不存在,则创建文件夹FileUtils.copy(file, savefile)3.14.2上传多个文件3.15 自定义拦截器3.15.11,Action实现com.opensymphony.xwork2.interceptor.Interceptor接口3.15.22,struts配置文件中配置拦截器package name=itcast namespace=/test extends=struts-default interceptors interceptor name=“permission class=cn.itcast.aop.PermissionIntercep

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功