您的位置:首页 > 编程语言 > Java开发

struts之XML配置文件归纳

2016-07-12 16:23 387 查看

1.首先是src目录下的总配置文件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>

<!-- 二、总配置文件:引入其他所有配置文件 -->

<include file="constant.xml"></include>
<include file="cn/sp/a_config/struts.xml"></include>
<include file="cn/sp/b_config2/config.xml"></include>
<include file="cn/sp/c_data/data.xml"></include>
<include file="cn/sp/d_type/type.xml"></include>
<include file="cn/sp/e_fileupload/upload.xml"></include>

</struts>

这种一般是引入其他包里的配置文件。

2.然后是配置文件的通用模板

<span style="font-size:14px;"><struts>
 <package name="config2" namespace="/" extends="struts-default">
  <!-- 配置全局跳转视图 -->
  <global-results>
   <result name="success">/index.jsp</result>
  </global-results>
  <!-- 通配符: </span><a target=_blank href="http://locahost:8080/struts02/user_login"><span style="font-size:14px;">http://locahost:8080/struts02/user_login</span></a><span style="font-size:14px;"> -->
  <action name="user_*" class="cn.itcast.b_config2.UserAction" method="{1}">
   <result name="loginSuccess" >list.jsp</result>
  </action></span>
<span style="font-size:14px;">  <action name="test2">
    <result name="success" type="redirect">/WEB-INF/index.jsp</result>
   </action></span>
<span style="font-size:14px;"> </package> 
 
</struts></span>

type默认为dispatcher即转发,如要改为重定向需写出来,同时还可以重定向到Action,type="redirectAction".

3.接着是使用struts框架自带的一些功能时涉及到的一些配置文件。

3.1常量配置

<struts>

<!-- 一、全局配置 -->
<!-- 0. 请求数据编码 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!-- 1. 修改Struts默认的访问后缀 -->
<constant name="struts.action.extension" value="action,do,"></constant>
<!-- 2. 修改xml自动重新加载 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 3. 开启动态方法调用 (默认不开启)-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<!-- 4. 修改上传文件的最大大小为30M -->
<constant name="struts.multipart.maxSize" value="31457280"/>
<!-- 更改主题,使用标签时用到 -->
 	<constant name="struts.ui.theme" value="simple"></constant>
</struts>

<!-- 通过常量加载资源文件 -->

 <constant name="struts.custom.i18n.resources" value="cn.sp.config.msg"></constant>

这里是加载自己写的国际化配置文件,格式为msg_en_US.properties,en是英语的简写,US是美国简写,还有默认格式msg.properties.

3.2文件上传与下载


<span style="font-size:12px;color:#33ccff;background-color: rgb(51, 102, 255);"><struts>
<!-- 0. 请求数据编码 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!-- 2. 修改xml自动重新加载 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 3. 开启动态方法调用 (默认不开启)-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>

<package name="upload_" extends="struts-default">
<!-- 注意: action 的名称不能用关键字"fileUpload" -->
<action name="fileUploadAction" class="cn.itcast.e_fileupload.FileUpload">

<!-- 限制运行上传的文件的类型 -->
<interceptor-ref name="defaultStack">

<!-- 限制运行的文件的扩展名 -->
<param name="fileUpload.allowedExtensions">txt,jpg,jar</param>

<!-- 限制运行的类型   【与上面同时使用,取交集】
<param name="fileUpload.allowedTypes">text/plain</param>
-->

</interceptor-ref>

<result name="success">/e/success.jsp</result>

<!-- 配置错误视图 -->
&
b526
lt;result name="input">/e/error.jsp</result>
</action>

<action name="down_*" class="cn.itcast.e_fileupload.DownAction" method="{1}">
<!-- 列表展示 -->
<result name="list">/e/list.jsp</result>
<!-- 下载操作 -->
<result name="download" type="stream">

<!-- 运行下载的文件的类型:指定为所有的二进制文件类型 -->
<param name="contentType">application/octet-stream</param>

<!-- 对应的是Action中属性: 返回流的属性【其实就是getAttrInputStream()】 -->
<param name="inputName">attrInputStream</param>

<!-- 下载头,包括:浏览器显示的文件名 -->
<param name="contentDisposition">attachment;filename=${downFileName}</param>

<!-- 缓冲区大小设置 -->
<param name="bufferSize">1024</param>
</result>
</action>
</package>
</struts></span>



3.3拦截器


<struts>
<package name="hello" extends="struts-default">

<!-- 【拦截器配置】 -->
<interceptors>

<!-- 配置用户自定义的拦截器 -->
<interceptor name="helloInterceptor" class="cn.itcast.a_interceptor.HelloInterceptor"></interceptor>

<!-- 自定义一个栈: 要引用默认栈、自定义的拦截器 -->
<interceptor-stack name="helloStack">
<!-- 引用默认栈 (一定要放到第一行)-->
<interceptor-ref name="defaultStack"></interceptor-ref>
<!-- 引用自定义拦截器 -->
<interceptor-ref name="helloInterceptor"></interceptor-ref>
</interceptor-stack>

</interceptors>

<!-- 【执行拦截器】 -->
<default-interceptor-ref name="helloStack"></default-interceptor-ref>

<!-- Action配置 -->
<action name="hello" class="cn.itcast.a_interceptor.HelloAction">
<result name="success">/index.jsp</result>
</action>

</package>
</struts>

这里需要注意几点:
         1.默认栈一定要放在第一行,也就是所有自定义拦截器的前面
          2.执行拦截器时根据作用范围大小不同可以分为三种写法,具体依实际需求而定。
<package name="user" extends="struts-default">

<!-- 【拦截器配置】 -->
<interceptors>
<interceptor name="loginCheck" class="cn.itcast.interceptor.UserCheckInterceptor"></interceptor>
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="loginCheck"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 【执行拦截器:第一种写法: 当前包下所有的acntion都执行myStack栈】
<default-interceptor-ref name="myStack"></default-interceptor-ref>
-->

<!-- 全局配置 -->
<global-results>
<result name="error">/error.jsp</result>
</global-results>

<action name="user_*" class="cn.itcast.action.UserAction" method="{1}">

<!--第二种写法: 只是在这一个Action中执行myStack栈
<interceptor-ref name="defaultStackt"></interceptor-ref>
<interceptor-ref name="loginCheck"></interceptor-ref>
-->

<!-- 第三种写法:执行用户栈(与第二种写法一样, 只在当前aciton中执行自定义栈) -->
<interceptor-ref name="myStack"></interceptor-ref>

<!-- 1. 登陆失败 -->
<result name="input">/login.jsp</result>

<!-- 2. 登陆成功 -->
<result name="loginSuccess" type="redirectAction">user_list</result>

<!-- 3. 列表展示 -->
<result name="list">/WEB-INF/list.jsp</result>

</action>
</package>

补上防止表单重复提交拦截器

<!-- 防止表单重复提交,第二步: 配置" 防止表单重复提交拦截器" -->
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token">
<!-- 指定拦截哪些方法需要防止表单重复提交(save) -->
<param name="includeMethods">save</param>
</interceptor-ref>

<!-- 防止表单重复提交,第三步: 如果用户重复提交了跳转到指定的错误页面 -->
<result name="invalid.token" type="redirectAction">emp_list</result>
第一步就是在对应的jsp页面写入<s:token></s:token>

3.4数据校验

UserAction-user_register-validation.xml这种取名方式是对特定的action中的特定方法进行数据效验,

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

<validators>

<!-- 验证的每一个字段用field表示 -->
<field name="user.userName">
<!-- 指定使用的验证器 -->
<field-validator type="requiredstring">
<!-- 验证失败的错误提示信息 -->
<message>用户名不能为空!</message>
</field-validator>
</field>

<!-- 验证pwd -->
<field name="user.pwd">

<!-- 非空 -->
<field-validator type="requiredstring">
<message>密码不能为空!</message>
</field-validator>

<!-- 长度 -->
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">8</param>
<message>密码必须为6-8位!</message>
</field-validator>
</field>

<!-- 验证日期 -->
<field name="user.birth">
<field-validator type="date">
<message>日期格式不对!</message>
</field-validator>
</field>

<!-- 验证Email -->
<field name="user.email">
<field-validator type="email">
<message>邮箱格式错误!</message>
</field-validator>
</field>

</validators>


命名方式ActionClassName-validation.xml 放置在同Action的包下,默认Action中的所有方法进行校验,当然还有代码校验此处省略。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: