struts2配置文件的解释
1 <?xml version="1.0" encoding="GB2312"?>
2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> 3 //注解:<!-- struts 是struts2配置文件的根元素-->
<struts>
//注解:constant常量配置 4 <constant name="struts.objectFactory" value="spring" /> //注解:指定struts2默认的objectFactorybean,该属性默认值是spring 5 <constant name="struts.devMode" value="false" /> //注解:是否使用开发模式,默认为false,测试阶段一般设为true 6 <constant name="struts.locale" value="zh_GB" /> //注解:<!-- 地区 -->en就是english;GB就是GreatBritain 7 <constant name="struts.i18n.encoding" value="GBK" /> //注解:指定web应用的默认编码集 8 <constant name="struts.action.extension" value="action" /> //注解:指定struts2处理请求的后缀名称 9 <constant name="struts.configuration.xml.reload" value="true" /> //注解:struts.xml文件系统改变后,系统是否重新加载该文件 10 <constant name="struts.serve.static" value="false" /> 11 //注解:<constant name="struts.serve.static.browserCache " value="false" /> <!-- 当 struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 --> <constant 12 name="struts.custom.i18n.resources"value="ApplicationResources,errors" /> 13 //注解:指定所需的国际化资源,以逗号分隔, 14 <constant name="struts.multipart.maxSize" value="2097152" /> //注解:设置上传文件允许的最大字节数 15 <constant name="struts.multipart.saveDir" value="/resources" /> //注解:设置上传文件所保存的临时文件夹 16 <constant name="struts.ui.theme" value="css_xhtml" /> 17 //注解:设置主题 18 <constant name="struts.enable.SlashesInActionNames" value="true" /> 31 //注解:设置Struts 2是否允许在Action名中使用斜线 32 <package name="login" namespace="/" extends="json-default"> //注解:name:必填,指定包的名字,该名字是该包被其他包引用的key
namespace:可选,定义该包的命名空间。 34 “/”表示根namespace,所有直接在应用程序上下文环境下的请求(Context)都在这个package中查找 35 “”表示默认namespace,当所有的namespace中都找不到的时候就在这个namespace中寻找 36 extends:可选,指定该包继承其他包。继承其他包,可以继承其他包中的Action定义、拦截器定义等 37 <action name="gotoIndex" class="IndexAction" method="gotoIndex"> 38 //注解:name:请求的action的名称 39 Class:action处理类对应的具体的路径 40 Method:指定action中的方法名,如果没有指定method则默认执行action中的execute方法 Converter:指定action使用的类型转换器 41 <result name="success"> /admin/panel.jsp </result> 42 <result name="failure"> /login.jsp </result>
</action> 43 <action name="doFtp" class="IndexAction" method="doFtp"> <result name="success" type="redirect"> gotoIndex.action </result> 44 //注解:name:对应action返回逻辑视图名称,默认为success,则页面跳转 45 Type:返回结果类型,默认为dispatcher(请求转发),可以设为redirect(重定向) 46 <result name="failure"> /login.jsp </result>
</action> 47 <action name="login" class="LoginAction" method="login"> <result name="success"> /admin/main.jsp </result> 48 <result name="failure"> /login.jsp </result>
</action> 49 <action name="logout" class="LoginAction" method="logout"> <result name="success"> 62 /login.jsp </result> 63 <result name="failure"> /login.jsp </result> 64 </action>
</package>
请求转发和重定向的区别:
转发和重定向设置: <action name="deptAction" class="com.syaccp.erp.action.DeptAction"> <result name="success">/WEB-INF/jsp/basic/dept_list.jsp</result> <result name="editView">/WEB-INF/jsp/basic/dept_edit.jsp</result> </action> 上例action中,success对应的视图是通过默认的转发(dispatch)跳转的。editView作为增删改的一部分,应该通过重定向来跳转页面,这样必须显式声明type=redirect,来达到重定向的效果。这时editView的内容改为action中一个方法更合适。如: <action name="deptAction" class="com.syaccp.erp.action.DeptAction"> <result name="success">/WEB-INF/jsp/basic/dept_list.jsp</result> <result name="editView" type="redirect">deptAction!select.action</result> </action> 这里在执行edit方法后返回editView字符串,将会再执行select方法,跟DeptEditServlet里response.sendRedirect("DeptListServlet")类似 上例只是重定向同一个Action类中的其他方法,开发中可能还需要重定向到其他Action类中,这时就需要用到type属性的另一个值:redirectAction: <action name="deptAction" class="com.syaccp.erp.action.DeptAction"> <result name="success">/WEB-INF/jsp/basic/dept_list.jsp</result> <result name="editView" type="redirect">deptAction!select.action</result> <result name="index" type="redirectAction">indexAction.action</result> </action> 上例中,如果deptAction中某个方法返回字符串为index,则将跳转到indexAction去,执行indexAction的execute方法。 如果indexAction在其他包里面,则前面应加上包名,例:index/indexAction