A. struts2.xml 不放在src下时如何在web.xml中配置路径
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<init-param>
<迅芹param-name>config<闭链/param-name>
<param-value>struts-default.xml,struts-plugin.xml,config/struts.xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</亩态毕url-pattern>
</filter-mapping>
B. struts2在web.xml中配置标签库有什么作用
用struts2框架不需要在web.xml配置标签库的位置,因为tomcat会自凳禅亏动在xxx.jar中找META-INF目录下的xxx.tld文件,如枣神果要是标签库文件没有放到xxx.jar文件中需要在web.xml中配袭液置
C. 教你如何配置Struts2 web.xml文件
Struts 的基本配置
前面大致了解了Struts 框架的基本内容 但这些基本内容都必须建立在Struts 的配置文件基础之上 这些配置文件的配置信首渣档息也是Struts 应用的核心部分
配置Struts web xml文件
任何MVC框架都需要与Web应用整合 这就不得不借助于Struts web xml文件 只有配置在Struts web xml文件中Servlet才会被应用加载
通常 所有的MVC框架都需要Web应用加载一个核心控制器 对于Struts 框架而言 需要加载FilterDispatcher 只要Web应用负责加载FilterDispatcher FilterDispatcher将会加载应用的Struts 框架
因为Struts 将核心控制器设计成Filter 而不是一个普通Servlet 故为了让Web应用加载FilterDispacher 只需要在Struts web xml文件中配置FilterDispatcher即可
配置FilterDispatcher的代码片段如下
< ! 配置Struts 核心Filter的名字 >struts< /FILTER NAME> < FILTER CLASS> apache struts dispatcher FilterDispatcher < /FILTER CLASS>< INIT PARAM>< ! 配置Struts 框架默认加载的Action包者乱结构 >< PARAM NAME>actionPackages< /PARAM NAME>< PARAM VALUE> apache struts showcase person< /PARAM VALUE>< /INIT PARAM>< ! 配置Struts 框架的配置提供者类 >< INIT PARAM>< PARAM NAME>configProviders < /PARAM NAME>< PARAM VALUE>lee MyConfigurationProvider< /PARAM VALUE>< /INIT PARAM>< /FILTER>
正如上面看到的 当配置Struts 的FilterDispatcher类时 可以指定一系列的初始化参数 为该Filter配置初始化参数时 其中有 个初始化参数有特殊意义
config 该参数的值是一个以英文逗号( )隔开的字符串 每个字符串都是一个XML配置文件的位置 Struts 框架将自动加载该属性指定的系列配置文梁孝件
actionPackages 该参数的值也是一个以英文逗号( )隔开的字符串 每个字符串都是一个包空间 Struts 框架将扫描这些包空间下的Action类
configProviders 如果用户需要实现自己的ConfigurationProvider类 用户可以提供一个或多个实现了ConfigurationProvider接口的类 然后将这些类的类名设置成该属性的值 多个类名之间以英文逗号( )隔开
除此之外 还可在此处配置Struts 常量 每个 元素配置一个Struts 常量 其中
子元素指定了常量name 而
子元素指定了常量value
提示 关于Struts 常量的讲解 请参阅本书的 节
在Struts web xml文件中配置了该Filter 还需要配置该Filter拦截的URL 通常 我们让该Filter拦截所有的用户请求 因此使用通配符来配置该Filter拦截的URL
下面是配置该Filter拦截URL的配置片段
< ! 配置Filter拦截的URL >< FILTER MAPPING>< ! 配置Struts 的核心FilterDispatcher拦截所有用户请求 >< FILTER NAME>struts< /FILTER NAME>/*< /URL PATTERN>< /FILTER MAPPING>
配置了Struts 的核心FilterDispatcher后 基本完成了Struts 在web xml文件中的配置
如果Web应用使用了Servlet 以前的规范 因为Web应用不会自动加载Struts 框架的标签文件 因此必须在Struts web xml文件中配置加载Struts 标签库
配置加载Struts 标签库的配置片段如下
< ! 配置Struts 标签库的URI >/s< /TAGLIB URI>< ! 指定Struts 标签库定义文件的位置 >< TAGLIB LOCATION>/WEB INF/struts tags tld< /TAGLIB LOCATION>< /TAGLIB>
在上面配置片段中 指定了Struts 标签库配置文件物理位置 /WEB INF/struts tags tld 因此我们必须手动复制Struts 的标签库定义文件 将该文件放置在Web应用的WEB INF路径下
如果Web应用使用Servlet 以上的规范 则无需在Struts web xml文件中配置标签库定义 因为Servlet 规范会自动加载标签库定义文件
提示 Struts 的标签库定义文件包含在struts core jar文件里 在struts core jar文件的META INF路径下 包含了一个struts tag tld文件 这个文件就是Struts 的标签库定义文件 Servlet 规范会自动加载该标签库文件 对于Servlet 以上的规范 Web应用自动加载该标签库定义文件 加载struts tag tld标签库定义文件时 该文件的开始部分包含如下代码片段
< TAGLIB>< ! 定义标签库的版本 >< TLIB VERSION> < /TLIB VERSION>< ! 定义标签库所需的JSP版 >< JSP VERSION> < /JSP VERSION>< SHORT NAME>s< /SHORT NAME> /struts tags< /URI> < /TAGLIB>
lishixin/Article/program/Java/ky/201311/28777
D. 修改了struts2配置文件的位置,如何在web.xml中配置
struts.properties文件,该文件定义了Struts 2框架的大量属性,开发者可以通过改变这些属性来满足应用的需求.
struts.properties配置文件
struts.properties文件是一个标准的Properties文件,该文件包含了系列的key-value对象,每个key就是一个Struts 2属性,该key对应的value就是一个Struts 2属性值.
struts.properties文件通常放在Web应用的WEB-INF/classes路径下. 实际上, 只要将该文件放在Web应用的CLASSPATH路径下, Struts 2框架就可以加载该文件.
struts.properties配置文件提供了一种改变框架默认行为的机制. 一般来讲我们没必要修改这个文件,除非你想拥有一个更加友好的开发调试环境。struts.properties文件中所包含的所有属性都可以在web.xml配置文件中使用"init-param"标签进行配置,或者在struts.xml文件中使用“constant”标签进行配置.
可以被修改的属性允许改变Freemarker选项--改变“action-mapping”类、决定是否允许XML配置文件重载及确定默认用户接口主题等行为。
一个名为“default.properties”的属性文件包含在“Struts2-Core”JAR文件中。你可以在你项目源文件路径的根目录下创建一个名为“struts.properties”的文件,来对某个属性进行修改。这样你就可以增加你想要修改的属性。新的属性值将会覆盖默认值。
以下为struts.properties中定义的Struts 2属性:
struts.configuration
该属性指定加载Struts 2配置文件的配置文件管理器.该属性的默认值是org.apache.Struts2.config.DefaultConfiguration, 这是Struts 2默认的配置文件管理器.如果需要实现自己的配置管理器,开发者则可以实现一个实现Configuration接口的类,该类可以自己加载Struts 2配置文件.
struts.locale
指定Web应用的默认Locale.
struts.i18n.encoding
指定Web应用的默认编码集.该属性对于处理中文请求参数非常有用,对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312;
提示:当设置该参数橘型为GBK时,相当于调用HttpServletRequest的setCharacterEncoding方法.
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.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.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和flase两个值,该属性的 默认值是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.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文件了.
E. struts2 web.xml 配置org.apache.struts2.dispatcher.ng.listener.StrutsListener
<!-- struts2 group begin -->
<filter>
<filter-name>struts-prepare</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
<!-- <init-param>培举仿
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,common/struts.xml</param-value>
</init-param> -->
</filter>
<filter>
<filter-name>struts-execute</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-execute</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
</listener>
<filter>配纤
<filter-name>struts-cleanup</filter-name>
<答烂filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- struts2 group end -->
F. 如何在web.xml配置struts2
具体的过滤器类返乱禅变了,2.0是这样陪缺配置漏尘 struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* 2.1以后是这样配置 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter struts2 /*
G. struts2中web.xml的配置
/* ------->所有的请求 不管你后缀名是什么 都会拦截到 比如:http://localhost:8080/xxx/index.jsp
*.action ------->请求是以ation 结尾的 会被拦截到 比如:http://localhost:8080/xxx/index.action
H. struts2 web.xml配置
最容易错的就是。你的struts.xml中的
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
这个部分一定要与你的struts2的版本对应的一样。建议你下载官方的包,官网
http://struts.apache.org/download.cgi#struts2181
下载truts-2.1.8.1-all.zip (110mb) [PGP] [MD5]
解压找到wapps文件。然后找到struts2-blank-2.1.8这个文件,它是一个关于struts2的空白文件,都给我们配置好了我们需要的包和一切环境。
你试一试。这个可能对你很有帮助。
看看struts.xml 如何写的