Struts 2
1. Struts主要是充当控制器(Controller)的作用,同时也给V端提供了许多标签,这些标签能够和AJAX结合起来。
2. 要使用Struts 2,需要把相关的jar文件拷贝到WEB-INF/lib目录下,并在web.xml配置文件中配置Filter(过滤器)。
3. Filter配置好后,就可以使用Struts 2了,为控制层配置Action 处理结果和视图文件之间的映射,配置文件为src/struts.xml。示例如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- struts为配置文件根元素-->
<struts>
<constant name="struts.i18n.encoding" value="gb2312"></constant>
<!-- Action必须放在指定的包名空间中-->
<package name="struts2" extends="struts-default">
<action name="showAll" class="showAllAction">
<!-- 定义处理结果与视图资源之间的关系-->
<result name="success">/showAll.jsp</result>
</action>
<action name="delete" class="deleteAction">
<!-- 定义处理结果与视图资源之间的关系-->
<result name="success" type="redirect">/showAll.action</result>
</action>
<action name="add" class="addAction">
<!-- 定义处理结果与视图资源之间的关系-->
<result name="success" type="redirect">/showAll.action</result>
<result name="input">/add.jsp</result>
<result name="error">/add.jsp</result>
</action>
</package>
</struts>
Struts 2的高级功能
1.国际化
新建src\myMessage_zh_CN.properties文件,内容示例如下:
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
age.rule = \u5E74\u9F84\u5FC5\u987B\u5728${min}\u81F3${max}\u4E4B\u95F4
password.required = \u5FC5\u987B\u8F93\u5165\u5BC6\u7801
可以用Eclipse来生成该文件。名字的前面部分myMessage由自己随便取。
然后在src\struts.xml中添加如下一行即可:
<constant name="struts.custom.i18n.resources" value="myMessage"></constant>
2. 服务器端校验
只需要在ActionName.java文件目录下,加入ActionName-validation.xml文件,xml文件的ActionName必须和java文件的ActionName相同。例如注册页面的校验,有如下几个文件:
WebRoot\register.jsp,其中的提交表单action="register"
src\struts.xml,在里面把表单的action="register"定向到RegisterAction.java文件
src\com\javaweb\RegisterAction.java,里面定义了name、age等属性及get/set方法
src\com\javaweb\ RegisterAction-validation.xml校验对应java文件中的属性
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" " http://struts.apache.org/dtds/struts-2.3.dtd "> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <constant name="struts.action.excludePattern" value="/mlf4j/.*"/> <package name="default" namespace="/" extends="struts-default"> <default-action-ref name="execute" /> </package> <include file="example.xml"/> <!-- Add packages here --> </struts>