默认情况下,Struts2的配置文件名称为struts.xml,且该文件放在src根目录下。如下图所示:

如果需要修改struts.xml的位置,例如把struts.xml放到struts2文件夹下,结构如下图所示,该怎么办呢?

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

  1. <!-- 配置struts2过滤器:StrutsPrepareAndExecuteFilter -->
  2. <filter>
  3. <filter-name>struts2</filter-name>
  4. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  5. </filter>
  6. <filter-mapping>
  7. <filter-name>struts2</filter-name>
  8. <url-pattern>/*</url-pattern>
  9. </filter-mapping>

为了弄清Stuts2是如何加载配置文件的,先查看Struts2的StrutsPrepareAndExecuteFilter类:

  1. package org.apache.struts2.dispatcher.ng.filter;
  2. /**
  3. * Handles both the preparation and execution phases of the Struts dispatching process.  This filter is better to use
  4. * when you don't have another filter that needs access to action context information, such as Sitemesh.
  5. */
  6. public class StrutsPrepareAndExecuteFilter implements StrutsStatics, Filter {
  7. protected PrepareOperations prepare;
  8. protected ExecuteOperations execute;
  9. protected List<Pattern> excludedPatterns = null;
  10. public void init(FilterConfig filterConfig) throws ServletException {
  11. InitOperations init = new InitOperations();
  12. try {
  13. FilterHostConfig config = new FilterHostConfig(filterConfig);
  14. init.initLogging(config);
  15. Dispatcher dispatcher = init.initDispatcher(config);
  16. init.initStaticContentLoader(config, dispatcher);
  17. prepare = new PrepareOperations(filterConfig.getServletContext(), dispatcher);
  18. execute = new ExecuteOperations(filterConfig.getServletContext(), dispatcher);
  19. this.excludedPatterns = init.buildExcludedPatternsList(dispatcher);
  20. postInit(dispatcher, filterConfig);
  21. } finally {
  22. init.cleanup();
  23. }
  24. }
  25. /**
  26. * Callback for post initialization
  27. */
  28. protected void postInit(Dispatcher dispatcher, FilterConfig filterConfig) {
  29. }
  30. public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
  31. HttpServletRequest request = (HttpServletRequest) req;
  32. HttpServletResponse response = (HttpServletResponse) res;
  33. try {
  34. prepare.setEncodingAndLocale(request, response);
  35. prepare.createActionContext(request, response);
  36. prepare.assignDispatcherToThread();
  37. if ( excludedPatterns != null && prepare.isUrlExcluded(request, excludedPatterns)) {
  38. chain.doFilter(request, response);
  39. } else {
  40. request = prepare.wrapRequest(request);
  41. ActionMapping mapping = prepare.findActionMapping(request, response, true);
  42. if (mapping == null) {
  43. boolean handled = execute.executeStaticResourceRequest(request, response);
  44. if (!handled) {
  45. chain.doFilter(request, response);
  46. }
  47. } else {
  48. execute.executeAction(request, response, mapping);
  49. }
  50. }
  51. } finally {
  52. prepare.cleanupRequest(request);
  53. }
  54. }
  55. public void destroy() {
  56. prepare.cleanupDispatcher();
  57. }
  58. }

可以看到,有个public void init(FilterConfig filterConfig) throws ServletException { ... } 方法,很明显,这个方法在启动时会被调用,然后加载classes目录下的struts.xml配置文件。配置文件参数名称为filterConfig。因此,我们可以指定Struts2 Filter 的参数,这和指定Servlet参数相同,配置<init-param>即可。配置如下:

  1. <filter>
  2. <filter-name>struts2</filter-name>
  3. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  4. <init-param>
  5. <param-name>filterConfig</param-name>
  6. <param-value>classpath:struts2/struts.xml</param-value>
  7. </init-param>
  8. </filter>
  9. <filter-mapping>
  10. <filter-name>struts2</filter-name>
  11. <url-pattern>/*</url-pattern>
  12. </filter-mapping>

这样配置后,就可以正常加载指定的Struts配置文件了。

修改Struts2的struts.xml配置文件位置的更多相关文章

  1. struts2中struts.xml配置文件详解【未整理】

    1.    深入Struts2的配置文件 本部分主要介绍struts.xml的常用配置. 1.1.    包配置: Struts2框架中核心组件就是Action.拦截器等,Struts2框架使用包来管 ...

  2. struts2中struts.xml配置文件详解

    struts.xml的常用配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts ...

  3. struts2:struts.xml配置文件详解

    1. 几个重要的元素 1.1 package元素 package元素用来配置包.在Struts2框架中,包是一个独立的单位,通过name属性来唯一标识包.还可以通过extends属性让一个包继承另一个 ...

  4. struts2.0 struts.xml配置文件详解

    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quo ...

  5. struts2 的struts.xml配置文件

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...

  6. struts2.0中struts.xml配置文件详解

    先来展示一个配置文件 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration ...

  7. Struts2笔记——struts.xml配置详解

    访问HelloWorld应用的路径的设置 * 在struts1中,通过<action path=“/primer/helloWorldAction.action”>节点的path属性指定访 ...

  8. Struts2初学 Struts.xml详解二

    A.使用继承实现设置全局视图    package节点中还可以设置全局的视图,如:     <global-results>         <result name="e ...

  9. struts.xml配置文件(package,namespace,action)

    struts2.0 xml配置 struts.xml文件结构 struts.xml文件是整个Struts2框架的核心. struts.xml文件内定义了Struts2的系列Action,定义Actio ...

随机推荐

  1. PostgreSQL主键索引膨胀的重建方法

    普通的索引膨胀处理比较简单,主键的索引膨胀也不复杂,只是在新旧索引交替时有一些小处理.本试验在primary key上通过CONCURRENTLY建立第二索引来解决索引膨胀问题,适用9.3.9.4,其 ...

  2. Codeforces Round #392 (Div. 2) A B C 水 模拟 暴力

    A. Holiday Of Equality time limit per test 1 second memory limit per test 256 megabytes input standa ...

  3. HDU4738:Caocao's Bridges(求桥)

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. windows下安装git

    1.从Git官网下载windows版本的git:http://git-scm.com/downloads 2.一般使用默认设置即可:一路next,git安装完毕! 3.但是如果这时你打开windows ...

  5. [ethernet]ubuntu更换网卡驱动

    问题: 网络不能ping通,dmesg显示很多 [::00.0: eth0: link up [::00.0: eth0: link up [::00.0: eth0: link up [::00.0 ...

  6. Ubuntu14.04-Python2.7-Virtualenv-Django1.9-MySQL完整环境配置

    一.安装Ubuntu14.04LTS 1.下载了ubuntu14.04后用ultraISO写到硬盘镜像(U盘) 开机启动项改成U盘在前,安装. 清空分区,重新分配. /最少10G,我放了100G. 物 ...

  7. 【设计模式】 模式PK:装饰模式VS适配器模式

    1.概述 装饰模式和适配器模式在通用类图上没有太多的相似点,差别比较大,但是它们的功能有相似的地方:都是包装作用,都是通过委托方式实现其功能.不同点是:装饰模式包装的是自己的兄弟类,隶属于同一个家族( ...

  8. 【uva11987】带删除的并查集

    题意:初始有N个集合,分别为 1 ,2 ,3 .....n.有三种操件1 p q 合并元素p和q的集合2 p q 把p元素移到q集合中3 p 输出p元素集合的个数及全部元素的和. 题解: 并查集.只是 ...

  9. 【BZOJ3875】【AHOI2014】骑士游戏 [Spfa][DP]

    骑士游戏 Time Limit: 30 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 在这个游戏中,JYY一共有两种攻击 ...

  10. 【POJ】2892 Tunnel Warfare

    [算法]平衡树(treap) [题解]treap知识见数据结构 在POJ把语言从G++换成C++就过了……??? #include<cstdio> #include<algorith ...