struts-config.xml的配置
1、<struts-config> 元素
<struts-cofnig> 元素是 Struts 配置文件的根元素。<struts-config> 元素有 8 个子元素。在 Struts 配置文件中,必须按照它的 DTD 指定的先后顺序来配置 <struts-config> 元素的各个子元素,如果颠倒了这些子元素在配置文件中的顺序,在 Struts 应用启动时就会生成 XML 解析错误。
它的DTD定义如下:
|
1
2
3
|
<!ELEMENT struts-config(data-sources?,form-beans?,global-exception?,global-forwards?,action-mappings?,controller?,message-resources*,plug-in*))> |
配置时要按照上面的顺序。
2、 <form-beans> 元素
| 属性 | 描述 |
| className | 指定和 <form-bean> 元素对应的配置类,默认值为 org.apache.struts.config.FormBeanConfig 。如果在这里设置自定义的类,该类必须扩展 FormBeanConfig 类 |
| name | 指定该 ActionForm Bean 的唯一标识符,整个 Struts 框架用该标识符来引用这个 bean 。该属性是必需的。 |
| type | 指定 ActionForm 类的完整类名(类的包名也包含在内),该属性是必需的 |
|
1
2
3
|
<form-beans > <form-bean name="HelloForm" type="com.yourcompany.struts.form.HelloForm" /></form-beans> |
如果配置动态 ActionForm Bean ,还必须配置 <form-bean> 元素的 <form-property> 子元素。 <form-property> 元素用来指定表单字段,它有四个属性。
| 属性 | 描述 |
| className | 指定和 <form-property> 元素对应的配置类,默认值为 org.apache.struts.config.FormPropertyConfig |
| initial | 以字符串的形式设置表单字段的初始值。如果没有设置该属性,则基本类型的表单字段的默认值为 0 ,对象类型的表单字段的默认值为 null |
| name | 指定表单字段的名字。该属性是必需的 |
| type | 指定表单字段的类型。如果表单资源为 Java 类,必须给出完整的类名。该属性是必需的。 |
|
1
2
3
4
5
6
7
8
|
<form-beans > <form-bean name="HelloForm" type="com.yourcompany.struts.form.HelloForm" /> <form-bean name="userForm" type="org.apache.struts.DynaActionForm"> <form-property name="firstName" type="java.long.String"></form-property> <form-property name="lastName" type="java.long.String"></form-property> <form-property name="age" type="java.lang.Integer" initial="18"></form-property> </form-bean> </form-beans> |
3、<global-exceptions> 元素
| 属性 | 描述 |
| className | 指定和 <exception> 元素对应的配置类。默认值为 org.apache.struts.config.ExceptionConfig |
| handler | 指定异常处理类。默认值为 org.apache.struts.action.ExceptionHandler |
| key | 指定在 Resource Bundle 中描述该异常的消息 key |
| path | 指定当异常发生时的转发路径 |
| scope | 指定 ActionMessages 实例的存放范围,可选值包括 request 和 session ,此项的默认值为 request |
| type | 指定所需处理的异常类的名字。此项是必需的 |
| bundle | 指定 Resource Bundle |
|
1
2
3
4
5
6
7
8
|
<strong><global-exception> <exception key="global.error.invalidlogin" path="/security/signin.jsp" scope="request" type="netstore.framework.exception.InvalidLoginException" /></global-exception> </strong> |
4、 <global-forwards> 元素
| 属性 | 描述 |
| className | 和 <forward> 元素对应的配置类,默认值为 org.apache.struts.action.ActionForard |
| contextRelative | 如果此项为 true ,表示当 path 属性以“ / ”开头时,给出的是相对于当前上下文的 URL 。此项的默认值为 false |
| name | 转发路径的逻辑名。此项是必需的 |
| path | 指定转发或重定向的 URL 。此项是必需的,必需以“ / ”开头。当 contextRelative 属性为 false 时,表示 URL 路径相对于当前应用 (application-relative) ;当 contextRelative 属性为 true 时,表示 URL 路径相对于当前上下文 (context-relative) |
| redirect | 当此项为 true 时,表示执行重定向操作;当此项为 false 时,表示执行请求转发操作。此项默认值为 false |
例如:
|
1
2
3
4
|
<global-forwards> <forward name="forward1" path="/Action1.do"></forward> <forward name="forward2" path="/JSP2.jsp"></forward></global-forwards><span style="font-family:SimSun;"> </span> |
如果JSP1.jsp把请求转发给Action1可以<html:link forward="forward1">/或者 <logic:forward name="forward1"/>
如果Action1的excecute()方法把请求转发给JSP2.jsp的话可以这样:return(mapping.findForward("forward2"));
5、<action-mappings> 元素
| 属性 | 描述 |
| attribute | 设置和 Action 关联的 ActionForm Bean 在 request 或 session 范围内的属性 key 。例如,假定 Form Bean 存在于 request 范围内,并且此项为“ myBean ”,那么 request.getAttribute(“MyBean”) 就可以返回该 Bean 的实例。此项为可选项。 |
| className | 和 <action> 元素对应的配置元素。默认值为 org.apache.struts.action.ActionMapping |
| forward | 指定转发的 URL 路径 |
| include | 指定包含的 URL 路径 |
| input | 指定包含输入表单的 URL 路径。当表单验证失败时,将把请求转发到该 URL |
| name | 指定和该 Action 关联的 ActionForm Bean 的名字。该名字必需在 <form-bean> 元素中定义过。此项是可选项 |
| path | 指定访问 Action 的路径,它以“ / ”开头,没有扩展名 |
| parameter | 指定 Action 的配置参数。在 Action 类的 execute() 方法中,可以调用 ActionMapping 对象的 getParameter() 方法来读取该配置参数 |
| roles | 指定允许调用该 Action 的安全角色。多个角色之间以逗号隔开。在处理请求时, RequestProcessor 会根据该配置项来决定用户是否有调用 Action 的权限 |
| scope | 指定 ActionForm Bean 的存在范围,可选值为 request 和 session 。默认值为 session |
| type | 指定 Action 类的完整类名 |
| unknown | 如果此项为 true ,表示可以处理用户发出的所有无效的 Action URL 。默认值为 false |
| validate | 指定是否要先调用 ActionForm Bean 的 validate() 方法。默认值为 true |
提示: <action> 元素的 forward 、 include 和 type 属性相互排斥,也就是说只能设置其中的一项。 forward 属性的作用和 org.apache.struts.actions.ForwardAction 类相同。 Include 属性的作用和 org.apache.struts.actions.IncludeAction 类相同。
如果在 <action> 元素中定义了局部的 <forward> 元素,它的优先级别高于全局的 <forward> 元素。
例如:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<action-mappings > <!-- input 验证失败时的转发路径 --> <!-- path请求访问的Action的路径 --> <!-- <forward>定义请求转发的路径 --> <!-- path指明调用者(JSP)能通过中心控制器ActionServlet找到该Action --> <action path="/HelloWorld" type="com.yourcompany.struts.action.HelloAction" name="HelloForm" scope="request" validate="true" input="/hello.jsp"> <forward name="SayHello" path="/hello.jsp" /> </action></action-mapping> |
工作原理:
这段代码表明,如果用户的请求的URI为"HelloWord.do",那么Struts框架会把请求转发给Hello.Action;与HelloAction关联的表单为:HelloForm,它位于request范围。Struts框架会首先在配置文件中检索匹配的<form-bean>元素:
|
1
2
3
|
<form-beans > <form-bean name="HelloForm" type="com.yourcompany.struts.form.HelloForm" /></form-beans> |
再把请求转发给HelloAction之前,先会调用HelloForm的validate()方法,如果表单验证失败则把请求转发给<action>元素的
input属性指定的hello.jsp文件。
对应的hello.jsp文件如下:
|
1
2
3
4
5
6
|
<html:form action="/HelloWorld.do" focus="userName"><bean:message key="hello.jsp.promt.person"/><html:text property="userName" maxlength="16" size="16"></html:text><html:submit property="submit" value="Submit"></html:submit><html:reset></html:reset></html:form> |
6、<controller> 元素
| 属性 | 描述 |
| bufferSize | 指定上载文件的输入缓冲的大小。该属性为可选项,默认值为 4096 。 |
| className | 指定和 <controller> 元素对应的配置类。默认值为 org.apache.struts.config.ControllerConfig 。 |
| contentType | 指定响应结果的内容类型和字符编码。该属性为可选项,默认值为 text/html 。如果在 Action 和 JSP 网页中也设置了内容类型和字符编码,将会覆盖该设置 |
| locale | 指定是否把 Locale 对象保存到当前用户的 Session 中。默认值为 false |
| processorClass | 指定负责处理请求的 Java 类的完整类名。默认值为 org.apache.struts.action.RequestProcessor 。如果把此项设置为自定义的类,那么应该保持该类扩展了 org.apache.struts.action.RequestProcessor 类 |
| tempDir | 指定处理文件上传的临时目录。如果此项没有设置,将采用 Servlet 容器为 Web 应用分配的临时工作目录 |
| nochache | 如果为 true ,在响应结果中将加入特定的头参数: Pragma , Cache-Control 和 Expires ,防止页面被存储在客户浏览器的缓存中。默认值为 false |
如果应用包含多个子应用,可以在每个子应用的 Struts 配置文件中配置 <controller> 元素。这样,尽管这些子应用共享同一个 ActionServlet 对象,但是它们可以使用不同的 RequestProcessor 类。
|
1
2
3
4
|
<controller contentType="tex/html";charset="UTF-8" locale="true" processClass="CustomRequestProcessor"/> |
7、 <message-resources> 元素
| 属性 | 描述 |
| className | 和 <message-resources> 元素对应的配置类。默认值为 org.apache.struts.config.MessageResourcesConfig |
| factory | 指定消息资源的工厂类。默认值为 org.apache.struts.util.PropertyMessageResourcesFactory 类 |
| key | 指定 Resource Bundle 存放在 ServletContext 对象中时采用的属性 key 。默认值为由 Globals.MESSAGES_KEY 定义的字符串常量。只允许有一个 Resource Bundle 采用默认的属性 key |
| null | 指定 MessageResources 类如何处理未知的消息 key 。如果此项为 true ,将返回空字符串。如果此项为 false ,将返回类似“ ???global.label.missing??? ”的字符串。该属性为可选项,默认值为 true |
| parameter | 指定 Resource Bundle 的消息资源文件名。 |
许多 Struts 客户化标签都通过 bundle 属性来指定 Resource Bundle ,标签的 bundle 属性和 <message-resources> 元素的 key 属性匹配。
如:<bean:message key="hello.jsp.page.hello"/>调用
<bean:message key="hello.jsp.page.hello" bundle="images">指定bundle
<message-resources parameter="com.yourcompany.struts.ApplicationResources1" />配置
<message-resources parameter="com.yourcompany.struts.ApplicationResources2" key="images" />配置
hello.jsp.page.hello=Hello com.yourcompany.struts.ApplicationResources1.2定义
10 <plug-in> 元素
<plug-in> 元素用于配置 Struts 插件。<plug-in> 元素的属性
| 属性 | 描述 |
| className | 指定 Struts 插件类。插件类必需实现 org.apache.struts.action.PlugIn 接口 |
|
1
2
3
|
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/></plug-in> |
11 配置多应用模块
(3) 采用 <forward> 元素或 SwitchAction 类来实现子应用之间的切换。
例如:
|
1
2
3
4
5
6
7
8
|
<init-param> <param-name>config</param-name><!--参数名 --> <param-value>/WEB-INF/struts-config.xml</param-value><!--文件名 --></init-param><init-param> <param-name>config/application2</param-name> <param-value>/WEB-INF/struts-module2.xml</param-value></init-param> |
第二个<init-param>的名字必须以"config/"开头。子模块之间的切换有两种方式:
1、使用<forward>元素,全局或者局部的。但是它的contexRelative的属性应该设置为true.如:
|
1
2
3
4
5
6
|
<forward name="toModule2" contexRelative="true" path="/module2/index.do" redirect="true"></forward> |
2.使用org.apcahe.struts.actions.SwitchAction类
|
1
2
3
4
5
|
<action-mapping> <action path="/toModule" type="org.apache.struts.actions.SwitchAction" /></action-mapping> |
struts-config.xml的配置的更多相关文章
- Struts框架中struts-config.xml文件配置小结
弄清楚struts-config.xml中各项元素的作用,对于我们构建web项目有莫大的好处.<struts-config>是struts的根元素,它主要有8个子元素,DTD定义 如下: ...
- Spring Web工程web.xml零配置即使用Java Config + Annotation
摘要: 在Spring 3.0之前,我们工程中常用Bean都是通过XML形式的文件注解的,少了还可以,但是数量多,关系复杂到后期就很难维护了,所以在3.x之后Spring官方推荐使用Java Conf ...
- 学习Struts--Chap03:struts.xml常用配置(基础)
1.package属性 name:包名 用来唯一的指定一个package.package可以扩展,当一个package扩展自 另一个package时该package会在本身配置的基础上加入扩展的pac ...
- JavaWeb_(Struts2框架)struts.xml核心配置、动态方法调用、结果集的处理
此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...
- mzy,struts学习(二):struts.xml的配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...
- SSH web.xml文件配置
启动一个WEB项目的时候, WEB容器会去读取它的配置文件web.xml web.xml中配置的加载优先级:context-param -> listener -> filter -> ...
- struts2在web.xml中配置详情
web.xml是web应用中载入有关servlet信息的重要配置文件,起着初始化servlet,filter等web程序的作用. 通常,全部的MVC框架都须要Web应用载入一个核心控制器.那採取什么方 ...
- Spring+Struts+Mybatis+Shiro整合配置
Jar包
- Spring介绍及配置(XML文件配置和注解配置)
本节内容: Spring介绍 Spring搭建 Spring概念 Spring配置讲解 使用注解配置Spring 一.Spring介绍 1. 什么是Spring Spring是一个开源框架,Sprin ...
随机推荐
- js中实现继承的几种方式
首先我们了解,js中的继承是主要是由原型链实现的.那么什么是原型链呢? 由于每个实例中都有一个指向原型对象的指针,如果一个对象的原型对象,是另一个构造函数的实例,这个对象的原型对象就会指向另一个对象的 ...
- line-height属性总结
line-height属性的继承性: 子元素不设置line-height时, 在父元上设置带单位的值和百分比时会先计算父元素的line-height大小然后继承过来,在父元素上设置无单位的数值时,子 ...
- [LeetCode] Zuma Game 题解
题目 题目 Think about Zuma Game. You have a row of balls on the table, colored red(R), yellow(Y), blue(B ...
- EntityFramework Core不得不注意的性能优化意外收获,你会用错?
前言 这两天在着实研究EF Core项目当中对于一些查询也没实际去检测,于是想着利用放假时间去实际测试下,结果本文就出来了,too young,too simple,后续博主会从底层翻译表达式树弄起, ...
- es 6点滴记录
关于babel和webpack的使用: Babel 所做的只是帮你把'ES6 模块化语法'转化为'CommonJS 模块化语法',其中的require exports 等是 CommonJS 在具体实 ...
- [转]使用sklearn进行集成学习——实践
转:http://www.cnblogs.com/jasonfreak/p/5720137.html 目录 1 Random Forest和Gradient Tree Boosting参数详解2 如何 ...
- DC平衡双向控制串行器 转接IC GM8913:LVTTL转FPD-LINK III芯片
1 概述 GM8913型DC平衡双向控制串行器,其主要功能是实现将10或12位并行控制信号和一路时钟信号串行为一路2.8Gbps高速串行数据:同时接收低速通道信号实现模式配对的功能.芯片内部集 ...
- jmeter读取文件进行参数化时随机取值实现
jmeter能用来做参数化的组件有几个,但是都没有随机取值的功能,遇到随机取值的需求怎么办呢? 突发奇想,可以用函数_StringFromFile来实现,先来介绍下此函数: 此函数位于函数助手中, 函 ...
- ArrayList,LinkedList的对比
ArrayList,LinkedList都是Collection接口的通用实现方式,两者采用了不用的存储策略,用来适应不同场合的需要. 实现方式 ArrayList的内部采用集合的方式存储数据 唯一需 ...
- html php javascript 页面跳转
<!-- html标签跳转 --><meta http-equiv="refresh" content="3;url=http://localhost/ ...