我刚开始学习struts2  今天做了个简单的login.jsp的测试页面,老是出现404错误找不到响应的页面,我估计是配置问题 但是花了几个小时,也参照网上的资料,还是成功不了,实在是没办法了,求各位指教一下:
   login.jsp
   ......   <body>
    <form action="login.action" method="post">
     uesrname:<input type="text" name="username"><br>
     password:<input type="password" name="password"><br>
     <input type="submit" name="submit" value="提交">    </form>
  </body>
   ......  result.jsp
  ......
  <body>
     username:${requestScope.username}      
     password:${requestScope.password}  
  </body>
  ......
相应的LoginAction                           // struts2 后的action 不用像struts1继承相应的类吗?
  package com.test.action;public class LoginAction {
    ......
  }配置struts.xml
  <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
    <package name="struts2" extends="struts-default">
    
    <action name="login" class="com.test.action.LoginAction">
        <result name="success">/result.jsp</result>
    </action>
    </package>
</struts>web.xml:<?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>我通过 http://127.0.0.1:8080/struts2/login.jsp  可以访问login.jsp  页面,点提交按钮后,出现404错误:The requested resource (/struts2/login.action) is not available. 请各位给我指教下我的配置有问题吗 ?另外请请有经验的高手给我点相关建议 谢谢谢谢环境:jdk 1.6  tomcat 5.5  myeclipse 6.0

解决方案 »

  1.   

    action类还是继承一下 ActionSupport吧,这样配置比较简单。 
      

  2.   

    郁闷  还是出现 :The requested resource (/struts2/login.action) is not available
    究竟是什么原因 
    配置的好象都对啊
    是不是对TOMCAT  和JDK 版本有要求啊
          
      

  3.   

    看了下    首先  你的struts.xml文件中有问题,<struts>节点下面必须包含<include file="struts-default.xml"></include>
    因为struts-default.xml文件中定义了bean,result,interceptor等内容,而且,你的package节点是继承自struts-dafault包的
    就是<package extends="struts-default">这句,因为struts-default这个包是在struts-default.xml文件中定义的,
    所以在项目启动时,因为你的struts.xml文件里没有不合语法的地方,所以解析时没问题,login.jsp页面可以访问,但是当提交请求
    到login.action这个url时,框架会找name属性为login的action节点,这个时候,要读取继承的包struts-default的配置,但是文件
    没有被包含进来,所以出错了。
      

  4.   

    login.jsp 
      ......   <body> 
        <form action="login.action" method="post"> 
    <struts> 
        <package name="struts2" extends="struts-default"> 
        
        <action name="login" class="com.test.action.LoginAction"> 
            <result name="success">/result.jsp </result> 看下你的配置,struts.xml里面name="login",但你jsp页面提交的却是action="login.action".
      

  5.   

    回复6楼的:
          页面那每问题,struts2里的url后缀默认是action,也可以是jspa,这个可以struts.properties里配置
          如果想省略后缀,可以使用struts2里提供的form标签
      

  6.   

    没有看出问题
      // struts2 后的action 不用像struts1继承相应的类吗? 
    可以是一个pojo 也可以继承ActionSupport  也可以实现Action 接口  ActionSupport 实现了Action接口
      

  7.   

    <form action="login.action" method="post"> 改为<form action="login.html" method="post"> 
      

  8.   

    这个问题也弄了我挺久,后来发现是struts.xml配置有两个字母换了位置,所以一定要检查清楚,必须所有配置都对,错一个就全错了。