在tomcat的ROOT文件包下建立了test文件包和一些文件,结构如下:test
   |- login.jsp
   |- wel.jsp
   |- error.jsp 
   |- WEB-INF
      |- web.xml
      |- classes
      |  |- LoginAction.class
      |  |- struts.xml
      |- lib
         |- 就是放 struts lib 里面的五个文件: commons-logging,freeer,ognl,struts2-core,xwork-core
----------------------------------------------------------------------------------------------------代码如下:
---------
login.jsp
---------
<form action="login.action" method="post">
姓名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="提交">
</form>    
-------
web.xml
-------
<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>
----------------
LoginAction.java
----------------
public class LoginAction{
  
  private String username;
  private String password;
  
  public void setUsername(String username){
    this.username = username;
  }
  
  public void setPassword(String password){
    this.password = password;
  }
  
  public String getUsername(){
    return this.username;
  }
  
  public String getPassword(){
    return this.password;
  }
  
  public String execute() throws Exception{
    if(getUsername().equals("zhangsan") && 
getPassword().equals("1234")){
      return "success";
    }else{
      return "error";
    }
  
  }}----------
struts.xml
----------<struts>
  <package name="ok" extends="struts-default" namespace="test">
    <action name="login" class="LoginAction">
      <result name="success">/wel.jsp</result>
      <result name="error">/error.jsp</result>
    </action>
  </package></struts>------------------------------------------------------------------------
输入地址:http://localhost:8080/test/login.jsp,提交之后,报错如下:
HTTP Status 404 - /test/login.actiontype Status reportmessage /test/login.actiondescription The requested resource (/test/login.action) is not 
available.Apache Tomcat/6.0.35我怀疑是struts.xml那里有地方写错了,但是找不出来,求助大侠。

解决方案 »

  1.   

    namespace=""命名空间空就行,要不就是namespace=“/test” 提交action = "test/action.action"
      

  2.   

    修改了namespace为空之后,还是报错,错误还和以前一样。。迷惑。
      

  3.   

    使用开发工具了没有?看看tomcat的启动日志,看看有没有异常,还有,将test文件夹建到webapps文件夹下,不需要建到root下,或者在server.xml中添加路径就可以了。
      

  4.   

    <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>/* 改成 *.action
     <url-pattern>*.action</url-pattern>后面的action就依靠 *的内容区分。
      

  5.   

    web.xml应该放在WEB-INF文件夹内。
      

  6.   

    http://localhost:8080/你的工程名字/test/login.jsp
      

  7.   

    难道我哪里配置错误吗?tomcat? struts?
      

  8.   

    做一个初始化Action去访问,别直接访问jsp,在试试
      

  9.   

    报告大侠,刚刚单纯写了一个最简单的action去访问,报错百思不得其解
      

  10.   

    孩子,test是你的工程名字么?如果是的话,为什么不放在webapps里面,而非得放在ROOT下呢?你把test文件夹放在webapps下再试试……
      

  11.   

    附带说下,我的tomcat 里面的 server.xml 没动过一个码,这样直接把test文件夹放到webapps里面可以吗?
      

  12.   

    首先看日志,确保tomcat启动时struts2的过滤器正常启动,可以把struts2的例子war拷到webapps目录中,看看例子中的配置及所用的包,及各个子目录的名称,看看建的对不对。
      

  13.   

    test是工程的部署文件夹,把它放在webapps下,test里面有两个文件夹和一系列你自己写的jsp页面,其中这两个文件夹一个是META-INF,一个是WEB-INF,META-INF里面是MANIFEST.MF文件,WEB-INF里面是classes文件夹,lib文件夹和web.xml.文件,lib里面是jar包,classes里面有struts.xml文件和.class文件。如果这些你都没问题的话,就是配置文件或者action请求路径不对,仔细查查。
    我看你发的testw文件夹里的文件层次很混乱,不知道是不是向我说的这样的。
      

  14.   

    我没用eclipse编辑,没有META-INF文件夹,我是用ultraedit手动编写的。
    刚才我放了个文件包demo到webapps里面,demo里面有个默认的index.jsp文件。输入http://localhost:8080/demo  却无法访问似乎哪里还需要配置一下。汗
      

  15.   

    代码如下:
    ---------
    login.jsp
    ---------
    <form action="login.action" method="post">
    姓名:<input type="text" name="username"><br>
    密码:<input type="password" name="password"><br>
    <input type="submit" value="提交">
    </form>   变红的地方,改为login
      

  16.   

     web.xml
      |- classes
      | |- LoginAction.class
      | |- struts.xml
      |- lib
     
    这几个文件 放到 WEB-INF 下面去.
    然后重启项目试试.
      

  17.   


    <struts>
      <package name="ok" extends="struts-default" namespace="test">
      <action name="login" class="LoginAction">
      <result name="success">/wel.jsp</result>
      <result name="error">/error.jsp</result>
      </action>
      </package></struts>
    login的class地址就是LoginAction?
      

  18.   

    是  name=login   !!!    对啊!
      

  19.   

    无法访问是什么概念?报的什么错?我在tomcat里也建立了一个demo文件夹,里面有个index.jsp,tomcat已启动,输入http://localhost:8080/demo/就能访问。
    你先别急,刚开始struts的时候都是这么乱。刚才的那个test,没有META-INF文件夹没事,其他的你要都放对位置才行,然后你的代码需要改:
    web.xml中:
    <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>struts.xml中:改namespace
    <struts>
      <package name="ok" extends="struts-default" namespace="/test">
      <action name="login" class="LoginAction">
      <result name="success">/wel.jsp</result>
      <result name="error">/error.jsp</result>
      </action>
      </package>
    </struts>login.jsp中:改action路径
    <form action="test/login" method="post">
      

  20.   

    LoginAction.java编译成的LoginAction.class 直接放进了WEB-INF/class里面,没有任何编写java源文件时候,没有写任何package
      

  21.   

    jsp的  action=“名字”  与strusts里边的<action name="名字" class="LoginAction">   俩名字得一样才能正确映射的!
      

  22.   

    老大,是这样吗?我怎么觉得你说错了。一个是 xxx.action  一个是 xxx 才对啊 
      

  23.   

    现在的问题是,我把工程test整个放到webapps下,然后输入http://localhost:8080/test/login.jsp 竟然不能访问??????!!!!!!!!!!!我疯了
      

  24.   

    看来你不了解  strust2  的映射机制
      

  25.   

    你别乱改文件的位置  就用原始的肯定不会错!!!
    程序又错了  首先  debug  找错   你的这个问题  就是strusts2映射问题  你别搞复杂啦!!
      

  26.   

    你将tomcat停掉,到tomcat的logs目录,将里面的所有文件删除,再启动tomcat,看logs目录中产生的文件内容,看有没有异常?只要哪个项目有异常,访问肯定不行
      

  27.   

    不能访问就是struts没有映射好,启动不起来,当然访问不到啊,再者,在action的package 不要设命名空间了,对本项目来说,没意义。访问action要用/test/xxx.action,另外class的路径检查清楚,虽然在classes文件夹里。但是要是src里的路径,你出的错很可能是这个错误
      

  28.   

    谢谢上面的各位大侠。我的问题还没有解决。我自己反复测试了,发现如下的现象,求大侠指点。我把test工程文件包整体放进webapps里面之后,输入 http://localhost:8080/test/login.jsp 无法访问。
    于是我把test/WEB-INF里面的web.xml这个文件删除 http://localhost:8080/test/login.jsp 又可以访问了。就此我认为,是web.xml这个文件有问题。web.xml的源码如下: <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_3_0.xsd"
      version="3.0"
      metadata-complete="true"><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>难道哪里写错了吗?我特别注意了 org.apache.struts2.dispatcher.FilterDispatcher 这个类,可以从struts2-core.jar 里面解压出来,目录没有问题的。看tomcat的日志,有个错误是  严重:Error filterStart百思不得其解。不知道哪里写错了
      

  29.   

    配置文件里面的action的配置的class要用全包名,就是完整路径,然后重新发布试试看
      

  30.   

    看样子是你的struts2没正常启动啊。。你的struts2压缩包是哪个版本的?
      

  31.   

    你的问题并不是web.xml的问题,如果在eclipse中,看启动时控制台的异常信息就可以找出错误,你的情况还是要看tomcat的日志,不知道你struts2的版本是多少?2.0的与2.1的所用的包和过滤器是不同的,最好到apache的网站上下载一个完整的框架,解压后到apps目录将里面的例子拷到tomcat的webapps目录下,看看里面的配置及所用的包,当然如果能看懂异常信息,自己解决问题就更好。
      

  32.   

    各位 我找到原因了 struts.xml 里面有如下一段代码 
    <!DOCTYPE struts PUBLIC  
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
        "http://struts.apache.org/dtds/struts-2.3.dtd">  
    看到 2.3了吗?我的是2.0 我改成2.3之后就可以了!!!!!!!!!!!!!!真是疯了。这是为神马????????????