在现在开发的Web项目中,大家都是使用web.xml来实现MVC框架的应用。既然Struts2也属于MVC框架,因此在web.xml中必定要配置Struts2用以实现应用。
技术要点
本节代码说明Struts2基本配置。
1、如何加载FilterDispatcher过滤器。
2、如何使用FilterDispatcher过滤器拦截URL。
演示代码
Java 代码
1. <!--------------------------------------- 文件名: web.xml-------------------------------->
2. <?xml version="1.0" encoding="GB2312"?>
3. <web-app xmlns=http://java.sun.com/xml/ns/j2ee
4. xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
5. version="2.4"
6. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
7. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
8. <filter>
9. <!-- 过滤器名字 -->
10. <filter-name>struts2</filter-name>
11. <!-- 过滤器支持的struts2类 -->
12. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
13. </filter>
14.
15. <filter-mapping>
16. <!-- 过滤器拦截名字 -->
17. <filter-name>struts2</filter-name>
18. <!-- 过滤器拦截文件路径名字 -->
19. <url-pattern>/*</url-pattern>
20. </filter-mapping>
21. <welcome-file-list>
22. <welcome-file>index.jsp</welcome-file>
23. </welcome-file-list>
24. </web-app>
<!---------------------------------------文件名: web.xml-------------------------------->
<?xml version="1.0" encoding="GB2312"?>
<web-app xmlns=http://java.sun.com/xml/ns/j2ee
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<!--过滤器名字 -->
<filter-name>struts2</filter-name>
<!-- 过滤器支持的struts2类 -->
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<!--过滤器拦截名字 -->
<filter-name>struts2</filter-name>
<!--过滤器拦截文件路径名字 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
代码解释
(1)在Struts1中web.xml中对它的加载都是加载一个Servlet,但是在Struts2中,因为设计者为了实现AOP(面向方面编程)概念,因此是用filter来实现的。所以web.xml里加载的都是Struts2的FilterDispatcher 类。<filter-name>是定义的过滤器名字,而<class>就是Struts2里那个 FilterDispatcher类。
(2)定义好过滤器,还需要在web.xml里指明该过滤器是如何拦截URL的。<url-pattern></url- pattern>中的“/*”是个通配符,它表明该过滤器是拦截所有的HTTP请求。基本上是不会改成其他形式,因为在开发中所有的HTTP请求都可能是一个页面上进行业务逻辑处理的请求。就目前而言,开发人员只需要写成“/*”就可以了。
(3)本节中的示例代码是最基本的web.xml配置Struts2的内容。其实还有<init-param>等设置过滤器初始化参数的配置内容。之所以这里没有具体解释,是因为这些也可以在struts.properties文件内定义。