struts2的默认配置文件是struts.xml,放置的位置是WEB-INF/classes目录下,模板1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE struts PUBLIC
3 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4 "http://struts.apache.org/dtds/struts-2.0.dtd">
5 <struts>
6 </struts>
如果想要使用这个配置文件,就要在web.xml文件里面配置,以启动struts2框架。1 <filter>
2 <filter-name>struts2</filter-name>
3 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
4 </filter>
5 <filter-mapping>
6 <filter-name>struts2</filter-name>
7 <url-pattern>/*</url-pattern>
8 </filter-mapping>
在很多应用中,会出现很多个Action,如果都写在一个struts.xml文件中,会让结构变的难以维护,这种情况下,可以将一个struts.xml文件按action种类分解成多个struts配置文件,比如说关于用户的:struts-user.xml,关于管理的:struts-manage.xml,然后在总struts配置文件中调用
1 <struts>
2 <include file="struts-user.xml"/>
3 <include file="struts-manage.xml"/>
4 </struts>
下面谈谈配置文件的内容,关于struts-2.0.dtd文件里面的dtd结构就不罗列了,到处都可以找到,这里主要介绍几个常用的配置。
首先要说的是,常量可以在struts-default.xml、struts-plugin.xml、struts.xml、struts.properties、web.xml5个文件中配置,按前面的顺序依次加载,配置有重复的话,后面文件会覆盖掉前面的配置,最好都在struts.xml文件里面统一配置。
1、<constant name="struts.ui.theme" value="simple" />
在JSP页面中,会用到struts2的s标签,而这个标签会有一个默认的格式,有的时候会打乱页面的布局,可以使用上面这个配置来禁止s标签的默认格式生效。2、<constant name="struts.objectFactory" value="spring" />当struts2和spring集成时,用这个配置指定由spring负责action对象的创建。这样就可以用到spring的反射技术,更方便的编程。3、<constant name="struts.action.extension" value="do" />这个是关于action的后缀定义,在上面设置为.do,如果想要设置更多的类型,可以使用value="do,action,ss",等把不同的后缀用逗号隔开。4、<constant name="struts.i18n.encoding" value="true" />
指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法和Freemarker、velocity的输出,默认的编码集是UTF-8。
5、<constant name="struts.serve.static.browserCache" value="false" />有时修改了部分内容,但是在浏览器上没有体现出来,这是因为缓存设置的问题,上面这个就是设置浏览器是否缓存静态内容,默认值为true,开发阶段最好关闭。
6、<constant name="struts.configuration.xml.reload" value="true" />当struts配置文件被修改后,系统是否自动加载该文件,默认值为false,开发阶段打开就节省了好多时间。
7、<constant name="struts.enable,DynamicMethodInvocation" value="false" />设置struts2是否支持动态方法调用,即通过!+方法名的方式,默认值为true,这个配置,各有所爱吧,不过统一方式访问还是比较好的,我选择关闭。
8、<constant name="struts.multipart.maxSize" value="2097152" />这个配置是struts2上传文件的大小限制,单位为字节,上面的2097152字节就是2M,另外需要注意的是,这个文件大小,在多文件上传时是总大小。
9、<constant name="struts.devMode" value="true" />在开发模式下使用,可以打印出更详细的错误信息。
后面就是action的配置
1 <package name="user" namespace="/user" extends="struts-default">
2 <action name="op_*" class="userAction" method="{1}">
3 <result>/success.jsp</result>
4 </action>
5 <action name="ck_*" class="checkAction" method="{1}">
6 <result name="input">/index.jsp</result>
7 <result name="show">/show.jsp</result>
8 <result name="check" type="stream">
9 <param name="contentType">text/html</param>
10 <param name="inputName">inputStream</param>
11 </result>
12 </action>
13 </package>
在这个配置里面还可以注入值,在<action></action>里面加上<param name="arg">value</param>,然后在action类里面提供arg的getset方法,就可以直接在跳转页面${arg}直接访问到数据value。关于通配符参考前面的S2SH实例说明。