struts2——配置struts.xml文件

在struts2框架中struts.xml是应当放到src的根目录,程序编译后会将struts.xml放到WEB-INF/classes目录下。

Struts2在web.xml中的一般配置如下:

Xml代码  

  1. <filter>
  2. <filter-name>struts2</filter-name>
  3. <filter-class>
  4. org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  5. </filter-class>
  6. </filter>
  7. <filter-mapping>
  8. <filter-name>struts2</filter-name>
  9. <url-pattern>/*</url-pattern>
  10. </filter-mapping>

根据配置就会先后加载struts-default.xml、struts-plugin.xml、然后自动加载classes目录下的struts.xml (struts-default.xml 在struts-core-xx.jar包里面呢,解压开你的struts-core-xx.jar包,就可以看到struts-default.xml文件了)。

但是有时为了协作开发或方便管理,有时可能需要把struts.xml放到其他位置,如下图所示:

这个时候web.xml文件该如何配置呢?

Xml代码  

  1. <filter>
  2. <filter-name>struts2</filter-name>
  3. <filter-class>
  4. org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  5. </filter-class>
  6. <init-param>
  7. <param-name>config</param-name>
  8. <param-value>
  9. struts-default.xml,config/struts2/struts.xml
  10. </param-value>
  11. </init-param>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>struts2</filter-name>
  15. <url-pattern>/*</url-pattern>
  16. </filter-mapping>

我们可以通过上述web.xml的配置找到struts.xml文件的位置,但在这里有人可能会疑问了,那为什么要struts- default.xml也需要指定呢?因为我们改变了struts.xml文件的位置后,如果不手动指定,就不会自动加载。就会出现下面的异常:

所以需要特别注意struts2默认加载的文件,如struts-default.xml,struts-plugin.xml都需要在

<param-value/>中重新指定一下。

温馨提示:在上述的程序中,大家
可能注意我重新指定了struts-default.xml而没有写struts-plugin.xml,那是因为我这个项目没有用到插件,引用的是项目
的基本jar,基本Jar中是没有struts-plugin.xml配置文件的。这个配置文件是在插件jar包中。如图:

任意解压缩一个Jar包即可发现:

所以我们需要清楚虽然配置文件的加载顺序是struts-default.xml、struts-plugin.xml、struts.xml,但是如果没有插件的应用那么就是struts-default.xml、struts.xml的顺序。这就是上述显性指定时没有指定struts-plugin.xml的原因。

当然如果不想在web.xml文件中指定struts-default.xml,struts-plugin.xml的话,也可在struts.xml文件中通过include将原有配置文件包含进来。

Xml代码  

  1. <struts>
  2. <include file="struts-default.xml" ></include>
  3. <package name="example" namespace="/" extends="struts-default">
  4. <action name="login" class="com.yanln.test.action.LoginAction">
  5. <result name="success">success.jsp</result>
  6. </action>
  7. </package>
  8. </struts>

注意:每个人的编程习惯是不一样的,有的人可能把配置文件习惯如下方式放置


 那么web.xml文件可以这样配置:

Xml代码  

  1. <filter>
  2. <filter-name>struts2</filter-name>
  3. <filter-class>
  4. org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  5. </filter-class>
  6. <init-param>
  7. <param-name>config</param-name>
  8. <param-value>
  9. struts-default.xml,../config/struts2/struts.xml
  10. </param-value>
  11. </init-param>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>struts2</filter-name>
  15. <url-pattern>/*</url-pattern>
  16. </filter-mapping>

主要原因是struts2默认会到WEB-INF/classes目录下去找配置文件。

时间: 2024-09-30 17:42:36

struts2——配置struts.xml文件的相关文章

关于Struts2中struts.xml文件分层问题

没事折腾struts2,遇到异常,浪费好长时间,于是干脆把所有可能的异常都给跑一遍,来个痛快的. 文件的结构 WEB-INF |------configs |-------struts-common.xml |-------struts.xml |------web.xml 遇到的异常: WARNING: Could not find action or result: /Pro_struts2/common/login!preLogin There is no Action mapped fo

struts2的struts.xml文件的提示功能配置

1.先配置dtd文件 步骤: 1.首先打开MyEclipse的窗口,选择"Window"菜单下的"Preferences"选项 2.再打开的"Preferences"对话框中,选择左边的"XML"选项下的"XML Catalog"选项,然后选择右边的"Add"按钮, 3.选择"File System"按钮,找到dtd文件的位置,(可以解压struts-core-2.5

struts2中struts.xml文件用通配符配置

在使用struts2的时候,能简单快速地连接action和jsp页面.主要是神奇的配置文件:struts.xml 在起作用. 示例: 这是目录结构: 来一份可用的struts.xml的代码: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//

idea+struts2配置struts.xml时struts-default出错

在idea中创建struts2项目时,在配置文件struts.xml的extends="struts-default"中,struts-default一直标红. 解决方法: File -> Project Structure -> Modules -> Web -> Struts2 -> File Sets 在Default File Set中点击"+",将struts.xml和struts-default.xml放在一个组里.

struts2 配置 struts.xml 提示

1.这个提示通常是在 连网络的时候才可以看到 2.当没有网路的时候我们该如何配置呢? window -->preferences -->xml catelog -->user....-->add   (keytype:uri) (key:http://struts.apache.org/dtds/struts-2.3.dtd)  location: file...找到  struts-2.3.dtd

(二)Struts.xml文件详解

一.Struts文件 Struts文件构成 如图,<Struts>标签内共有5个子标签. 1.1 struts-default.xml 查看Struts的内容可知,Struts的默认包"default"是继承于"Struts-dafault"包的,struts-default包是在struts-default.xml中定义,struts-default.xml也是Struts2默认配置文件,所以Struts2每次都会自动加载 struts-default

Struts2 学习笔记——struts.xml文件之Bean的配置

Struts2的大部分核心组件不是以硬编码的形式写在代码中,而是通过自身的IoC容器来管理的. Struts2以可配置的形式来管理核心组件,所以开发者可以很容易的扩展框架的核心组件.当开发者需要扩展或者替换Struts2的核心组件时,只需要提供自己的组件实现类,并部署在Struts2的IoC容器中即可. 我们打开struts2-core-2.2.1.1.jar中的struts-default.xml文件,可以看到大量的Bean的定义.如下代码片段: <struts> <!—- 两个对象工

struts.xml文件中action配置、OGNL的投影映射、OGNL表达式的符号

在struts.xml文件中不同的action配置,请求的路径是不一样的 1.请求 path = user!query.action; 配置如下: <action name="user" class="com.bwf.code.action.UserAction"> <result name="queryUser">/query.jsp</result> </action> 2.请求path = u

struts xml文件的constant的配置

转:http://blog.csdn.net/qinyu0109/article/details/7257332 struts配置文件的constant的name值在struts2-core-2.1.6.jar --> org.apache.struts2 -->default.properties里有默认值. 在struts.xml文件里配置constant会覆盖default.properties的配置. <!-- 指定Web应用的默认编码集,相当于调用 HttpServletReq