- 浏览: 151476 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
struts2配置文件模板详细说明
<!--web.xml中的配置-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
struts.xml中的配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.action.extension" value="do,action"/>
<!-- 配置后缀名为.do 默认为.action-->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!-- 指定默认编码集 ,作用于HttpServletRequest的setCharacterEncoding()和freemarker,vilocity的输出 -->
<constant name="struts.serve.static.bowserCache" value="false"/>
<!-- 设置浏览器是否缓存静态内容 ,默认值为true(生产环境下使用)开发阶段最好关闭 -->
<constant name="struts.configuration.xmlreload" value="true"/>
<!-- 当struts配置文件修改时是否自动加载 -->
<constant name="struts.devMode" value="true"/>
<!-- 开发模式下打印详细的错误信息 -->
<constant name="struts.ui.theme" value="simple"/>
<!-- 默认的试图主题 -->
<!--
<constant name="struts.objectFactory" value="spring"/>
与spring集成时设置由spring来创建action的对像
<constant name="struts.multipart.maxSize" value="1000000"/>
设置文件上传时的最大限制(单位字节)
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
禁止动态方法调用
-->
<!-- 包含多个配置文件 -->
<include file="/com/mystruts/struts/action/struts-zhuce.xml"/>
<package name="test" namespace="/test" extends="struts-default">
<global-results>
<result name="message">/WEB-INF/page/hello.jsp</result>
</global-results>
<action name="message" class="com.mystruts.struts.action.HelloWorld" method="add">
</action>
<action name="hello" class="com.mystruts.struts.action.HelloWorld" method="execute">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
<!-- class=默认值是ActionSupport , method="execute"默认值 ,result 中 name=默认值"success" , -->
<action name="user">
<result>/WEB-INF/page/index.jsp</result>
</action>
<!-- 重定向 配置 result type="redirect" -->
<action name="redirect">
<result type="redirect">http://www.baidu.com</result>
</action>
<!-- 重定项到Action 配置 result type="redirectAction" -->
<action name="redirectAction">
<result type="redirectAction">user</result>
</action>
<!-- 重定项到另一个包中的Action 配置 result type="redirectAction" -->
<action name="redirectAction2">
<result type="redirectAction">
<param name="actionName">aaa</param><!-- 另一个包中的 actionName-->
<param name="namespace">/test2</param><!--另一个包中的 namespace -->
</result>
</action>
<!--在浏览器中输出源代码 result type="plainText" 并设置location 和 charSet 属性-->
<action name="plainText">
<result type="plainText">
<param name="location">/index.jsp</param>
<param name="charSet">UTF-8</param><!-- 设置读入文件的编码格式 -->
</result>
</action>
</package>
<package name="other" namespace="/test2" extends="struts-default">
<action name="aaa" class="com.mystruts.struts.action.HelloWorld" method="execute">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
<!-- 为Action属性注值 -->
<package name="zhuzhi" namespace="/zhuzhi" extends="struts-default">
<action name="zz" class="com.mystruts.struts.action.HelloWorld" method="zhuZhi">
<param name="message">我的值</param>
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
</struts>
<!--*****************************************struts2中常量的配置*****************************************************************-->
<constant name="struts.action.extension" value="do,action"/>
<constant name="struts.action.extension" value="do,action"/>
<!-- 配置后缀名为.do 默认为.action-->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!-- 指定默认编码集 ,作用于HttpServletRequest的setCharacterEncoding()和freemarker,vilocity的输出 -->
<constant name="struts.serve.static.bowserCache" value="false"/>
<!-- 设置浏览器是否缓存静态内容 ,默认值为true(生产环境下使用)开发阶段最好关闭 -->
<constant name="struts.configuration.xmlreload" value="true"/>
<!-- 当struts配置文件修改时是否自动加载 -->
<constant name="struts.devMode" value="true"/>
<!-- 开发模式下打印详细的错误信息 -->
<constant name="struts.ui.theme" value="simple"/>
<!-- 默认的试图主题 -->
<!--
<constant name="struts.objectFactory" value="spring"/>
与spring集成时设置由spring来创建action的对像
<constant name="struts.multipart.maxSize" value="1000000"/>
设置文件上传时的最大限制(单位字节) Struts2的文件上传功能默认最大只能上传2M大小。
这句重新指定了上传文件的最大限制,单位是字节。以这句为例,上传文件不能超过10240000字节。
注意,不能写成1024*1000*10这种形式
<constant name="struts.multipart.saveDir" val ="/temp"/>
<!-- 这句指定了上传文件的临时存放目录,以这句为例,临时存放目录为应用所在根目录下的temp文件夹,假设我的应用放在D:\Program Files\apache-tomcat-6.0.24\webapps下,那么临时存放目录就是D:\temp。也可以指定一个绝对路径。目录不存在也没关系,会自动创建-->
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
禁止动态方法调用
-->
<!-- 包含多个配置文件 -->
<include file="/com/mystruts/struts/action/struts-zhuce.xml"/>
<!--******************************************action配置****************************************************************-->
<package
name="包的名字,唯一标示"
namespace="/test"
extends="继承的类,一般是继承struts-default类"
abstract="抽象申明">
<global-results>
<result name="message">/WEB-INF/page/hello.jsp</result>
</global-results>
<action name="路径/name.action" class="实现类" method="调用方法">
<result type="redirectAction">
<param name="name: 用来匹配action的返回值">aaa</param><!-- 另一个包中的 actionName-->
<param name="namespace">/test2</param><!--另一个包中的 namespace -->
</result>
</action>
</package>
package
struts对配置的组织结构
类似于java package
属性:
* name : 包的名字,唯一标示
extends: 继承
namespace:命名空间
abstract: 抽象申明
namespace
1 default namespace ""
2 root namespace "/"
3 action 搜索的顺序
当前namespace ---一级一级向上搜索
Web应用的请求路径被视为namespace
4 访问 /aaa.action的时候的搜索的顺序
"/" ---> ""
5 namespace 没有目录信息
6 package 包含0 - N 个 action
Action:
name: 唯一标示 name.action ---> action name
class:实现类 继承actionsupport的类
method:调用方法 动态调用的方法名称
Result
name: 用来匹配action的返回值
type: 是result-type 进行预定义的/自定义的 常用dispatcher,转发
<result-types>
<result-type name="dispatcher" class ="" default="true" ></result-type>
</result-types>
特殊位置:
<global-results>
<result name=""></result>
....
</global-results>
特殊参数:
<result name="next_opertor" >${var_name}</result>
var_name 必须是action里面的一个私有属性,并且有get/set方法
必须符合bean的命名规则: 小写开头
set/get大写开头的属性
include
只能放在struts 标签的下一级
用来引入其他的struts配置文件
file = " "
被他引入xml文件是一个标准的struts配置
interceptors = > 拦截器
<interceptors>
<interceptor name="" class=""/>
<intercptor-stack name="">
<interceptor-ref name=""/>
<interceptor-ref name=""/>
</interceptor-stack>
<interceptors>
<default-interceptor-ref name="">
<action。。。。。。>
<interceptor-ref name="" />
constants
<constant name="" value="" />
可以完成
struts.properties 所完成的工作
可以完成
constant 所完成的工作
struts.properties
配置struts特性(动态方法调用,虚拟机)
struts-default.xml struts...jar里面,----〉零配置 struts-default.vm 模板
<!--******************************************拦截器配置****************************************************************-->
拦截器
1)拦截器在struts 2接收到请求之后,
1。抵达Action之前 以及离开Action之后 发挥作用
2。抵达Action之前,可以处理参数(文件上传,struts2有内置拦截器),或者拦截请求离开Action之后,可以处理Action返回的Result(嵌套模板的拦截器)
配置拦截器
1。struts自己提供了缺省的拦截器,
2。拦截器的使用的第一步 ,配置、可以理解为登记
3。拦截器的使用的第二步 ,配置、定义缺省interceptor-stack 、或者 直接指明 某个Action使用的拦截器
4。使用拦截器的时候以Stack为单位
5。拦截器可以被覆盖,采取就近配置的拦截器:: namespace范围 或者 action范围内部
6。拦截器之行的先后顺序:根据配置文件内容,由上至下(抵达Action之前),由下至上(离开Action之后)
注册Interceptors:
<interceptors>
<interceptor name="name_1"
class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/>
.......
</interceptors>
注册Interceptor-stack:
<interceptor-stack name="stack_name_1">
<interceptor-ref name="name_1"/>
.......
</interceptor-stack>
使用Interceptor-stack
在package中定义 :
<default-interceptor-ref name="stack_name_1"/>
在Action中定义
<action .......>
<interceptor-ref name="stack_name_1"/>
</action>
<pre>
##系统自带拦截器
###Alias Interceptor
####转换参数名,内容不变<pre>
name="alias"
class="com.opensymphony.xwork2.interceptor.AliasInterceptor"
1)实现参数读取的拦截器 Parameters Interceptor
1。把请求中的参数放置到Action中 : 参数 ---》 Action中的 Property(attribute)
2。放置在 default stack ,在覆盖的情况下可以直接使用
name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"
2)实现国际化的拦截器 I18n Interceptor
1。提供读取国际化 properties文件键值的方法
2。放置在 default stack ,在覆盖的情况下可以直接使用
name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor"
3)实现cookie的读写和配置的拦截器 cookie Interceptor
1。提供Action中操作Cookie的方法
2。放置在 default stack ,在覆盖的情况下可以直接使用
name="cookie" class="org.apache.struts2.interceptor.CookieInterceptor"
4)实现struts2校验功能的拦截器 validation Interceptor
1。放置在 default stack ,在覆盖的情况下可以直接使用
2。在Action执行缺省或者配置的方法之前进行调用validation方法
name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"
5)实现Struts中数据(参数)前后共享的 Chainning Interceptor
1。Action前后可以读取上下文的参数 (比如前一个 Action的属性)
2。把所有使用到的Action 的属性放置在上下文的attribute中
6)Create Session Interceptor 自动创建 Session
1。提供 其他基于Session的Interceptor/Action提供session
name="createSession" class="org.apache.struts2.interceptor.CreateSessionInterceptor"
7)异常拦截器 Exception Interceptor
1。把异常定位到一个确切的页面
name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"
8)提供Action操作 Session 与 Application(Servlet context )的方法Scope Interceptor
1。Action直接操作session/application的方法
name="scope" class="org.apache.struts2.interceptor.ScopeInterceptor"
9)文件上传的拦截器 fileuploader interceptor
1。提供基于struts2的文件上传功能
name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"
10)Logger Interceptor 输出Action的名字
<!--******************************************Struts 2中实现文件上传****************************************************************-->
Struts 2中实现文件上传
所需要的配置文件
struts.properties :
在該文件中需要修改臨時文件存儲路徑,文件的大小
struts.multipart.saveDir= /upload 保存目录,值得是realpath
struts.multipart.maxSize=209715200 上传文件的大小限制
struts.multipart.parser=jakarta 解析上传文件信息(multipart/form-data,
上传文件时的form数据类型一定是这种情况)
;struts.xml :
在该文件中配置文件类型,以参数的形式放置在fileUpload拦截器引用中
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/png,application/pdf
</param>
</interceptor-ref>
所需要的操作
在Action 中,直接使用 MultiPartRequestWrapper 来获取上传的文件及参数 (文件上传的时候 ,
通过正常的参数获取渠道---params拦截器无法的到我们需要的参数,因为该拦截器无法解析multipart
类型的请求)
这个时候 我们通过ServletActionContext得到的Request本身就是一个MultiPartRequestWrapper的实
例,我们通过前置类型转换的到该对象。
multipartInfo.getParameter("") 得到我们需要的普通参数
multipartInfo.getFiles(""); 得到我们需要的文件对象(但我们得到该文件的时候,文件
已经被上传,并且保存在struts.properties中所定义的目录中,该 Request被返回给客户端的时候,
临时文件会被删除)
<!--******************************************Struts 2.0中国际化(i18n)应用程序****************************************************************-->
Struts 2.0中国际化(i18n)应用程序
1。使用struts 的 Text标签可以读取在struts.properties文件中定义的消息文件中的消息文本
struts.custom.i18n.resources 定义文件名称(包含路径信息,包含路径信息的时候,路径的分隔符用.)
struts.locale=zh-cn 定义缺省的Location
实际读取的文件: 文件名称+Locale的值+.properties
如果该文件找不到,会读取 文件名称+.properties
如果该文件依旧找不到,显示key的值
在所有的struts ui tag(用于界面显示的标签 都有一个key属性,可以直接读取消息文件中key对对应的值
当出现非ASCII CODE的时候,我们需要 先使用本地语言编码编写文字内容,然后使用jdk提供的
native2ascii工具转码,成为iso8859-1编码的文本文件,否则会出现乱码,该操作与IDE(Eclipse)所设
定的缺省字符集,文件字符集等 无关
2。使用struts标签中以及Action中可以使用getText的方式的到消息文件中的消息文本
在struts中的Text标签也是调用该方法
在Action中的父类ActionSupport中已经定义了该方法,可以直接使用
在Action中(不包含jsp页面、模板页面),不需要定义package.properties文件,但是可以直接读取该文件中的key-value对应信息,
package.properties 局部消息文件
struts.custom.i18n.resources 全局消息文件
定义了局部消息文件后,局部消息文件会首先被读取。
文件名的定义不变 filename_local.properties
3。struts2中使用资源文件的local可以通过参数传递来得到
参数是 java.util.Locale的实例
设置方式: ActionContext.getContext().setLocale(locale参数)
可以通过其它方式来设定locale,或者自我实现,但都不是Struts2的实现方式。
4。struts2 中的国际化有可能出现乱码,出现乱码后的解决方式
引用文件的字符集 (jsp有三个: jsp自己 两个:contentType中的charset和
pageEncoding, html 一个: meta 中的contentType中的charset,模板文件根据模板实现不同,但是与jsp方式类似),预定义不符合,或者三个字符集不一致。
服务器返回给客户端的数据编码与客户端请求不符合
消息文件本身是乱码:不一定是编写的乱码,而是读取的时候使用的字符集与文件本省的字符
集不一直,缺省情况下读取的时候使用操作系统自己的缺省字符集读取,单独xp本身就有四种(其中三种是unicode,unicode的不同类型互补兼容--ASCII例外)
解决方式:
1、转码或过滤器,可以注册使用apache提供的字符集过滤器()
2、更新本地消息文件字符集、编码内容,(另存为新的字符集文件 转成新的字符集编码的文件 或者使用 java提供的 native2ascii转换成iso8859-1的字符集)
3、修改jsp/模板文件中的有关字符集定义,如果jsp自己定义的两个charset不一直,编译本身就会出错,只需要修改一致,如果修改一致后依旧是乱码,可以一起替换成新的字符集
事实上,会涉及字符集只有:utf-8 / iso8859-1 / gbk
CJK字符集 : 中日韩 字符集 JPN-xxxx;外包项目开发的时候才会遇到
<!--******************************************Struts 2.0中实现表单数据校验(Validation)****************************************************************-->
Struts 2.0中实现表单数据校验(Validation)
1。通过拦截器来实现,在Action中的方法被调用之前,首先调用validation方法或者其他验证方法
2。验证结束后,如果验证失败,返回结果(result)为固定的input,返回内容中会包含错误信息。
返回的错误集合以 key为 "fieldErrors"的一个数据对象保存在request中,如果使用模板技术,
该错误信息会显示在该控件的下部(具体位置由模板控制),如果不使用模板技术,我们可以使用Struts2 Tag
读取"fieldErrors"的值进行显示.
3。Struts的校验功能为服务器端校验
校验代码:
配置文件struts.xml中的Action必须要有<result name="input"> </result>
校验代码中需要有 addfieldError方法(尽量在该方法中使用I18N代码,以方便国际化显示,因为这段代码是硬编码,不便于修改)
需要添加
@Override
public void validate() {
addfieldError(....);
}
方法到Action中,所有的验证操作在该方法中实现.
4。如果验证成功,调用Action定义的方法,返回逻辑上应该得到的结果。
发表评论
-
struts2电子书
2011-05-20 10:31 0有三本书: 1.STRUTS2深入详解 2.struts快 ... -
Struts2权威指南--基于WebWork核心的MVC开发(我自己敲的代码)
2011-05-20 10:24 0有三部分: 1.Struts2权威指南--基于WebWork ... -
Struts2权威指南--基于WebWork核心的MVC开发电子书
2011-05-19 12:11 1735Struts+2权威指南--基于WebWork核心的MVC开发 ... -
在使用struts2的datetimepicker标签时候遇到JS错误:dojo未定义错误
2011-05-10 11:44 1678在使用struts2的datetimepick ... -
Struts2 Action读取web根目录下的文件夹Uploadfile内的文件
2011-04-18 16:26 2332web根目录:109UPload 109UP ... -
Struts2中加载资源文件的方式(转载)
2011-04-15 21:59 2347下面小编要和大家分享 ... -
在struts2的配置文件中获取项目根目录(转载)
2011-04-15 21:49 6592在工作中多次这种情况:需要再struts2的配置文件中 ... -
怎么读取struts2.0的资源文件(转载)
2011-04-15 21:47 1473说起这个真是够折磨人的,现在要开始做项目,决定使用struts ... -
Struts2 文件上传 之 文件类型 allowedTypes (转载)
2011-04-11 10:00 913Java代码 '.a' : 'ap ... -
Struts2权威指南--基于WebWork核心的MVC开发栽链接
2011-03-27 15:46 924我是从CSDN上找到的: Struts2权威指南1-21章 ...
相关推荐
以下是Struts2配置文件的一些核心元素和属性的详细说明: 1. **配置文件结构**: Struts2的配置通常存储在一个名为`struts.xml`的XML文件中。这个文件遵循特定的DTD(文档类型定义),如`struts-2.0.dtd`,确保其...
Struts2是一个强大的MVC框架,它通过提供配置文件来管理应用程序的行为,使得开发者能够灵活地定义Action、拦截器和结果映射。本文将深入探讨Struts2的配置文件,特别是`struts.xml`文件中的关键元素和属性。 在...
### Struts2配置文件介绍 #### 一、Struts2的核心配置文件 在Struts2框架中,有多个重要的配置文件用于控制应用的行为与结构,其中最核心的是`struts.xml`文件。此外还包括`web.xml`、`struts.properties`、`...
配置SSH框架时关于Struts2的配置文件
1. **struts-default.xml**:这是Struts2的核心配置文件,位于`struts2-core.jar`库的`/org/apache/struts2/defaults`包内。它包含了框架的基本设置,如拦截器栈、默认Action配置等。 2. **struts-plugin.xml**:这...
以下是对`struts2配置`的详细解释: 首先,要配置Struts2框架,你需要确保拥有正确的库文件。在Struts2.3.3版本中,除了核心库如`struts2-core-2.3.3.jar`和`xwork-core-2.3.3.jar`之外,还需要其他的依赖库,例如`...
### Struts2 配置文件详解 #### 一、引言 在Struts2框架的应用开发过程中,配置文件起到了至关重要的作用。Struts2主要依赖于两种基于XML的配置文件:`web.xml` 和 `struts-config.xml`(通常命名为 `struts.xml`)...
在Struts2中,`struts.xml`文件是核心配置文件,它定义了动作、结果、拦截器等关键组件。在默认情况下,`struts.xml`通常位于`src/main/resources`或在Web应用中是`WEB-INF/classes`目录下。 在描述的问题中,...
在你提供的压缩包中,可能包含了Struts2框架的所有核心组件、依赖库和必要的配置文件,这些都是构建基于Struts2的应用所必需的。 首先,我们来看一下Struts2的核心组件: 1. **Action类**:这是业务逻辑的载体,...
下面将详细讨论Struts2配置文件的相关知识点,包括核心配置文件、连接池配置以及MySQL数据库的配置。 1. **Struts2核心配置文件**:主要由`struts.xml`构成,它是整个Struts2应用的主配置文件。在这个文件中,你...
本文将详细介绍Struts2配置文件中的各个节点及其作用,并为初学者提供深入的理解。 #### 二、Struts2配置文件概览 Struts2的配置文件主要包括以下几个方面: 1. **`struts-default.xml`**:位于`struts2-core-...
- **struts.multipart.maxSize**:指定Struts2文件上传中整个请求内容允许的最大字节数。 6. **其他配置**: - **struts.custom.properties**:指定Struts2应用加载用户自定义的属性文件。 - **struts.mapper....
Struts2的Struts.properties配置文件详解 Struts2是一个基于MVC模式的Web应用程序框架,它提供了一个名为Struts.properties的配置文件,该文件用于配置Struts2的各种参数和设置。下面将对Struts.properties配置文件...
下面将详细介绍Struts2配置文件中的关键元素。 1) **struts-default.xml**: 这是Struts2框架默认加载的配置文件,它包含了基本的配置信息和一些核心组件的定义。例如,`<bean>`标签用于定义不同类型的bean,这些...
Struts应用的配置 多应用模块的配置 Struts配置文件 多应用模块的划分有助于应用的并行开发,提高效率
本资源包含Struts2的核心jar包和相关的配置文件,对于学习和开发基于Struts2的应用来说是非常宝贵的。 首先,我们来了解一下Struts2的核心jar包。这些jar文件通常包括以下组件: 1. **struts2-core.jar**:这是...
本文将详细介绍Struts2的核心配置文件及其元素。 首先,我们来看一下Struts2的主要配置文件: 1. **web.xml**: 这是Web应用程序的部署描述符,包含所有必要的框架组件配置。Struts2会在这里注册过滤器,如`...