struts2自定义struts配置文件和引用外部xml文件
标题:如何自定义struts2的配置文件位置并在该配置文件中引用其他的xml配置文件
小白历程-----------记录日常掉坑系列
总目录结构如图:
运行环境:
win10
eclipse 4.7.3a
jdk1.8
struts-2.5.16
需求构想:
想把struts的主配置文件放在src下新建的一个包(package)内,然后把每个模块的action分别做成单独的子struts配置文件方便后续维护管理,通过主配置文件的include标签引用子配置文件;
测试效果:访问index.jsp,通过两个超链接发送action请求,一个关联了ation类,一个直接通过转发到页面
各文件内容
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi=""
xmlns=""
xsi:schemaLocation=" .xsd"
id="WebApp_ID" version="3.1">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!-- 初始化参数,前两者为依赖的xml,后者为自定义struts的xml文件 -->
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,struts2_xml/struts.xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
".5.dtd">
<struts>
<!-- 修改默认访问后缀名 -->
<constant name="struts.action.extension" value="action,do,"></constant>
<!-- 导入相关模块配置文件,注:访问非根目录时路径名开头写法 -->
<include file="resource/testpages.xml"></include>
</struts>
testpages.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
".5.dtd">
<struts>
<!-- 注意:extend需继承默认的包 -->
<package name="testAction" extends="struts-default" >
<action name="myAction" class="testpages.TestAction" method="test">
<result name="myAction">/testpages/myaction.jsp</result>
</action>
<action name="actionTest">
<result>/testpages/myaction.jsp</result>
</action>
</package>
</struts>
TestAction.java
package testpages;
public class TestAction {
public String test() {
System.out.println("TestAction's test");
return "myAction";
}
}
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>标题</title>
</head>
<body>
<h3>struts2 连接测试首页</h3>
<a href="myAction">To myAction Page</a><br>
<a href="actionTest.do">To MyAction Page</a>
</body>
</html>
myaction.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>标题</title>
</head>
<body>
<h2>THIS IS MyAction Page</h2>
<p>测试成功</p>
</body>
</html>
运行预览效果图:
点击第一个超链接后:
点击第二个超链接后:
可能碰到各种问题:页面404,无法加载类文件,无法加载配置文件信息等等,请注意上文三个xml有注释区域写法。
注:以上仅做简单的配置测试,所以并没有把页面放在WEB-INFO目录下,如有错误欢迎指出,本人小白,欢迎大家评论区留言,互相学习。