版本问题
struts 2.3 对于 通配符+占位符 组合模式的 action 方法的动态调用是默认开启的,但 struts 2.5 为了更加安全和严谨,将其默认设置为关闭,所以需要在 struts2.5 版本的 struts.xml 中添加配置开启动态调用:
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注意后面的dtd版本号与使用的struts版本号匹配 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 1. 允许动态调用方法,通配符+占位符组合 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<package name="defaultPackage" extends="struts-default">
<!-- 2. 添加global-allowed-methods定义通配符使用规则 -->
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="test_*" class="com.ssh.action.TestActoin" method="{1}"/>
</package>
</struts>
并且2.5版本的struts,web.xml文件中的配置是这样的:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
<!-- 注意这个类的位置 -->
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
而2.3版本是这样的:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
<!-- 注意这个类的位置 -->
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
XML格式问题
xml 文件中,标签属性值里的 '>', '<', '&' 等特殊符号需要转换成实体,否则会解析错误,比如在配置数据库的url时,多个参数之间使用 &
隔开, &
需要写成 &
实体 | 代表符号 |
---|---|
< |
< 小于号 |
> |
> 大于号 |
& |
& 和 |
' |
' 单引号 |
" |
" 双引号 |