日期:2014-05-17  浏览次数:20967 次

为什么配置了struts2的filter以后之前简单的网页也不能访问了
例如之前的 http://localhost:8080/webdemo/a.jsp 可以正常访问 
  页面代码很简单 就是一个 helloworld !
  
然后我照着王刚轻量级JAVAEE struts2+spring+hibernate上面的例子 配置 struts2

WEB.XML文件如下
XML code
<?xml version="1.0" encoding="GBK"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
    <!-- 定义Struts2的核心Filter -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <!-- 让Struts2的核心Filter拦截所有请求 -->
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

相关文件也已经复制到 LIB下面

struts文件 如下
XML code
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- 指定Struts 2配置文件的根元素 -->
<struts>
    <!-- 指定全局国际化资源文件base名 -->
    <constant name="struts.custom.i18n.resources" value="messageResource"/>
    <!-- 指定国际化编码所使用的字符集 -->    
    <constant name="struts.i18n.encoding" value="GBK"/>
    <!-- 所有的Action定义都应该放在package下 -->
    <package name="lee" extends="struts-default">
        <action name="login" class="lee.LoginAction">
            <!-- 定义三个逻辑视图和物理资源之间的映射 -->        
            <result name="input">/login.jsp</result>
            <result name="error">/error.jsp</result>
            <result name="success">/welcome.jsp</result>        
        </action>
    </package>
</struts>


login error welcome 页面也都已经建立

但是却无法访问 错误代码

type Status report

message

description The requested resource () is not available.

而且之前的 a.jsp也无法访问了才,错误代码 也是上面的

然后我把web.xml中的 <filter> 等删了以后又可以 正常访问 a.jsp了( login.jsp等还是不能访问 )

大侠们指点迷津啊,为何??? 2天了试了很多次 系统 win7

------解决方案--------------------
是不是你用的不是Struts2.0吧,在Struts2.1开始filter映射的类改了!
Java code
<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>/*</url-pattern>
    </filter-mapping>

------解决方案--------------------
你是通过什么路径访问的