struts 2在web.xml中配置详情

web.xml是web应用中加载有关servlet信息的重要配置文件,起着初始化servlet,filter等web程序的作用。

通常,所有的MVC框架都需要Web应用加载一个核心控制器,那采取什么方法加载这样的核心控制器呢,servlet或filter成为了很好的选择,

因为它们会随着web服务的启用而自动的载入。对于Struts 2框架而言,需要加载FilterDispatcher,

只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载应用的Struts 2框架。

因为Struts 2将核心控制器设计成Filter,而不是一个普通Servlet。故为了让Web应用加载FilterDispacher,只需要在web.xml文件中配置FilterDispatcher即可。

在web.xml里面配置struts。如果是2.1.3之前的版本,用 org.apache.struts2.dispatcher.FilterDispatcher,

以后的版本则配置org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。

<!-- 配置Struts 2框架的核心Filter -->
<filter>
  <!-- 配置Struts 2核心Filter的名字 -->
  <filter-name>struts2</filter-name>
 <!-- 配置Struts 2核心Filter的实现类 -->
  <!-- 更多精彩内容:http://www.bianceng.cn/Programming/Java/ -->
 <filter-class>org.apache.struts2.dispatcher.FilterDispatcher
  </filter-class>  

  <init-param>
      <param-name>config </param-name>
      <param-value>struts-default.xml,struts-plugin.xml,/WEB-INF/struts.xml </param-value>
  </init-param>   

  <init-param>
  <!-- 配置Struts 2框架默认加载的Action包结构 -->
   <param-name>actionPackages</param-name>
   <param-value>org.apache.struts2.showcase.person</param-value>
  </init-param>  

  <!-- 配置Struts 2框架的配置提供者类 -->
  <init-param>
   <param-name>configProviders </param-name>
   <param-value>lee.MyConfigurationProvider</param-value>
  </init-param>  

  <!-- 配置Struts 2框架的常量 -->
  <init-param>
     <param-name>truts.enable.DynamicMethodInvocation</param-name>
     <param-value>false</param-value>
  </init-param>
  <init-param>
    <param-name>struts.devMode</param-name>
    <param-value>false</param-value>
  </init-param>
  <init-param>
    <param-name>struts.objectFactory</param-name>
    <param-value>spring</param-value>
  </init-param>   

</filter>
<!-- 配置Filter拦截的URL -->
<filter-mapping>
  <!-- 配置Struts 2的核心FilterDispatcher拦截所有用户请求 -->
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

其中有3个初始化参数有特殊意义:

config:该参数的值是一个以英文逗号(,)隔开的字符串,每个字符串都是一个XML配置文件的位置。Struts 2框架将自动加载该属性指定的系列配置文件。如果没有指定该属性则默认使用如下三个配置文件struts-default.xml,struts-plugin.xml,struts.xml

actionPackages:该参数的值也是一个以英文逗号(,)隔开的字符串,每个字符串都是一个包空间,Struts 2框架将扫描这些包空间下的Action类。

configProviders:如果用户需要实现自己的ConfigurationProvider类,用户可以提供一个或多个实现了ConfigurationProvider接口的类,

然后将这些类的类名设置成该属性的值,多个类名之间以英文逗号(,)隔开。

除此之外,还可在此处配置Struts 2常量,每个<init-param>元素配置一个Struts 2常量,其中<param-name>子元素指定了常量name,

而<param-value>子元素指定了常量value。

至于filter-mapping属性是过滤器(Filter)必须的一个属性,用于过滤请求的路径,此处一般就设为/*形式,

对所有请求uri进行拦截(过滤),除非你要做一些特殊的处理。

到此,配置完struts2的核心控制器后,基本完成了struts2在web.xml文件中的配置。

注意点:如果web容器是J2EE1.3(servlet2.3),由于不会自动加载struts的标签库,所以需要在web.xml文件中手动加载struts的标签库,

文件名struts-tags.tld,一般放在WEB-INF下面,可以自己指定但如果web容器是J2EE1.4(servlet2.4),那么web容器会自动加载标签库,

Struts 2的标签库定义文件包含在struts2-core-2.0.6.jar文件里,在struts2-core-2.0.6.jar文件的META-INF路径下,包含了一个struts-tag.tld文件,

这个文件就是Struts 2的标签库定义文件,Servlet 2.4规范会自动加载该标签库文件,其中struts-tags.tld文件里包含了加载信息的片断:如下:

<taglib>
  <!-- 定义标签库的版本 -->
  <tlib-version>2.2.3</tlib-version>
  <!-- 定义标签库所需的JSP版 -->
  <jsp-version>1.2</jsp-version>
  <short-name>s</short-name>
  <!-- 定义Struts 2标签库的URI,jsp文件中应用的uri-->
  <uri>/struts-tags</uri>...
</taglib>
而servlet2.3手动配置如下:
<!-- 手动配置Struts 2的标签库 -->
<taglib>
  <!-- 配置Struts 2标签库的URI jsp文件中应用的uri,类似于名字空间-->
  <taglib-uri>/s</taglib-uri>
  <!-- 指定Struts 2标签库定义文件的物理位置 -->
  <taglib-location>/WEB-INF/struts-tags.tld</taglib-location>
</taglib>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, web.xml
, struts
, struts.xml
, struts1.2
, 配置
, 常量
, 配置文件加载
, struts 2
, jsp truts
, truts
, struts-plugin.xml
, truts+
一个
struts2 web.xml配置、struts2的web.xml配置、struts2在web.xml配置、struts1 web.xml配置、web.xml配置struts2.5,以便于您获取更多的相关知识。

时间: 2025-01-08 02:58:03

struts 2在web.xml中配置详情的相关文章

在web.xml中配置多个filter是怎么执行的?

问题描述 如题:在web.xml中配置了两个或者多个的filter,他们的执行顺序是什么,是依次执行(也就是按顺序执行,配置在前的先执行,配置在后的后执行),还是怎么回事:如下代码: 这是公司一个项目的架构,我在研究的时候发现的,始终搞不明白:web.xml的部分配置文件: <!--配置的filter--> <filter><filter-name>struts2Filter</filter-name><filter-class>org.apac

web.xml中配置classpath:和classpath*:的区别和意思

首先 classpath是指 WEB-INF文件夹下的classes目录 解释classes含义: 1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml 2.存放模板文件 eg.actionerror.ftl 3.存放class文件 对应的是项目开发时的src目录编译文件 总结:这是一个定位资源的入口 如果你知道开发过程中有这么一句话:惯例大于配置 那么也许你会改变你的想法 对于第二个问题 这个涉及的是lib和classes下文件

spring,struts2整合时web.xml中配置过滤器后部署报错

问题描述 <?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.s

紧急求助,新网虚拟机在web.xml中配置连接申请了server报错

问题描述 在新网的虚拟机部署了一个.net的网站,然后用的是sqlserver的数据库,移植到虚拟机上面以后需要改连接数据库的配置,他的文档的要求是我改的是这样的但是这样的话就会报错不知道是怎么回事,还请大神帮忙,我应该写那个配置文件 解决方案 解决方案二:ConnectionString原来可用的是什么样子的解决方案三:看stacktrace,程序中使用了SqlConnection,这个不需要指定Provider的,把provider去掉试一试.

JavaWeb工程中web.xml基本配置

一.理论准备         先说下我记得xml规则,必须有且只有一个根节点,大小写敏感,标签不嵌套,必须配对. web.xml是不是必须的呢?不是的,只要你不用到里面的配置信息就好了,不过在大型web工程下使用该文件是很方便的,若是没有也会很复杂.         那么web.xml能做的所有事情都有那些?其实,web.xml的模式(Schema)文件中定义了多少种标签元素,web.xml中就可以出现它的模式文件所定义的标签元素,它就能拥有定义出来的那些功能.web.xml的模式文件是由Sun

解析web.xml中在Servlet中获取context-param和init-param内的参数

web.xml里面可以定义两种参数:1.application范围内的参数,存放在servletcontext中,在web.xml中配置如下: 复制代码 代码如下: <context-param>            <param-name>context/param</param-name>            <param-value>avalible during application</param-value>   </con

java-web.xml中配置地址信息如何从properties中获取

问题描述 web.xml中配置地址信息如何从properties中获取 现在有一个java项目,其中包含web.xml,还有spring的一些配置文件,比如applicationcontext.xml还有一些jsp文件.现在想在这三类文件中添加一些IP配置,三类文件里面都要用到,想统一进行配置放在properties文件中,如何配置或写程序读取才能实现三种文件都能通过类似${变量名}或函数的方式获取配置值? 解决方案 我觉得你还是把你的需求说出来比较好 感觉你这个问题有点奇怪,不晓得你要达到什么

解析web.xml中在Servlet中获取context-param和init-param内的参数_java

web.xml里面可以定义两种参数:1.application范围内的参数,存放在servletcontext中,在web.xml中配置如下: 复制代码 代码如下: <context-param>           <param-name>context/param</param-name>           <param-value>avalible during application</param-value>  </contex

web.xml中参数的问题:context-param和init-param的区别

web.xml里面可以定义两种参数:(1)application范围内的参数,存放在servletcontext中,在web.xml中配置如下: <context-param>           <param-name>context/param</param-name>           <param-value>avalible during application</param-value>  </context-param>