Struts2初级教程05 配置详解

一.web.xml

FilterDispatcher可以包含一些初始化参数

1.config 要加载的xml文件配置,默认加载struts-defalut.xml,struts-plugin.xml, struts.xml

2.actionPackages以逗号分隔java包名列表,Struts2框架会扫描这些包中的Action类.

3.configproviders实现了ConfigurationProvider接口java类列表,逗号分隔.ConfigurationProvider接口描述了框架的配置,默认Struts2框架使用StrutsXmlCOnfigurationProvider从xml文档中加载它的配置.configProviders参数让你可以指定自己的ConfigurationProvider接口实现.

4.*    任何其它的参数被当作Struts2的常量 .

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>ch05-01web.xml</display-name>

	<filter>
		<filter-name>struts</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
		<!-- 配置xml文件    没有成功 -->
		<!-- <init-param>
			<param-name>config</param-name>
			<param-value>userStruts.xml</param-value>
		</init-param> -->
		<!-- 配置Action -->
		<init-param>
			<param-name>actionPackages</param-name>
			<param-value>com.aciton,org.action</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>struts</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!--  不建议这样配置 -->
	<jsp-config>
		<taglib>
			<taglib-uri>/struts-tags</taglib-uri>
			<taglib-location>/WEB-INF/struts-tags.tld</taglib-location>
		</taglib>
	</jsp-config>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>
</web-app>



二.struts.properties

Struts2有默认设置struts2-core-*.jar/org/apache/struts2/default.properties,如果你写了struts.properties文件会覆盖默认的设置.

### 配置Struts2的Configuration接口在的实现类,默认为
### com.opensymphony.xwork2.config.impl.DefaultConfiguration
### 你可以实现com.opensymphony.xwork2.config.Configuration
### 接口,然后以自愧 方式获取配置参数传给Struts2.
# struts.configuration=org.apache.struts2.config.DefaultConfiguration

# struts.locale=en_US

struts.i18n.encoding=UTF-8

### 更改默认的对象工厂,继承com.opensymphony.xwork2.ObjectFactory
### 某些情况支持缩写 如 spring
# struts.objectFactory = spring

### 当使用SpringObjectFactory时自动装配逻辑,有效值:name, type, auto, constructor 默认为name
struts.objectFactory.spring.autoWire = name

### 集成spring时,是否应该缓存类的实例
struts.objectFactory.spring.useClassCache = true

### 设置该常量为true保证自动装配策略总是有效。该常量默认值是false。
struts.objectFactory.spring.autoWire.alwaysRespect = false

### 该常量指定Struts 2的类型检测机制,通常支持tiger和notiger两个值。
#struts.objectTypeDeterminer = tiger
#struts.objectTypeDeterminer = notiger

### 该常量指定处理multipart/form-data的MIME类型(文件上传)请求的框架,该常量支持cos、pell和jakarta等常量值,即分别对应使用cos的文件上传框架、pell上传及common-fileupload文件上传框架。该常量的默认值为jakarta。
### 注意  如果需要使用cos或者pell的文件上传方式,则应该将对应的JAR文件复制到Web应用中。例如,使用cos上传方式,则需要自己下载cos框架的JAR文件,并将该文件放在WEB-INF/lib路径下。
# struts.multipart.parser=cos
# struts.multipart.parser=pell
struts.multipart.parser=jakarta


### 该常量指定上传文件的临时保存路径,该常量的默认值是javax.servlet.context.tempdir
### uses javax.servlet.context.tempdir by default
struts.multipart.saveDir=
### 该常量指定Struts 2文件上传中整个请求内容允许的最大字节数。
struts.multipart.maxSize=2097152

# struts.custom.properties=application,org/apache/struts2/extension/custom

#struts.mapper.class=org.apache.struts2.dispatcher.mapper.DefaultActionMapper

struts.action.extension=action,,

struts.serve.static=true

struts.serve.static.browserCache=true

struts.enable.DynamicMethodInvocation = true

struts.enable.SlashesInActionNames = false

struts.tag.altSyntax=true

struts.devMode = false

struts.i18n.reload=false

struts.ui.theme=xhtml
struts.ui.templateDir=template
#sets the default template type. Either ftl, vm, or jsp
struts.ui.templateSuffix=ftl

struts.configuration.xml.reload=false

struts.velocity.configfile = velocity.properties

struts.velocity.contexts =

struts.velocity.toolboxlocation=

struts.url.http.port = 80
struts.url.https.port = 443
struts.url.includeParams = none

# struts.custom.i18n.resources=testmessages,testmessages2

struts.dispatcher.parametersWorkaround = false

#struts.freemarker.manager.classname=org.apache.struts2.views.freemarker.FreemarkerManager

struts.freemarker.templatesCache=false

struts.freemarker.beanwrapperCache=false

struts.freemarker.wrapper.altMap=true

struts.freemarker.mru.max.strong.size=100

struts.xslt.nocache=false

struts.mapper.alwaysSelectFullNamespace=false

struts.ognl.allowStaticMethodAccess=false

struts.el.throwExceptionOnFailure=false

struts.ognl.logMissingProperties=false

struts.ognl.enableExpressionCache=true
没有完全的记录完,太多了,有时间放下心来整理...

去找了一篇相关的文章

http://book.51cto.com/art/200905/126142.htm

struts.properties配置文件

Struts 2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。除此之外,Struts 2框架还包含一个struts.properties文件,该文件定义了Struts 2框架的大量属性(也被称为Struts 2常量),开发者可以通过改变这些属性(常量)来满足应用的需求。

struts.properties文件是一个标准的Properties文件,该文件包含了系列的key-value对象,每个key就是一个Struts 2常量,该key对应的value就是一个Struts 2常量值。

注意  配置Struts 2常量值有3个地方,①在struts.properties文件中配置常量;②在web.xml文件中配置FilterDispatcher指定初始化参数来配置常量;③在struts.xml文件中使用<constrant.../>元素来配置常量。

struts.configuration:该常量指定加载Struts 2配置文件的配置文件管理器。该常量的默认值是org.apache.struts2.config.DefaultConfiguration,这是Struts 2默认的配置文件管理器。如果需要实现自己的配置管理器,开发者则可以实现一个实现Configuration接口的类,该类可以自己加载Struts 2配置文件。

struts.locale:指定Web应用的默认Locale。

struts.i18n.encoding:指定Struts 2应用编码的默认使用字符集。该常量对于处理中文请求参数非常有用,如需获取中文请求参数值,应该将该常量值设置为GBK或者GB2312。

提示  当设置该参数为GBK时,相当于执行了HttpServletRequest的setCharacterEncoding("GBK")方法。

struts.objectFactory:指定Struts 2默认的ObjectFactory Bean,该常量默认值是spring。

struts.objectFactory.spring.autoWire:指定Spring框架的自动装配模式,该常量的默认值是name,即默认根据Bean的name进行自动装配。

struts.objectFactory.spring.useClassCache:该常量指定整合Spring框架时,是否缓存Bean实例,该常量只允许使用true和false两个值,它的默认值是true。通常不建议修改该常量值。

struts.objectFactory.spring.autoWire.alwaysRespect:设置该常量为true保证自动装配策略总是有效。该常量默认值是false。

struts.objectTypeDeterminer:该常量指定Struts 2的类型检测机制,通常支持tiger和notiger两个值。

struts.multipart.parser:该常量指定处理multipart/form-data的MIME类型(文件上传)请求的框架,该常量支持cos、pell和jakarta等常量值,即分别对应使用cos的文件上传框架、pell上传及common-fileupload文件上传框架。该常量的默认值为jakarta。
注意  如果需要使用cos或者pell的文件上传方式,则应该将对应的JAR文件复制到Web应用中。例如,使用cos上传方式,则需要自己下载cos框架的JAR文件,并将该文件放在WEB-INF/lib路径下。

struts.multipart.saveDir:该常量指定上传文件的临时保存路径,该常量的默认值是javax.servlet.context.tempdir。

struts.multipart.maxSize:该常量指定Struts 2文件上传中整个请求内容允许的最大字节数。

struts.custom.properties:该常量指定Struts 2应用加载用户自定义的属性文件,该属性文件配置的常量不会覆盖struts.properties文件中配置的常量。如果需要加载多个自定义属性文件,多个自定义属性文件的文件名应以英文逗号(,)隔开。

struts.mapper.class:指定将HTTP请求映射到指定Action的映射器,Struts 2提供了默认的映射器:org.apache.struts2.dispatcher.mapper.DefaultActionMapper。默认映射器根据请求的前缀与Action的name属性完成映射。

struts.action.extension:该常量指定需要Struts 2处理的请求后缀,该常量的默认值是action,即所有匹配*.action的请求都由Struts 2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。

提示  《Struts 2权威指南》第一版面市以来,笔者收到一些读者来信询问如何改变Struts 2拦截请求的后缀,他们认为Struts1是在web.xml文件中配置拦截*.do,而在Struts 2中找不到相应的配置,于是感到很迷惘,其实Struts 2更简单,只要修改此处即可。

struts.serve.static:该常量设置是否通过JAR文件提供静态内容服务,该常量只支持true和false值,该常量的默认属性值是true。

struts.serve.static.browserCache:该常量设置浏览器是否缓存静态内容。当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该常量为false。

struts.enable.DynamicMethodInvocation:该常量设置Struts 2是否支持动态方法调用,该常量的默认值是true。如果需要关闭动态方法调用,则可设置该常量为false。

struts.enable.SlashesInActionNames:该常量设置Struts 2是否允许在Action名中使用斜线,该常量的默认值是false。如果开发者希望允许在Action名中使用斜线,则可设置该常量为true。

struts.tag.altSyntax:该常量指定是否允许在Struts 2标签中使用表达式语法,因为通常都需要在标签中使用表达式语法,故此常量应该设置为true,该常量的默认值是true。

struts.devMode:该常量设置Struts 2应用是否使用开发模式。如果设置该常量为true,则可以在应用出错时显示更多、更友好的出错提示。该常量只接受true和false两个值,该常量的默认值是false。通常,应用在开发阶段,将该常量设置为true,当进入产品发布阶段后,则该常量设置为false。

struts.i18n.reload:该常量设置是否每次HTTP请求到达时,系统都重新加载资源文件。该常量默认值是false。在开发阶段将该常量设置为true会更有利于开发,但在产品发布阶段应将该常量设置为false。

提示  开发阶段将该常量设置为true,将可以在每次请求时都重新加载国际化资源文件,从而可以让开发者看到实时开发效果;产品发布阶段应该将该常量设置为false,是为了提供响应性能,每次请求都需要重新加载资源文件会大大降低应用的性能。

struts.ui.theme:该常量指定视图标签默认的视图主题,该常量的默认值是xhtml。

struts.ui.templateDir:该常量指定视图主题所需要模板文件的位置,该常量的默认值是template,即默认加载template路径下的模板文件。

struts.ui.templateSuffix:该常量指定模板文件的后缀,该常量的默认常量值是ftl。该常量还允许使用ftl、vm或jsp,分别对应FreeMarker、Velocity和JSP模板。

struts.configuration.xml.reload:该常量设置当struts.xml文件改变后,系统是否自动重新加载该文件。该常量的默认值是false。

struts.velocity.configfile:该常量指定Velocity框架所需的velocity.properties文件的位置。该常量的默认值为velocity.properties。

struts.velocity.contexts:该常量指定Velocity框架的Context位置,如果该框架有多个Context,则多个Context之间以英文逗号(,)隔开。

struts.velocity.toolboxlocation:该常量指定Velocity框架的toolbox的位置。

struts.url.http.port:该常量指定Web应用所在的监听端口。该常量通常没有太大的用途,只是当Struts 2需要生成URL时(例如url标签),该常量才提供Web应用的默认端口。

struts.url.https.port:该常量类似于struts.url.http.port常量的作用,区别是该常量指定的是Web应用的加密服务端口。

struts.url.includeParams:该常量指定Struts 2生成URL时是否包含请求参数。该常量接受none、get和all三个值,分别对应于不包含、仅包含GET类型请求参数和包含全部请求参数。

struts.custom.i18n.resources:该常量指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开。

struts.dispatcher.parametersWorkaround:对于某些Java EE服务器,不支持HttpServlet Request调用getParameterMap()方法,此时可以设置该常量值为true来解决该问题。该常量的默认值是false。对于WebLogic、Orion和OC4J服务器,通常应该设置该常量为true。

struts.freemarker.manager.classname:该常量指定Struts 2使用的FreeMarker管理器。该常量的默认值是org.apache.struts2.views.freemarker.FreemarkerManager,这是Struts 2内建的FreeMarker管理器。

struts.freemarker.templatesCache:设置该常量为true可以启用FreeMarker的模板缓存功能。该常量值默认是false。

struts.freemarker.beanwrapperCache:设置该常量为true可以启用FreeMarker的BeanWrapper缓存功能。该常量值默认是false。

struts.freemarker.wrapper.altMap:该常量只支持true和false两个值,默认值是true。通常无需修改该常量值。

struts.xslt.nocache:该常量指定是否关闭XSLT Result的样式表缓存。当应用处于开发阶段时,该常量通常被设置为true;当应用处于产品使用阶段时,该常量通常被设置为false。

struts.configuration.files:该常量指定Struts 2框架默认加载的配置文件,如果需要指定多个默认加载的配置文件,则多个配置文件的文件名之间以英文逗号(,)隔开。该常量的默认值为struts-default.xml,struts-plugin.xml,struts.xml,看到该常量值,读者应该明白为什么Struts 2框架默认加载struts.xml文件了。

struts.mapper.alwaysSelectFullNamespace:=false

struts.ognl.allowStaticMethodAccess:设置是否允许在OGNL表达式中调用静态方法,该常量值的默认值是false。



四.struts-default.xml

基础配置文件,提供默认设置,由框架自动加载.


五.struts.xml

1.bean配置
struts.xml struts-default.xml 结构是一样的是通过*.dtd文件定义的.
bean元素属性
属性是否必须说明
classbean的类明
typebean类实现的接口
namebean的名字,在好玩儿相同type属性的bean中,名字必须唯一
Scopebean的范围,有效值:default, singleton, request, session, thread
Static是否使用静态方法注入,如果指定type属性,则不要把该属性设置为true
optionalbean是否是可选的


1.框架的IoC窗口建立bean实例,然后将实例注入到框架内部对象中.
<bean type="com.opensymphony.xwork2.ObjectFactory" name="myfactory" class="com.company.myapp.MyObjectFactory"/>
bean被注入到框架内部,和内部对象协作,框架要知道bean在类型,所以在配置bean时,要使用type属性,以指明实现的接口.



2.通过bean的静态方法向bean注入值
<bean class="com.opensymphony.xwork2.ObjectFactory" static="true"/>





2 常量(Constant)的配置
常量改变插件行为(也就是配置Struts2属性).
Struts2会默认搜索
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
越靠后,文件优先级越高.


struts*.xml配置常量要使用constant元素
constant元素属性
属性是否必需说明
name常量名字
value常量值
<struts>
        <constant name="struts.devMode" value="true" />
</struts>


struts.properties常量配置
struts.devMode = true

web.xml常量配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	<display-name>debugStruts2.3.4</display-name>

	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
		<init-param>
			<param-name>struts.devMode</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>

</web-app>
首先配置在struts.xml中.




3.包 package 配置
像java中的包,包可以继承另一个包这点像java类.
package定义包,属性name必须,指定key,唯一
abstract属性可选,设置包为抽象的,抽象包不能有action定义,抽象包只可作为父类包.可以有result,拦截器/栈,可在抽象包定义默认值,提高重用性,struts-default包就是抽象包.
package属性
属性是否必需说明
name跑旱船其它包引用时的键
extends指定要扩展的包
nameespace指定名称空间
abstract声明为抽象包,抽象包不可以action

<?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">

<!-- START SNIPPET: xworkSample -->
<struts>
 
<!--定义default包,继承自struts-default.xml中定义的strut-default抽象包-->
    <package name="default" extends="struts-default">
    </package>
<!--定义skill包,继承上面的default包,命名空间/skill-->
    <package name="skill" extends="default" namespace="/skill">
    </package>
<!--同上-->
    <package name="employee" extends="default" namespace="/employee">
    </package>

</struts>




4.命名空间 namespace 配置
package 的 namespace属性可以将包中的action配置为不同的命名空间,在不同命令空间中,可以存在相同名字的action,Struts2会根据命令空间与action名字来标识一个action.
Struts2接收请求会将URL分为namespace/name,如果没有找到对应的namespace,会在默认的namespace ""(双引号)中查找,也就是说当你定义package时,没有namespace属性,那么它就是默认namespace
Struts2还支持"/"
<?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>

	<package name="default"><!-- 命名空间为默认的    "" -->
		<action name="foo">
			<result>foo.jsp</result>
		</action>

		<action name="bar">
			<result>bar.jsp</result>
		</action>
	</package>

	<package name="package1" namespace="/"><!-- 命名空间     "/" -->
		<action name="moo">
			<result>moo.jsp</result>
		</action>
	</package>

	<package name="package2" namespace="/barspace"><!-- 命名空间     "/barspace" -->
		<action name="moo">
			<result>moo.jsp</result>
		</action>
	</package>

	<package name="package3" namespace="/barspace/aaaa/bbbb/cccc"><!-- 命名空间     "/barspace/aaaa/bbbb/cccc"  这是一个命名空间,在请求时不会分为四级 -->
		<action name="moo">
			<result>moo.jsp</result>
		</action>
	</package>


</struts>
1.请求/barspace/bar.action,框架先找/barspace命名空间,没有bar.action,框架在去默认命令空间找,有bar.action在执行bar.action.
2.请求/barspace/foo.action,框架先找/barspace命名空间,没有foo.action,框架在去默认命令空间找,有foo.action在执行foo.action.
3.请求/moo.action,框架会在/命名空间中找,找到moo.action.
4.请求/foo.action./命名空间中找,没有,又去默认命名空间找,执行foo.action
5.命名空间 "/barspace/aaaa/bbbb/cccc" 这是一个命名空间,在请求时不会分为四级.




5.包含 Include 配置
被包含的文件也要有相同完整的格式.
struts-tags.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="struts-tags-ui.xml"/>
    <include file="struts-tags-non-ui.xml" />
</struts>
或请包含的文件放在一个jar中 
<include file="org/com/user/struts-user.xml" />




6.拦截器 interceptor 配置
interceptor允许你在action执行前后插入代码执行.

















六.struts-plugin.xml

插件
struts2-spring-plugin-2.*.jar
struts2-sitemesh-plugin=2.*.jar
struts2-struts1-plugin-2.*.jar
<?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>
	<!-- 定义String ObjectFactory -->
	<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring"
		class="org.apache.struts2.spring.StrutsSpringObjectFactory" />

	<!-- 将spring ObjectFactory设置 为Struts2默认ObjectFactory -->
	<constant name="struts.objectFactory" value="spring"></constant>

	<!-- 定义spring-defalut包 -->
	<package name="spring-default">
		<!-- 拦截器列表 -->
		<interceptors>
			<interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>
			<interceptor name="sessionAutowiring" class="org.apache.struts2.springinterceptor.SessionContextAutowiringInterceptor"/>
		</interceptors>
	</package>
	
</struts>	












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值