struts配置文件详细说明
struts-config.xml配置说明
Struts-config.xml配置文件讲解(一)2007/05/11 11:06Struts的核心是struts-config.xml配置文件,在这个文件里描述了所有的Struts组件。
在这里包括配置主要的组件及次要的组件,下面是struts-config.xml包含主要元素的内容:一、 struts-config.xml的主要元素:<?xml version=”1.0” encoding=”ISO-8859-1”?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN""/struts/dtds/struts-config_1_1.dtd"><struts-config><data-sources><data-source></data-source></data-sources><form-beans><form-bean / ></form-beans><global-forwards><forward / ></global-forwards><action-mappings><action / ></action-mappings><controller / ><message-resources / ><plug-in /></struts-config>注意:以上各元素的顺序是非常重要的,你的struts-config.xml配置文件必须按照这个顺序进行配置,否则在你的容器启动的时候就会出错。
Struts2配置文件通配符的使用说明
Struts2配置文件中使用通配符收藏形式一:调用相同Action中的不同方法<action name="*Action" class="Jcuckoo.LoginRegistAction" method="{1}"><result name="input">/login.jsp</result><result name="error">/error.jsp</result><result name="success">/welcome.jsp</result></action>其中表达式{1}的值name属性值中第一个*的值。
如果用户请求的URL为loginAction.action,则调用Jcuckoo.LoginRegistAction中的login方法;如果用户请求的URL为registerAction.action,则调用Jcuckoo.LoginRegistAction中的register方法;形式二:通过匹配,调用不同的Action的execute方法<action name="*Action" class="Jcuckoo.{1}Action"><result name="input">/login.jsp</result><result name="error">/error.jsp</result><result name="success">/welcome.jsp</result></action>上面没有出现method属性,故默认调用对应的execute方法如果用户请求的URL为LoginAction.action,则调用Jcuckoo.LoginAction中的execute方法;如果用户请求的URL为RegisterAction.action,则调用Jcuckoo.RegisterAction中的execute方法;形式三:动态结果<action name="crud_*" class="Jcuckoo.CrudAction" method="{1}"><result name="input">/input.jsp</result><result>/{1}.jsp</result></action>当处理结果是input时,会转到/input.jsp页面当处理结果是success时,如果crud_create.action,则会执行Jcuckoo.CrudAction中的create方法,并且跳转到/create.jsp;如果crud_delete.action,则会执行Jcuckoo.CrudAction中的delete方法,并且跳转到/delete.jsp;。
Struts2properties配置文件及国际化
Struts2properties配置⽂件及国际化struts2的国际化分三种情况:前台页⾯的国际化,Action类中的国际化,配置⽂件的国际化。
⾸先指定全局的国际化资源⽂件:在配置⽂件struts.xml中引⼊<constant name="struts.custom.i18n.resources" value="message"></constant>(注意位置)或在struts.properties⽂件中指定如下⼀⾏:struts.custom.i18n.resources=message指定的国家化资源⽂件即为xxx_语⾔_国家.propertiesmessage_zh_CN.properties(简体中⽂资源⽂件)message_en_US.properties(美国英语资源⽂件)(1).JSP页⾯上的国际化(使⽤struts2的<s:text .../>):<s:i18n name="message"><s:text name="hello"><s:param>${username}</s:param></s:text></s:i18n>message_en_US.properties⽂件配置:hello=hello world,{0}message_zh_CN.properties⽂件配置:hello=你好,{0}(2)表单元素的Label国际化:未国际化:<s:textfield name="username" label="username"></s:textfield><s:textfield name="password" label="password"></s:textfield>国际化后:<s:textfield name="username" key="uname"></s:textfield><s:textfield name="password" key="pword"></s:textfield>message_en_US.properties⽂件,配置:uname=usernamepword=passwordmessage_zh_CN.properties⽂件,配置:uname=⽤户名pword=密码(3).Action中的国际化:未国际化:this.addFieldError("username", "the username error!");this.addFieldError("password", "the password error!");国际化后:this.addFieldError("username", "username.error");this.addFieldError("password", "password.error");message_en_US.properties⽂件配置:username.error = the username error !password.error = the password error!message_zh_CN.properties⽂件配置:username.error=⽤户名错误!username.error=密码错误!(4).配置⽂件中的国际化:以输⼊校验的LoginAction-validation.xml为例:未国际化:<field name="username"><field-validator type="requiredstring"><param name="trim">true</param><message>username should not be empty!</message></field-validator><field-validator type="stringlength"><param name="minLength">6</param><param name="maxLength">12</param><message>username should be between ${minLength} and ${maxLength}!</message> </field-validator></field>国际化后:<field name="username"><field-validator type="requiredstring"><param name="trim">true</param><message key="username.empty !"></message></field-validator><field-validator type="stringlength"><param name="minLength">6</param><param name="maxLength">12</param><message key="username.size"></message></field-validator></field>message_en_US.properties⽂件配置:username.empty = the username should not be empty !username.size = the size of username shoule be between 6 and 12 !password.empty = the password should not be empty !password.size = the size of password shoule be between 6 and 12 !message_zh_CN.properties⽂件配置:username.empty =⽤户名不能为空 !username.size = ⽤户名长度在6到12 !password.empty =密码不能为空 !password.size = 密码长度在6到12 !注:message_zh_CN.properties这个国际化资源⽂件不允许包含⾮西欧字符。
struts使用技巧
struts使用技巧Struts是一种Java Web应用程序框架,被广泛用于开发MVC (模型-视图-控制器)架构的Web应用程序。
它提供了在Web应用程序中使用的一组工具、类和方法,以简化开发过程。
下面是一些使用Struts的技巧:1. 使用Struts的配置文件:Struts使用一个XML配置文件来定义Web应用程序的行为和流程控制。
配置文件中定义了应用程序中的所有操作、控制器和视图之间的关系。
了解如何正确配置Struts的配置文件可以帮助开发人员更好地组织和管理应用程序。
2. 使用合适的Action类和方法:在Struts中,Action类是控制器的一部分,负责处理请求并将数据传递给视图。
了解不同类型的Action类和方法,以及它们的作用和用法,可以更好地设计和编写应用程序的控制器部分。
3. 使用合适的验证和校验:Struts提供了一组验证和校验的工具和类,可以用于验证用户输入的数据。
了解如何正确使用这些工具和类可以帮助开发人员有效地验证表单数据,并及时地反馈给用户。
4. 使用合适的模型:在Struts中,模型是应用程序的数据和业务逻辑部分。
了解如何正确使用模型可以帮助开发人员更好地组织和管理应用程序的数据和业务逻辑。
5. 使用合适的视图:在Struts中,视图负责展示数据给用户。
了解如何正确使用视图可以帮助开发人员设计和编写用户友好的界面。
6. 使用合适的标签库和EL表达式:Struts提供了一组标签库和EL表达式,可以用于更方便地处理和展示数据。
了解如何正确使用这些标签库和EL表达式可以帮助开发人员更好地展示和处理数据。
7. 使用合适的异常处理机制:在Struts中,异常处理是一个重要的部分,负责处理应用程序中可能出现的异常情况。
了解如何正确使用异常处理机制可以帮助开发人员更好地处理异常,提高应用程序的稳定性。
总之,以上是一些使用Struts的技巧。
熟练掌握这些技巧可以帮助开发人员更好地开发和管理Struts应用程序。
Struts2文件配置介绍
Struts2⽂件配置介绍Struts2⽂件配置介绍struts2structs.xml⽂件配置标签package标签<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><!-- 配置post请求以及repsone的编码格式 --><constant name="struts.i18n.encoding"value="UTF-8"></constant><!-- 配置请求路径的扩展名 --><constant name="struts.action.extension"value="action,,"></constant><!-- 开启热部署 --><constant name="struts.devMode"value="true"></constant><package name="index"namespace="/"extends="struts-default"><action name=""class="erAction"method="toLogin"><result name="toLogin">/WEB-INF/view/login.jsp</result></action></package><include file="com/forward/test/web/action/struts.xml"></include></struts>配置web应⽤的不同模块,⼀般在⼀个功能模块下配置⼀个package,在当前的package下配置这个模块的多个action name属性给不同的模块起不同的名字,随便写,不重复即可namespace属性给不同的模块设置访问的根路径,可以配置成/extends属性表⽰继承, struts-default 是struts2给我们提供的⼀个packageaction标签action 标签表⽰配置⼀个请求name 属性表⽰请求路径的后缀,⼀般表⽰功能模块中的具体请求,name的名字就代表访问路径的名称class 属性表⽰当有请求过来的时候调⽤的是哪个类中的⽅法,配置全类名method 表⽰class 请求调⽤的是class 中的哪个⽅法,指的是具体的⽅法名result标签result 结果配置,⽤于设置不同的⽅法返回值,可以配置不同的返回值对应不同的视图name 属性表⽰结果处理名称,与action中的返回值对应type 属性表⽰指定哪个result 类来处理显⽰的页⾯,默认是内部转发,可以在struts-default 的⽂件中进⾏查看标签体表⽰相对路径,相对于web应⽤开始常量配置默认的常量配置在structs核⼼包中修改常量配置⽅式及加载顺序对于常量的配置, 默认加载的是structs核⼼包中的default.properties,如果通过以下3种进⾏配置,就会按照默认–>1–>2–>3 的顺序加载,后⾯设置的常量会覆盖之前设置的常量1. 在structs.xml⽂件中,在structs的根标签下,书写constant 标签进⾏配置,在项⽬中主要使⽤这种⽅式2. 在src下创建structs.properties⽂件,将内容复制到此⽂件进⾏修改3. 在web.xml⽂件中,配置context-param 第⼀种⽅式第⼆种⽅式第三种⽅式常⽤常量设置struts.i18n.encoding=UTF-8 ⽤于配置接收参数和向外输出中⽂的编码格式⼀般设置为UTF-8struts.action.extension=action, 指定访问action的路径的后缀名,使⽤, 表⽰可以有两个后缀名,可以是action也可以是没有后缀名struts.devMode = false 指定structs是否是以开发模式运⾏,能够⽀持修改配置⽂件后进⾏热部署,所以我们可以将其设置为true动态⽅法调⽤如果⼀个业务模块有多个⽅法,我们可以使⽤动态⽅法调⽤省略action的配置,设置动态⽅法调⽤有两种⽅法⽅法⼀开启动态⽅法调⽤<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>配置action的时候不写method在访问的时候输⼊⽹址http://localhost:8080/webapp/namespace/name!method ⽅法⼆ 通配符⽅式关闭动态⽅法调⽤对于⽅法名可以使⽤⼀个* 通配符,在后⾯的class和method可以使⽤{索引} 来读取前⾯的内容访问路径localhost:8080/webapp/namespace/class_methodstructs2中的默认配置<constant name ="struts.enable.DynamicMethodInvocation" value ="true"></constant><package name ="helloWorld" namespace ="/User" extends ="struts-default"><action name ="d_" class ="com.zhiyou100.struts.web.action.demo3.Demo3Action" ><result name ="success">/hello World.jsp </result></action> </package><package name ="demo3" namespace ="/User" extends ="struts-default"><action name ="*_*" class ="com.zhiyou100.struts.web.action.demo3.{1}" method ="{2}"><result name ="success">/helloWorld.jsp </result></action></package>method的默认值executeresult的默认值是successresult的type的默认值是dispatcherclass的默认值是ActionSupport 其中有execute ⽅法返回值是success配置package下的默认的action,当访问当前包下,如果找不到指定action,就会⾃动寻找默认的action <package name="default"namespace="/user"extends="struts-default"><default-action-ref name="demoAction"></default-action-ref><action name="demoAction"class="erAction"><result>/WEB-INF/view/404.jsp</result></action></package>结果跳转的⽅式结果的跳转⽅式可以通过result的type属性进⾏设置转发转发到指定页⾯对于type属性,默认是dispatcher ,就是转发到响应界⾯,可以不⽤进⾏配置转发到指定action对于type属性需要设置为chain ,并在其下⽅配置<param> 标签<result name="error"type="chain"><param name="namespace">/</param><param name="actionName"></param></result>重定向重定向到指定界⾯对于type属性,设置为redirect ,就是重定向到界⾯,如果需要进⾏重定向就必须进⾏此处的设置<result name="error"type="redirectAction"><param name="namespace">/</param><param name="actionName"></param></result>。
02-Struts2的工作流程及配置文件
Struts2的工作流程及配置文件--- ---Struts2.0的流程图从图中看到Struts2的工作流程如下:1.服务器接收到的请求首先经过一组过滤器链(实际中的其他过滤器可能还包括诸如Spring 的字符过滤器CharactorEncodingFilter、V elocity的过滤器等,一般FilterDispatcher位于过滤器的最后一个执行),过滤器链按照你在web.xml中的配置顺序在接收客户请求时顺序执行,在向客户发送响应时反序执行,Struts2的核心FilterDispatcher在web.xml中的配置如下:<filter><filter-name>setCharactor</filter-name><!-- 配置字符过滤--><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter><filter-name>struts2</filter-name><!-- 配置Struts2过滤器--><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter><filter-mapping><filter-name>setCharactor</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>注意:如果你使用的是W ebLogic6.1作为应用服务器,需要使用FilterDispatcherCompatW eblogic61替代FilterDispatcher。
02Struts2配置详解
Struts 2 Action 2-2
/user!register.action /user!login.action
动态方法调用
作用:减少Action数量 public class UserAction implements Action { 调用UserAction的register()方法 调用UserAction的login()方法 … 使用:actionName!methodName.action public String login() { … 禁用:将属性strutsenableDynamicMethodInvocation设臵为 } false public String register() { … } <action name="user" class="erAction"> } <result name="login">/page/manage.jsp</result> <result name="register">/page/success.jsp</result> <result name="login_input">/page/login.jsp</result> <result name="register_input">/page/register.jsp</result> <result name="error">/page/error.jsp</result> </action> 演示示例:动态方法调用
第二章
struts1配置文件action
2.ClassName:对应配置元素的类,默认是ActionMapping。
3.Forward:制定转发URL路径。
4.Include:制定包含URL路径。
13.type:指定Action类的完整类名。
fo。
9.Roles:指定允许调用该Action的安全角色,多个角色之间以逗号隔开。
10.Scope:指定Form的存在范围,默认是session.type指定的Action的完整名。
11.Unkonwn:如果是true表示可以处理用户发出的所有的无效的ActionURL,默认是false。
12.Validate:指定是否调用ActionForm的validate方法。
5.Input:制定包含表单的URL,当表单验证失败时发送的URL。
:指定和该Action关联的Form名字。改名字必须是在form-bean中定义过的,可写可不写。
7.Path:必须以“/”开头的方位Action的路径。
8.Parameter:指定Action配置参数。在Action的execute()方法中可以调用ActionMapping的getParameter()方法来读取匹配的参数。
struts.xml配置详解
struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件。
分别介绍一下几个struts.xml中常用到的标签1、<include>利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml 中使用<include>标签引入其他配置文件。
比如一个网上购物程序,可以把用户配置、商品配置、订单配置分别放在3个配置文件user.xml、goods.xml和order.xml中,然后在struts.xml中将这3个配置文件引入:struts.xml:01<?xml version="1.0"encoding="UTF-8"?>02<!DOCTYPE struts PUBLIC03"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 04"/dtds/struts-2.0.dtd">0506<struts >07<include file="user.xml"/> 08<include file="goods.xml"/> 09<include file="order.xml"/>10</struts >user.xml:01<?xml version="1.0"encoding="UTF-8"?>02<!DOCTYPE struts PUBLIC03"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 04"/dtds/struts-2.0.dtd">0506<struts >07<package name="wwfy"extends="struts-default">08<action name="login"class="er.LoginAction"> 09<!--省略Action其他配置-->10</action>11<action name="logout"class="er.LogoutAction"> 12<!--省略Action其他配置-->13</action>14</package>15</struts >2、<constant>在之前提到struts.properties配置文件的介绍中,我们曾经提到所有在struts.properties文件中定义的属性,都可以配置在struts.xml文件中。
struts2中struts.xml文件详解
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
</action>
</package>
</struts>
上面代码的两个动作的class属性都指向同一个类,name为这个类起了两个动作别名:test和my。在动作my中,使用了method属性指定要要运行的方法名为my。
在MyAction类中必须要有my方法,代码如下:
<struts>
<package name="demo" extends="struts-default"
>
<action name="test" class="action.MyAction">
</action>
<action name="my" class="action. MyAction" method="my">
<?xml version="1.0" encoding="UTF-8" ?>
详解struts1的配置文件
1.<Data-sources>:用来配置数据源,连接数据库。
<data-source>:具体是数据库连接。
Type:type="org.apache.dbcp.BasicDataSource" Struts中连接数据库的类。
<set-property>:此标签中配置具体的链接内容。
如:<set-property property="driverClassName" value="com.mysql.jdbc.Driver" /> 数据库驱动<set-property property="url" value="jdbc:mysql://localhost:3306/exam" />数据库地址。
<set-property property="username" value="root" />数据库登录名。
<set-property property="password" value="root" />数据库密码。
<set-property property="autoCommit" value="true" />自动提交。
<set-property property="maxActive" value="10" />最大连接数。
<set-property property="maxWait" value="5000" />最大等待数。
<set-property property="defaultAutoCommit" value="false" />默认自动提交。
Struts2的配置文件详解
1.3.包含配置:
在Struts2中可以将一个配置文件分解成多个配置文件,那么我们必须在struts.xml中包含其他配置文件。
<struts>
<includefile="struts-default.xml"/>
<includefile="struts-user.xml"/>
erName= userName;
}
/**
*@returnthepassword
*/
publicString getPassword() {
returnpassword;
}
/**
*@parampasswordthepasswordtoset
*/
publicvoidsetPassword(String password) {
</action>
</package>
</struts>
如上示例的配置,配置了一个名为default的包,该包下定义了一个Action。
1.2.命名空间配置:
考虑到同一个Web应用中需要同名的Action,Struts2以命名空间的方式来管理Action,同一个命名空间不能有同名的Action。
Struts2通过为包指定namespace属性来为包下面的所有Action指定共同的命名空间。
l public Map getSession():返回一个Map对象,该Map对象模拟了HttpSession实例。
l public void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value对转换成session的属性名-属性值对。
struts2配置文件详解
<struts>
<!-- 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<!-- 标准的UI主题,默认的UI主题为xhtml,可以为simple,xhtml或ajax -->
<cosntant name="struts.ui.theme" value="xhtml" />
<!-- spring 托管 -->
<constant name="struts.objectFactory" value="spring" />
<!--
指定加载struts2配置文件管理器,默认为org.apache.struts2.config.DefaultConfiguration
<!-- 设置默认的locale和字符编码 -->
<constant name="struts.locale" value="zh_CN" />
<constant name="struts.i18n.encoding" value="GBK" />
<!-- 该属性指定Struts 2文件上传中整个请求内容允许的最大字节数 -->
Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解
Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解Posted on 2008-02-15 15:52 flustar阅读(2671) 评论(2)编辑收藏所属分类: Struts2学习Struts2也有一段时间了,早就想写一些关于它的文章,可由于自己太懒了,不想动手去写,最近看到blogjava中一位叫max的大侠写的struts2专栏很不错,使我更不想写了(有点自卑啊,呵呵)。
但这段时间自己实在也太无聊了,于是还是写写吧。
每学习一个框架,我们都免不了要学习一些关于的配置文件,struts2也不例外,下面我就讲一下struts2中几个主要的配置文件。
1) struts-default.xml这个文件是struts2框架默认加载的配置文件。
它定义struts2一些核心的bean和拦截器。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><!--struts2中工厂bean的定义--><bean class="com.opensymphony.xwork2.ObjectFactory" name="xwork"/><bean type="com.opensymphony.xwork2.ObjectFactory" name="struts" class="org.a pache.struts2.impl.StrutsObjectFactory"/><bean type="com.opensymphony.xwork2.ActionProxyFactory" name="xwork" class="c om.opensymphony.xwork2.DefaultActionProxyFactory"/><bean type="com.opensymphony.xwork2.ActionProxyFactory" name="struts" class=" org.apache.struts2.impl.StrutsActionProxyFactory"/><!--类型检测bean的定义--><bean type="com.opensymphony.xwork2.util.ObjectTypeDeterminer" name="tiger" c lass="com.opensymphony.xwork2.util.GenericsObjectTypeDeterminer"/><bean type="com.opensymphony.xwork2.util.ObjectTypeDeterminer" name="notiger " class="com.opensymphony.xwork2.util.DefaultObjectTypeDeterminer"/><bean type="com.opensymphony.xwork2.util.ObjectTypeDeterminer" name="struts " class="com.opensymphony.xwork2.util.DefaultObjectTypeDeterminer"/><!--文件上传bean的定义--><bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="struts " class="org.apache.struts2.dispatcher.mapper.DefaultActionMapper"/><bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="composit e" class="positeActionMapper"/><bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="restful " class="org.apache.struts2.dispatcher.mapper.RestfulActionMapper"/><bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="restful2 " class="org.apache.struts2.dispatcher.mapper.Restful2ActionMapper"/><bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" name="s truts" class="org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest" scop e="default" optional="true"/><bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" name="j akarta" class="org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest" sco pe="default" optional="true"/><!--标签库bean的定义--><bean type="org.apache.struts2.views.TagLibrary" name="s" class="org.apache.s truts2.views.DefaultTagLibrary"/><!--一些常用视图bean的定义--><bean class="org.apache.struts2.views.freemarker.FreemarkerManager" name="str uts" optional="true"/><bean class="org.apache.struts2.views.velocity.VelocityManager" name="struts " optional="true"/><bean class="ponents.template.TemplateEngineManager"/><bean type="ponents.template.TemplateEngine" name="ftl " class="ponents.template.FreemarkerTemplateEngine"/><bean type="ponents.template.TemplateEngine" name="vm " class="ponents.template.VelocityTemplateEngine"/><bean type="ponents.template.TemplateEngine" name="jsp " class="ponents.template.JspTemplateEngine"/><!--类型转换bean的定义--><bean type="com.opensymphony.xwork2.util.XWorkConverter" name="xwork1" class= "com.opensymphony.xwork2.util.XWorkConverter"/><bean type="com.opensymphony.xwork2.util.XWorkConverter" name="struts" class= "com.opensymphony.xwork2.util.AnnotationXWorkConverter"/><bean type="com.opensymphony.xwork2.TextProvider" name="xwork1" class="com.op ensymphony.xwork2.TextProviderSupport"/><bean type="com.opensymphony.xwork2.TextProvider" name="struts" class="com.op ensymphony.xwork2.TextProviderSupport"/><!-- Struts2中一些可以静态注入的bean,也就是不需要实例化的 --><bean class="com.opensymphony.xwork2.ObjectFactory" static="true"/><bean class="com.opensymphony.xwork2.util.XWorkConverter" static="true"/><bean class="com.opensymphony.xwork2.util.OgnlValueStack" static="true"/><bean class="org.apache.struts2.dispatcher.Dispatcher" static="true"/><bean class="ponents.Include" static="true"/><bean class="org.apache.struts2.dispatcher.FilterDispatcher" static="true"/><bean class="org.apache.struts2.views.util.ContextUtil" static="true"/><bean class="org.apache.struts2.views.util.UrlHelper" static="true"/><!-- 定义Struts2默认包--><package name="struts-default" abstract="true"><!-- 结果类型的种类--><result-types><result-type name="chain" class="com.opensymphony.xwork2.ActionChainR esult"/><result-type name="dispatcher" class="org.apache.struts2.dispatcher.S ervletDispatcherResult" default="true"/><result-type name="freemarker" class="org.apache.struts2.views.freema rker.FreemarkerResult"/><result-type name="httpheader" class="org.apache.struts2.dispatcher.H ttpHeaderResult"/><result-type name="redirect" class="org.apache.struts2.dispatcher.Ser vletRedirectResult"/><result-type name="redirectAction" class="org.apache.struts2.dispatch er.ServletActionRedirectResult"/><result-type name="stream" class="org.apache.struts2.dispatcher.Strea mResult"/><result-type name="velocity" class="org.apache.struts2.dispatcher.Vel ocityResult"/><result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTRes ult"/><result-type name="plainText" class="org.apache.struts2.dispatcher.Pl ainTextResult"/><result-type name="redirect-action" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/><result-type name="plaintext" class="org.apache.struts2.dispatcher.Pl ainTextResult"/></result-types><!--struts2中拦截器的定义--><interceptors><!--实现在不同请求中相似参数别名的准换--><interceptor name="alias" class="com.opensymphony.xwork2.interceptor. AliasInterceptor"/><!--与Spring整合时自动装配的拦截器--><interceptor name="autowiring" class="com.opensymphony.xwork2.spring. interceptor.ActionAutowiringInterceptor"/><!--构建一个action链,使当前action可以访问前一个action,与<result-t ype="chain" />配合使用--><interceptor name="chain" class="com.opensymphony.xwork2.interceptor. ChainingInterceptor"/><!--负责类型转换的拦截器--><interceptor name="conversionError" class="org.apache.struts2.interce ptor.StrutsConversionErrorInterceptor"/><!--使用配置的name,value来是指cookies --><interceptor name="cookie" class="org.apache.struts2.interceptor.CookieInterceptor"/><!--负责创建httpSession--><interceptor name="createSession" class="org.apache.struts2.intercept or.CreateSessionInterceptor"/><!--输出调试信息--><interceptor name="debugging" class="org.apache.struts2.interceptor.d ebugging.DebuggingInterceptor"/><!--扩展引用--><interceptor name="externalRef" class="com.opensymphony.xwork2.interc eptor.ExternalReferencesInterceptor"/><!--后台执行action负责发送等待画面给用户--><interceptor name="execAndWait" class="org.apache.struts2.interceptor. ExecuteAndWaitInterceptor"/><!--异常处理--><interceptor name="exception" class="com.opensymphony.xwork2.intercep tor.ExceptionMappingInterceptor"/><!--文件上传,解析表单域的内容--><interceptor name="fileUpload" class="org.apache.struts2.interceptor. FileUploadInterceptor"/><!--支持国际化--><interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I 18nInterceptor"/><!--日志记录--><interceptor name="logger" class="com.opensymphony.xwork2.interceptor. LoggingInterceptor"/><!--模型拦截器,当action实现了ModelDriven接口时,负责把getModel的结果放入valueStack中--><interceptor name="modelDriven" class="com.opensymphony.xwork2.interc eptor.ModelDrivenInterceptor"/><!--有生命周期的ModelDriven--><interceptor name="scopedModelDriven" class="com.opensymphony.xwork2. interceptor.ScopedModelDrivenInterceptor"/><!--负责解析请求中的参数,并赋值给action中对应的属性--><interceptor name="params" class="com.opensymphony.xwork2.interceptor. ParametersInterceptor"/><!--实现该Preparable接口的action,会调用拦截器的prepare方法--><interceptor name="prepare" class="com.opensymphony.xwork2.intercepto r.PrepareInterceptor"/><!--负责将action 标签下的param参数值传递给action实例--><interceptor name="staticParams" class="com.opensymphony.xwork2.inter ceptor.StaticParametersInterceptor"/><!--范围转换--><interceptor name="scope" class="org.apache.struts2.interceptor.Scope Interceptor"/><!--用于访问Servlet API--><interceptor name="servletConfig" class="org.apache.struts2.intercept or.ServletConfigInterceptor"/><interceptor name="sessionAutowiring" class="org.apache.struts2.sprin g.interceptor.SessionContextAutowiringInterceptor"/><!--输出action执行时间--><interceptor name="timer" class="com.opensymphony.xwork2.interceptor. TimerInterceptor"/><!--防止表单重复提交--><interceptor name="token" class="org.apache.struts2.interceptor.Token Interceptor"/><!--与token拦截器相似,只是把token保存到HttpSession--><interceptor name="tokenSession" class="org.apache.struts2.intercepto r.TokenSessionStoreInterceptor"/><!--负责表单字段的验证 *-validation.xml--><interceptor name="validation" class="org.apache.struts2.interceptor. validation.AnnotationValidationInterceptor"/><!--负责执行action的validate()--><interceptor name="workflow" class="com.opensymphony.xwork2.intercept or.DefaultWorkflowInterceptor"/><!--存储和重新获取Action 消息/错误/字段错误为Action,实现ValidationAware接口到seesion--><interceptor name="store" class="org.apache.struts2.interceptor.Messa geStoreInterceptor"/><!--添加自动checkbox处理代码,这样检探测checkbox和添加它作为一个参数使用默认值(通常’false’).使用一个指定名字隐藏字段探测没提交的checkbox--><interceptor name="checkbox" class="org.apache.struts2.interceptor.Ch eckboxInterceptor"/><interceptor name="profiling" class="org.apache.struts2.interceptor.P rofilingActivationInterceptor"/><!--JAAS服务拦截器--><interceptor name="roles" class="org.apache.struts2.interceptor.Roles Interceptor"/><!-- 一个基本的拦截器栈 --><interceptor-stack name="basicStack"><interceptor-ref name="exception"/><interceptor-ref name="servletConfig"/><interceptor-ref name="prepare"/><interceptor-ref name="checkbox"/><interceptor-ref name="params"/><interceptor-ref name="conversionError"/></interceptor-stack><!-- 简单的validtion和webflow栈 --><interceptor-stack name="validationWorkflowStack"><interceptor-ref name="basicStack"/><interceptor-ref name="validation"/><interceptor-ref name="workflow"/></interceptor-stack><!-- 文件上传的拦截器栈 --><interceptor-stack name="fileUploadStack"><interceptor-ref name="fileUpload"/><interceptor-ref name="basicStack"/></interceptor-stack><!-- model-driven 栈 --><interceptor-stack name="modelDrivenStack"><interceptor-ref name="modelDriven"/><interceptor-ref name="basicStack"/></interceptor-stack><!-- action链的拦截器栈 --><interceptor-stack name="chainStack"><interceptor-ref name="chain"/><interceptor-ref name="basicStack"/></interceptor-stack><!-- i18n 拦截器栈 --><interceptor-stack name="i18nStack"><interceptor-ref name="i18n"/><interceptor-ref name="basicStack"/></interceptor-stack><!-- 结合preparable和ModenDriven拦截器--><interceptor-stack name="paramsPrepareParamsStack"><interceptor-ref name="exception"/><interceptor-ref name="alias"/><interceptor-ref name="params"/><interceptor-ref name="servletConfig"/><interceptor-ref name="prepare"/><interceptor-ref name="i18n"/><interceptor-ref name="chain"/><interceptor-ref name="modelDriven"/><interceptor-ref name="fileUpload"/><interceptor-ref name="checkbox"/><interceptor-ref name="params"/><interceptor-ref name="conversionError"/><interceptor-ref name="validation"><param name="excludeMethods">input,back,cancel</param></interceptor-ref><interceptor-ref name="workflow"><param name="excludeMethods">input,back,cancel</param></interceptor-ref></interceptor-stack><!--定义默认的拦截器栈 --><interceptor-stack name="defaultStack"><interceptor-ref name="exception"/><interceptor-ref name="alias"/><interceptor-ref name="servletConfig"/><interceptor-ref name="prepare"/><interceptor-ref name="i18n"/><interceptor-ref name="chain"/><interceptor-ref name="debugging"/><interceptor-ref name="profiling"/><interceptor-ref name="scopedModelDriven"/><interceptor-ref name="fileUpload"/><interceptor-ref name="checkbox"/><interceptor-ref name="staticParams"/><interceptor-ref name="params"><param name="excludeParams">dojo\..*</param></interceptor-ref><interceptor-ref name="conversionError"/><interceptor-ref name="validation"><param name="excludeMethods">input,back,cancel,browse</param></interceptor-ref><interceptor-ref name="workflow"><param name="excludeMethods">input,back,cancel,browse</param></interceptor-ref></interceptor-stack><interceptor-stack name="completeStack"><interceptor-ref name="defaultStack"/></interceptor-stack><interceptor-stack name="executeAndWaitStack"><param name="excludeMethods">input,back,cancel</param></interceptor-ref><interceptor-ref name="defaultStack"/><interceptor-ref name="execAndWait"><param name="excludeMethods">input,back,cancel</param></interceptor-ref></interceptor-stack><interceptor name="external-ref" class="com.opensymphony.xwork2.inter ceptor.ExternalReferencesInterceptor"/><interceptor name="model-driven" class="com.opensymphony.xwork2.inter ceptor.ModelDrivenInterceptor"/><interceptor name="static-params" class="com.opensymphony.xwork2.inte rceptor.StaticParametersInterceptor"/><interceptor name="scoped-model-driven" class="com.opensymphony.xwork 2.interceptor.ScopedModelDrivenInterceptor"/><interceptor name="servlet-config" class="org.apache.struts2.intercep tor.ServletConfigInterceptor"/><interceptor name="token-session" class="org.apache.struts2.intercept or.TokenSessionStoreInterceptor"/></interceptors><!--定义默认拦截器为"defaultStack"--><default-interceptor-ref name="defaultStack"/></package></struts>2) struts.xml该文件也是struts2框架自动加载的文件,在这个文件中可以定义一些自己的action,interceptor,package等,该文件的package 通常继承struts-default包。
Struts2框架配置文件详解大全
一、web.xml配置文件任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才会被应用加载。
所有的MVC框架都需要web应用加载一个核心控制器,对于Struts2框架而言,需要加载FilterDispatche r,只要Web应用负责加载FilterDispatc her,FilterDispatc her将会加载饮用的Str uts2框架。
配置FilterDispatc her的代码片段如下:-------------------------------------web.xm l------------------------------------------------------------------- <?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID"version="2.5"><!-- 配置Struts2框架的核心Filter --><filter><!-- 配置Struts2核心Filter的名字 --><filter-name>struts2</filter-name><!-- 配置Struts2核心Filter的实现类 --><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</f ilter-class></filter><!-- 配置Filter拦截的URL --><filter-mapping><!-- 配置Struts2核心FilterDispatcher拦截所有用户请求 --><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>-------------------------------------------------------------------------------------------------------------------- 二、struts.properties配置文件Struts2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。
Struts中文帮助文档详解
3 S TRUTS 详解 (1)3.1.1 传统的Model 1和Model 2.......2 3.1.2 MVC 及其优势.. (3)3.2 S TRUTS 概述 (4)3.2.1 Struts 的起源.............................4 3.2.2 Struts 的体系结构 (4)3.3 S TRUTS 的下载和安装..............................5 3.4 S TRUTS 入门. (6)3.4.1 基本的MVC 示例......................6 3.4.2 Struts 的基本示例...................13 3.4.3 Struts 的流程 (16)3.5 S TRUTS 的配置 (17)3.5.1 配置ActionServlet ...................17 3.5.2 配置ActionForm .....................19 3.5.3 配置Action ..............................20 3.5.4 配置Forward .. (21)3.6 S TRUTS 程序的国际化 (22)3.6.1 Java 程序的国际化.................23 3.6.2 Struts 的国际化.. (26)3.7 使用动态A CTION F ORM (30)3.7.1 配置动态ActionForm .............30 3.7.2 使用动态ActionForm . (31)3.8 S TRUTS 的标签库 (32)3.8.1 使用Struts 标签的基本配置....32 3.8.2 使用html 标签库......................33 3.8.3 使用bean 标签库.....................35 3.8.4 使用logic 标签库..................42 3.9 S TRUTS 的数据校验 (53)3.9.1 ActionForm 的代码校验.........54 3.9.2 Action 的代码校验...................57 3.9.3 结合commons-validator.jar 的校验 (58)3.10 S TRUTS 的异常框架...............................66 3.11 几种常用的A CTION (69)3.11.1 DispatchAction 及其子类......70 3.11.2 使用ForwardAction ..............74 3.11.3 使用IncludeAction ................74 3.11.4 使用SwitchAction (75)3.12 S TRUTS 的常见扩展方法 (76)3.12.1 实现PlugIn 接口....................76 3.12.2 继承RequestProcessor ..........77 3.12.3 继承ActionServlet .. (79)本章小结 (80)3 Struts 详解从实际应用开发的角度而言,Struts 应该是MVC 框架的第一选择。
structs1参数配置详解
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN""/dtds/struts-config_1_2.dtd"><struts-config><data-sources /><form-beans ><form-bean name="loginForm"type="com.fit.struts.form.LoginForm" /></form-beans><global-exceptions /><global-forwards /><action-mappings ><actioninput="/login.jsp"name="loginForm"path="/login"scope="request"type="com.fit.struts.action.LoginAction" ><forward name="suc" path="/suc.jsp"></forward><forward name="fail" path="/fail.jsp"></forward></action></action-mappings><message-resourcesparameter="com.fit.struts.ApplicationResources" /></struts-config>1、首先我们来简单总结以下struts1的处理流程首先:由视图层发出请求,当ActionServlet接收到 HTTP 请求后,在doGet 或 doPost 方法中都会调用process()方法处理请求。
struts.properties文件详解
struts.properties文件详解struts.properties文件是一个标准的properties文件,该文件包含了一系列的key-value对象,每个key就是一个Struts2属性,该key对应的value就是一个Struts2属性值。
struts.propertis文件通常放在Web应用的WEB-INF/classes路径下。
实际上,只要将该文件放在Web应用的CLASSPA TH路径下,Struts2框架就可以加载该文件。
现在的问题是,struts.properties文件哪些key是有效的?即struts.properties 文件里包含的哪些属性是有效的Struts2属性。
下面列出了可以在struts.properties中定义的Struts2属性。
○1struts.configuration该属性指定加载Struts2配置文件的配置文件管理器。
该属性的默认值是org.apache.struts2.config.DefaultConfiguration,这是Struts2默认的配置文件管理器,如果开发者需要实现自己的配置管理器,开发者可以实现一个实现Configuration接口的类,该类可以自己加载Struts2配置文件。
○2struts.locale指定Web应用的默认Locale。
○3struts.i18n.encoding指定Web应用的默认编码集。
该属性对于处理中文请求参数非常有用,对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312。
该属性默认值为UTF-8。
提示:当设置该参数为GBK,相当于调用HttpServleRequest的setCharacterEncoding方法。
○4struts.objectFactory指定Struts2默认的ObjectFactory Bean,该属性默认值是spring。
○5struts.objectFactory.spring.autoWire指定Spring框架的自动装配模式,该属性的默认值是name,即默认根据Bean 的name属性自动装配。
struts2的配置文件
<!-- 定义默认的拦截器 每个Action都会自动引用,如果Action中引用了其它的拦截器,默认的拦截器将无效 -->
<default-interceptor-ref name="mystack"></default-interceptor-ref>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
当前路径为web-inf/classes
struts2的配置文件
类型
struts2共有4类配置文件,
struts.properties:定义框架自身的全局变量。
struts-default.xml:定义框架自身使用的action映射及result定义。
struts-plugin.xml:struts插件使用的配置文件,比如当使用struts和spring结合时就需要在web.xml中引用该配置文件。
-->
<package name="com.kay.struts2" extends="struts-default" namespace="/test">
<interceptors>
<!-- 定义拦截器-->
<interceptor name="timer" class="com.kay.timer"></interceptor>
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Struts配置文件详细说明Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.we b.xml文件是配置所有web应用的而struts-config.xml文件是struts专用的配置文件,事实上也是可以根据需要给这个配置文件起其他名称的.Web应用的发布描述文件:web应用发布描述文件可以在应用开着者,发布者和组装者之间传递配置信息,Web容器在启动的时候从该文件中读取配置信息,根据它来装载和配置web应用.文档类型定义DTD对X ML文档的格式做了定义,DTD吧XML文档划分为元素,属性,实体每一种XML文档都有独自的DTD文件.可以从网上下载.<web-app>元素是web.xml的根元素,其他元素必须嵌入在<we b-app>元素之内.要注意的是子元素也是有顺序的比如必须是首先<servlet>,然后<servlet-mapping>最后<taglib>.为Struts应用配置Web.xml文件:首先最重要的一步是配置ActionServlet,这个用<servlet>标签的servlet-name属性起一个名字叫action,然后用servlet-class属性指定ActionServlet的类.然后用<servlet-mapping>标签的servlet-name属性指定action,在用url-pattern指定接收范围是*.do的请求.不管应用中包含了多少子应用,都只需要配置一个ActionServlet,类来出来应用中的不同的功能,其实者就是不必要的,因为Servlet本身就是多线程的,而且目前Struts只允许配置一个ActionServlet.声明ActionServlet的初始化参数:<servlet>的<init-param>子元素用来配置Servlet的初始化参数.param-name设置config参数名.param-value设置strut s-config.xml的路径参数值.配置欢迎使用清单:如果客户访问Web的时候值是访问了WEB应用的根目录URL.没有具体的指定文件,Web 会自动调用Web的欢迎文件.<welcome-file-list>元素来配置的.通过其中的<welcome-file >欢迎页面</welcome-file>来配置.配置错误处理:尽管Struts框架功能强大的错误处理机制,但是不能保证处理所有的错误或者异常.当错误发生时,如果框架不能处理这种错误,把错误抛弃给Web容器,在默认的情况下web容器会想客户端返回错误信息.如果想避免让客户看到原始的错误信息,可以在Web应用发布描述文件中配置<error-page>元素.通过<error-code>404来定义错误的类型.然后通过<location>要处理错误的JSP页面来对错误进行处理.还可以用<exception-type>来设置异常,然后通过<l ocation>来处理异常的JSP页面来处理异常.配置Struts标签库:这个就和以前学到的JSP自定义标签类似,配置元素为<taglib>来配置.<taglib-uri>这个指定标签库的uri,类似起一个名称.<taglib-location>这个是标签库的位置也就是实际所在的路径.通过这样的方法引入一个标签库,然后在前台JSP页面就可以通过自己定义的URI来调用标签.Struts配置文件:struts-config.xml文件.首先研讨一下org.apache.struts.config包,在struts应用启动的时候会把Struts配置文件信息读取到内存中,并把它们存放在config包中相关的JavaBean类的实例中.包中的每一个类都和struts配置文件中特定的配置元素对应,ModuleConfig在Struts框架中扮演了十分重要的角色,它是整个config包的核心,在Struts运行时来存放整个应用的配置信息.如果有多个子应用都会有一个ModuleConfig对象,它和Struts文件根元素的<struts-config>对应.根元素中包含<form-bean><action><forward>等元素.<struts-config>元素:时Struts配置文件的根元素,和它对应的配置类ModuleConfig类,<s truts-config>元素有8个子元素.他们的DTD定义是data-sources?form-bean? global-excep tion?global-forwards?action-mapping?controller?message-resources?plug-in*在Struts配置文件中,必须按照DTD指定的先手顺序来配置<struts-config>元素的各个子元素,如果颠倒了这些子元素的顺序,会产生错误.<data-sources>元素:用来配置应用所需要的数据源,数据源负责创建和特定的数据库的连接.许多数据源采用连接池的机制实现.以便提高数据库访问的性能.JAVA语言提供了javax.sql.D ataSource接口,所有的数据源都必须实现这个接口.许多应用服务器和Web服务器都提供了数据源组件.很多数据库厂商也提供了数据源的实现.<data-sources>元素包含多个<data-s ource>子元素永远配置特定的数据源.他们可以包含多个<set-property>子元素用于设置数据源的各种属性.配置了数据源以后,就可以在Action类中访问数据源,在Action中定义了get DataSource(HttpRequest)方法,用于获取数据源对象的引用.然后可以利用DataSource对象调用getConnection获取一个连接对象对数据库进行操作.在配置文件中声明多个数据源的时候需要为每一个数据源分配唯一的Key值,通过这个来表示特定的数据源.获取特定的数据源的时候可以用dataSource = getDataSource(reqeust,”A”);<form-beans>元素:用来配置多个ActionForm,包含一个或者N个<form-bean>子元素.每个<form-bean>元素都包含多个属性.className指定和<form-bean>匹配的类.name指定该ActionForm的唯一标识符,这个属性是必须的以后作为引用使用.type指定ActionForm类的完整类名,这个属性也是必须的.注意包名也要加上.<form-property>是指定动态的Form的元素,以后会深入了解.<global-exception>元素:用于配置异常处理,元素可以包含一个或者多个<exception>元素,用来设置JAVA异常和异常处理类ExceptionHandler之间的映射.className指定和元素对应的配置类,默认的不用动.handler指定异常处理类默认是ExceptionHandler.key指定在本地资源文件中异常的消息Key,path指定当前异常发生的时候转发的路径.scope指定ActionM essages实例存放的范围.type指定需要处理异常类的名字,必须的.bundle指定Resource Bu ndle.<global-forwards>元素:用来声明全局转发,元素可以有一个或者N个<forward>元素组成,用于把一个逻辑名映射到特定的URL,通过这种方法Action类或者JSP页面无需指定URL,只要指定逻辑名称就可以实现请求转发或者重定向.这样可以减少控制组件和视图的聚合.易于维护.className对应的配置类.contextRelative如果为true表示当path属性以/开头的时候,给出的是对应的上下文URL默认是转发路径的逻辑名,必须写.path转发或者重定向的URL,必须写必须是以/开头.redirect设置为true的时候表示执行重定向操作,此项为false 的时候,表示执行请求转发操作.重定向与请求转发的区别以后就是重定向是把请求生成应答给客户端然后在重新发送给定向的URL,浏览器地址栏会有显示.而转发就是直接把请求转发给本应用的另一个文件,不生成应答所以客户端IE没显示.<action-mapping>元素:包含一个或者N个<action>元素,描述了从特定的请求路径到响应的Action的映射.在<action>元素中可以包含多个<exception>和<forward>子元素,他们分别配置局部异常处理和局部转发.attribute设置Action关联的ActionForm在request或者session范围内的key.就是在request或者session共享内的名称.className对应配置元素的类.默认的是ActionMapping.forward指定转发URL路径include指定包含URL路径.input指定包含表单的URL,当表单验证失败的时候发送的,指定和该Action关联的Form名字.该名字必须是在form-bean中定义过的,可写可不写.path必须/开头的方位Action的路径.p arameter指定Action配置参数.在Action的execute()方法中可以调用ActionMapping的get Parameter()方法来读取匹配的参数.roles指定允许调用该Action的安全角色,多个角色之间逗号格开.scope指定Form的存在范围.默认是session.tyep指定Action的完整类名.unknown 如果是true表示可以处理用户发出的所有的无效的ActionURL默认是false.validate指定是否调用ActionForm的validate方法.<controller>元素:用于配置ActionServlet.buffreSize指定上载文件的输入缓冲大小.该属性为可选默认4096.className指定元素对应的配置类,ControllerConfig.然后是contentType 指定响应结果内容类型和字符编码,该属性为可选,默认是text/html如果在Action或者JSP网页也设置了类型内容,会覆盖这个.locale指定是否把Locale对象保存到当前用户的session中默认false.tempDir指定处理文件上载的临时工作目录.nochache如果是true在响应结果中加入特定的头参数.<message-resources>元素:用来配置Resource Bundle.用于存放本地文本消息文件.cla ssName元素对应的配置类.MessageResourcesConfig.factory指定消息的工厂类.key指定文件存放的Servlet对象中采用的属性Key.null指定如何处理未知消息.parameter指定消息的文件名.<plug-in>元素:用于配置Struts插件.配置多应用模块:所有的子应用都可以共享同一个ActionServlet实例,但是每个子应用都有单独的配置文件.把应用划分为多个子应用模块.首先为每个应用创建单独的Struts配置文件,在web.xml的ActionServlet配置代码中添加几个子应用信息.采用元素来实现应用之间的切换.Digester组件:是一个Apache的另一个开源代码项目.当Struts被初始化的时候,首先会读取并解析配置文件,框架采用Digester组件来且西配置文件.然后创建config包中的对象.者对象用于存放配置信息.其实配置文件不难,只要都理其中的原理就OK了.真正实际的项目开发中,采用的工具例如Eclipse系列,提供了相应的插件,在创建一个Struts工程的时候配置文件的标签都是自动生成的,而我们只需要往里面填写属性就OK了.Struts配置文件详细讲解Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.web.xml文件是配置所有web应用的而struts-config.xml文件是struts专用的配置文件,事实上也是可以根据需要给这个配置文件起其他名称的.Web应用的发布描述文件:web应用发布描述文件可以在应用开着者,发布者和组装者之间传递配置信息,Web容器在启动的时候从该文件中读取配置信息,根据它来装载和配置web应用.文档类型定义DTD对XML文档的格式做了定义,DTD吧XML文档划分为元素,属性,实体每一种XML文档都有独自的DTD文件.可以从网上下载.<web-app>元素是web.xml的根元素,其他元素必须嵌入在<web-app>元素之内.要注意的是子元素也是有顺序的比如必须是首先<servlet>,然后<servlet-mapping>最后<taglib>.为Struts应用配置Web.xml文件:首先最重要的一步是配置ActionServlet,这个用<servlet>标签的servlet-name属性起一个名字叫action,然后用servlet-class属性指定ActionServlet的类.然后用<servlet-mapping>标签的servlet-name属性指定action,在用url-pattern指定接收范围是*.do的请求.不管应用中包含了多少子应用,都只需要配置一个ActionServlet,类来出来应用中的不同的功能,其实者就是不必要的,因为Servlet本身就是多线程的,而且目前Struts只允许配置一个ActionServlet.声明ActionServlet的初始化参数:<servlet>的<init-param>子元素用来配置Servlet的初始化参数.param-name设置config参数名.param-value设置struts-config.xml的路径参数值.配置欢迎使用清单:如果客户访问Web的时候值是访问了WEB应用的根目录URL.没有具体的指定文件,Web会自动调用Web的欢迎文件.<welcome-file-list>元素来配置的.通过其中的<welcome-file>欢迎页面</welcome-file>来配置.配置错误处理:尽管Struts框架功能强大的错误处理机制,但是不能保证处理所有的错误或者异常.当错误发生时,如果框架不能处理这种错误,把错误抛弃给Web容器,在默认的情况下web容器会想客户端返回错误信息.如果想避免让客户看到原始的错误信息,可以在Web应用发布描述文件中配置<error-page>元素.通过<error-code>404来定义错误的类型.然后通过<location>要处理错误的JSP页面来对错误进行处理.还可以用<exception-type>来设置异常,然后通过<location>来处理异常的JSP页面来处理异常.配置Struts标签库:这个就和以前学到的JSP自定义标签类似,配置元素为<taglib>来配置.<taglib-uri>这个指定标签库的uri,类似起一个名称.<taglib-location>这个是标签库的位置也就是实际所在的路径.通过这样的方法引入一个标签库,然后在前台JSP页面就可以通过自己定义的URI来调用标签.Struts配置文件:struts-config.xml文件.首先研讨一下org.apache.struts.config包,在struts应用启动的时候会把Struts配置文件信息读取到内存中,并把它们存放在config包中相关的JavaBean类的实例中.包中的每一个类都和struts 配置文件中特定的配置元素对应,ModuleConfig在Struts框架中扮演了十分重要的角色,它是整个config包的核心,在Struts运行时来存放整个应用的配置信息.如果有多个子应用都会有一个ModuleConfig对象,它和Struts文件根元素的<struts-config>对应.根元素中包含<form-bean><action><forward>等元素.<struts-config>元素:时Struts配置文件的根元素,和它对应的配置类ModuleConfig类,<struts-config>元素有8个子元素.他们的DTD定义是data-sources?form-bean?global-exception?global-forwards?action-mapping?controller?message-resources?plug-in*在Struts 配置文件中,必须按照DTD指定的先手顺序来配置<struts-config>元素的各个子元素,如果颠倒了这些子元素的顺序,会产生错误.<data-sources>元素:用来配置应用所需要的数据源,数据源负责创建和特定的数据库的连接.许多数据源采用连接池的机制实现.以便提高数据库访问的性能.JAVA语言提供了javax.sql.DataSource接口,所有的数据源都必须实现这个接口.许多应用服务器和Web服务器都提供了数据源组件.很多数据库厂商也提供了数据源的实现.<data-sources>元素包含多个<data-source>子元素永远配置特定的数据源.他们可以包含多个<set-property>子元素用于设置数据源的各种属性.配置了数据源以后,就可以在Action类中访问数据源,在Action中定义了getDataSource(HttpRequest)方法,用于获取数据源对象的引用.然后可以利用DataSource对象调用getConnection获取一个连接对象对数据库进行操作.在配置文件中声明多个数据源的时候需要为每一个数据源分配唯一的Key值,通过这个来表示特定的数据源.获取特定的数据源的时候可以用dataSource = getDataSource(reqeust,”A”);<form-beans>元素:用来配置多个ActionForm,包含一个或者N个<form-bean>子元素.每个<form-bean>元素都包含多个属性.className指定和<form-bean>匹配的类.name指定该ActionForm的唯一标识符,这个属性是必须的以后作为引用使用.type指定ActionForm类的完整类名,这个属性也是必须的.注意包名也要加上.<form-property>是指定动态的Form的元素,以后会深入了解.<global-exception>元素:用于配置异常处理,元素可以包含一个或者多个<exception>元素,用来设置JAVA异常和异常处理类ExceptionHandler之间的映射.className指定和元素对应的配置类,默认的不用动.handler指定异常处理类默认是ExceptionHandler.key指定在本地资源文件中异常的消息Key,path指定当前异常发生的时候转发的路径.scope指定ActionMessages实例存放的范围.type指定需要处理异常类的名字,必须的.bundle指定Resource Bundle.<global-forwards>元素:用来声明全局转发,元素可以有一个或者N个<forward>元素组成,用于把一个逻辑名映射到特定的URL,通过这种方法Action类或者JSP页面无需指定URL,只要指定逻辑名称就可以实现请求转发或者重定向.这样可以减少控制组件和视图的聚合.易于维护.className对应的配置类.contextRelative如果为true表示当path属性以/开头的时候,给出的是对应的上下文URL默认是转发路径的逻辑名,必须写.path转发或者重定向的URL,必须写必须是以/开头.redirect设置为true的时候表示执行重定向操作,此项为false的时候,表示执行请求转发操作.重定向与请求转发的区别以后就是重定向是把请求生成应答给客户端然后在重新发送给定向的URL,浏览器地址栏会有显示.而转发就是直接把请求转发给本应用的另一个文件,不生成应答所以客户端IE没显示.<action-mapping>元素:包含一个或者N个<action>元素,描述了从特定的请求路径到响应的Action的映射.在<action>元素中可以包含多个<exception>和<forward>子元素,他们分别配置局部异常处理和局部转发.attribute设置Action关联的ActionForm在request或者session范围内的key.就是在request或者session共享内的名称.className对应配置元素的类.默认的是ActionMapping.forward指定转发URL路径include指定包含URL路径.input指定包含表单的URL,当表单验证失败的时候发送的,指定和该Action关联的Form名字.该名字必须是在form-bean中定义过的,可写可不写.path必须/开头的方位Action的路径.parameter指定Action配置参数.在Action的execute()方法中可以调用ActionMapping的getParameter()方法来读取匹配的参数.roles指定允许调用该Action的安全角色,多个角色之间逗号格开.scope指定Form的存在范围.默认是session.tyep指定Action的完整类名.unknown如果是true表示可以处理用户发出的所有的无效的ActionURL默认是false.validate指定是否调用ActionForm的validate方法.<controller>元素:用于配置ActionServlet.buffreSize指定上载文件的输入缓冲大小.该属性为可选默认4096.className指定元素对应的配置类,ControllerConfig.然后是contentType指定响应结果内容类型和字符编码,该属性为可选,默认是text/html如果在Action或者JSP网页也设置了类型内容,会覆盖这个.locale指定是否把Locale对象保存到当前用户的session中默认false.tempDir指定处理文件上载的临时工作目录.nochache如果是true在响应结果中加入特定的头参数.<message-resources>元素:用来配置Resource Bundle.用于存放本地文本消息文件.className元素对应的配置类.MessageResourcesConfig.factory指定消息的工厂类.key指定文件存放的Servlet对象中采用的属性Key.null指定如何处理未知消息.parameter指定消息的文件名.<plug-in>元素:用于配置Struts插件.配置多应用模块:所有的子应用都可以共享同一个ActionServlet实例,但是每个子应用都有单独的配置文件.把应用划分为多个子应用模块.首先为每个应用创建单独的Struts配置文件,在web.xml的ActionServlet配置代码中添加几个子应用信息.采用<forward>元素来实现应用之间的切换.Digester组件:是一个Apache的另一个开源代码项目.当Struts被初始化的时候,首先会读取并解析配置文件,框架采用Digester组件来且西配置文件.然后创建config包中的对象.者对象用于存放配置信息.其实配置文件不难,只要都理其中的原理就OK了.真正实际的项目开发中,采用的工具例如Eclipse系列,提供了相应的插件,在创建一个Struts工程的时候配置文件的标签都是自动生成的,而我们只需要往里面填写属性就OK了.Struts 2.0 ---struts.xml 核心配置说明Struts 框架的核心配置文件就是struts.xml 配置文件,该文件主要负责管理Struts 2 框架的业务控制器Action。