我的Struts技术笔记
2012年05月18日


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,里面定义了nameage等属性及get/set方法

       src\com\javaweb\ RegisterAction-validation.xml校验对应java文件中的属性




Struts排除url不拦截

在struts.xml配置如下:
<constant name="struts.action.excludePattern" value="/mlf4j/.*"/> 
即可排除 /mlf4j/** 这下面的URL

struts.xml完整配置如下:
<?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>