Struts的配置
1. 一个大小写的问题
下午首次触碰了Struts,碰到了一个问题,只要是Strus的配置一加上去,就会报异常:
Error during context [/Struts2qs] restart
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Struts2qs]]
…
Caused
by: java.lang.IllegalArgumentException: Filter mapping specifies an unknown filter name Struts2
…
原因:
<?xml version="1.0" encoding="utf-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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> <filter-class>org.apache.Struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>Struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
原因非常简单:注意下划线的两个标注,首字母的大小写不一致。这一点也说明了:filter-mapping节点其实是对filter节点的说明
2. 无法找到FilterDispatcher
上面的问题调好之后,网站依然不能访问,后来在tomcat的log里面的"localhost.2013-05-22.log“文件中找到了端倪,发现了一个异常:Exception starting filter struts2
java.lang.ClassNotFoundException: org.apache.Struts2.dispatcher.FilterDispatcher(这个异常是在Tomcat启动时即发现出来的)。
在tomcat的安装目录下面的lib文件夹中添加了Strus2的相关Jar包文件即可:
common-fileupload.jar
common-io.jar
commons-logging-X.jar
commons-lang3-3.1
freemarker-X.jar
ognl-X.jar
strus2-core-X.jar
x-work-core-X.jar
javassist-3.11.0.GA
网传这是因为使用了绿色Tomcat的原因,更有的人认为是因为Tomcat的安装路径有了空格造成的(Program File)。
不过后来通过虚拟目录配置的工程,如果在Tomcat的lib有jar包,在工程里面的lib中也有相同的jar包,也会报错。所以如果是部署在别的地方,是不需要向Tomcat的lib中扔jar包的。
3.无法加载strus.xml文件
需要在XML头行声明和根节点之间添加DTD声明才可以。
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <package name="strutsqs" extends="struts-default"> <action name="Login" class="lee.LoginAction"> <result name="error">/error.jsp</result> <result name="success">/welcome.jsp</result> </action> </package> </struts>