我最近刚刚学struts2,自学的,两天了,我连一个最简单struts2都没有配置出来,按照书上的示例一步一步配都报错,我就写了一个action,一个struts.xml,配置了web.xml中使用过滤器,然后三个页面login.jsp,error.jsp,welcome.jsp,就这么简单的一个示例,总是报错,构建路径添加了commons-fileupload-1.2.2.jar    commons-io-2.0.1.jar     freeer-2.3.16.jar    javassist-3.11.0.GA.jar    ognl-3.0.1.jar    struts2-core-2.2.3.1.jar     xwork-core-2.2.3.1.jar这七个包文件,还有一个mess.properties文件,就这么多,我的struts.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
   "http://struts.apache.org/dtds/struts-2.1.7.dtd">
   <struts>
       <constant name="struts.custom.i18n.resources" value="mess"></constant>
       <constant name="struts.i18n.encoding" value="UTF-8"></constant>
       <package name="lee" extends="struts-default">
          <action name="login" class="com.demo.LoginAction">
             <result name="input">/login.jsp</result>
             <result name="error">/error.jsp</result>
             <result name="success">/welcome.jsp</result>
          </action>
       </package>
   </struts>
我的web.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
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">
  <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- 让Struts2的核心Filter拦截所有请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>剩余的jsp页面我就不贴出来了,都是从范例中复制过来的呃,为什么我在web.xml中一配置filter就会报404错误呢,我如果去掉过滤器,就可以访问到login.jsp页面,配上就报错!高手指点一下啊,我实在是没招了?

解决方案 »

  1.   

    <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*.action</url-pattern>
    </filter-mapping>
    只对action的访问通过拦截器处理,其他的jsp还是由tomcat自己处理
      

  2.   


    struts只对.action的访问才进行拦截处理
      

  3.   


    按照你说的改了,还是404错误,我把
    <constant name="struts.custom.i18n.resources" value="mess"></constant>
           <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    这一段去掉了,tomcat日志中没有报错,访问依然404,怎么会找不到呢?
      

  4.   

    我可没有遇到过Filter拦截请求出现404的错误呢。同求高手来求解。我理解一个新手的框架之旅困惑和心理。不要怕困难。多尝试就可以熟悉掌握的了。大家都是这样一路走来的。呵呵
      

  5.   


    谢谢!刚刚我搞定了,去掉了
    <constant name="struts.custom.i18n.resources" value="mess"></constant>
           <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    然后在jsp页面中写了test.action(前面只写了test),然后再action类里面去掉了implements Action换成了extends ActionSupport,然后使用回环地址访问到了WEB应用,感谢各位高手的帮助!!万分感谢!!