当前位置: 代码迷 >> Java Web开发 >> Struts2配置web.xml中的Filter后,全部页面全部404
  详细解决方案

Struts2配置web.xml中的Filter后,全部页面全部404

热度:50   发布时间:2016-04-16 22:01:40.0
Struts2配置web.xml中的Filter后,所有页面全部404
最近弄Struts2框架呢,发现只要在web.xml中配置好struts2的filter和filter-mapping,工程的所有页面都访问不了,全部都404了。网上查了半天,都不知道为什么。一下是我写的最简单的一个验证工程。
我工程导入的包有:
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-logging-1.1.3.jar
freemarker-2.3.19.jar
ognl-3.0.6.jar
struts2-core-2.3.16.3.jar
xwork-core-2.3.16.3.jar
下面是web.xml的配置内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>TestStruts2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<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>

这个是struts.xml中的配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<include file="struts-default.xml" />

<package name="struts2" extends="struts-default">
<action name="login" class="com.gobang.action.LoginAction">
<result name="success">/result.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>

相应的Java类如下:

package com.gobang.action;

import com.gobang.bean.User;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 4003755610639962075L;

private User user;

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

@Override
public String execute() throws Exception {
if (user.getName().equals("admin") && user.getPwd().equals("123")) {
return SUCCESS;
} else {
return ERROR;
}
}
}


package com.gobang.bean;

public class User {
private String name;
private String pwd;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPwd() {
return pwd;
}

public void setPwd(String pwd) {
this.pwd = pwd;
}
}


哪位大神能给看看到底是哪有问题啊?看了半天了。只要吧web.xml中的filter配置去掉,就能访问到工程下的index.jsp页面,加上配置后,就404了。
------解决方案--------------------
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/struts/*</url-pattern>
</filter-mapping>

------解决方案--------------------
你的那个filter-class 是早期版本的class类了 
后面的2.3 开始吧 都换为 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 了
你更改下试试看 
------解决方案--------------------
配置看着没问题了,把你的工程clean一下,把tomcat工作空间也clean一下
实在不行,就重新建一个工程,然后把对应文件都拷进去,试试看
怀疑有缓存影响什么的
------解决方案--------------------
按3、7楼应该是可以搞定的:-)
  相关解决方案