当前位置:编程学习 > JAVA >>

struts2最初级的问题求助

在tomcat的ROOT文件包下建立了test文件包和一些文件,结构如下:

test
   |- login.jsp
   |- wel.jsp
   |- error.jsp 
   |- WEB-INF
      |- web.xml
      |- classes
      |  |- LoginAction.class
      |  |- struts.xml
      |- lib
         |- 就是放 struts lib 里面的五个文件: commons-logging,freemarker,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.action

type Status report

message /test/login.action

description The requested resource (/test/login.action) is not 
available.

Apache Tomcat/6.0.35





我怀疑是struts.xml那里有地方写错了,但是找不出来,求助大侠。。。。



--------------------编程问答-------------------- namespace="/test"
--------------------编程问答-------------------- namespace=""命名空间空就行,要不就是namespace=“/test” 提交action = "test/action.action" --------------------编程问答-------------------- 修改了namespace为空之后,还是报错,错误还和以前一样。。。。。。。。迷惑。。。。 --------------------编程问答-------------------- 使用开发工具了没有?看看tomcat的启动日志,看看有没有异常,还有,将test文件夹建到webapps文件夹下,不需要建到root下,或者在server.xml中添加路径就可以了。 --------------------编程问答-------------------- <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

/* 改成 *.action
 <url-pattern>*.action</url-pattern>

后面的action就依靠 *的内容区分。 --------------------编程问答--------------------
引用 4 楼  的回复:
使用开发工具了没有?看看tomcat的启动日志,看看有没有异常,还有,将test文件夹建到webapps文件夹下,不需要建到root下,或者在server.xml中添加路径就可以了。

按照您的说法做了。错误依旧。。。汗 --------------------编程问答--------------------
引用 5 楼  的回复:
<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

/* 改成 *.action
<url-pattern>*.action</url-pattern>

后面的action就依靠 *的内容区分。


我要疯了,这样改了,依旧错误!!!!!!!!!!!!!!!!!疯了 --------------------编程问答--------------------
引用 4 楼  的回复:
使用开发工具了没有?看看tomcat的启动日志,看看有没有异常,还有,将test文件夹建到webapps文件夹下,不需要建到root下,或者在server.xml中添加路径就可以了。


用的ultraedit编辑的。。。 --------------------编程问答-------------------- web.xml

应该放在

WEB-INF文件夹内。 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 9 楼  的回复:
web.xml

应该放在

WEB-INF文件夹内。
亲,这个没错,我确实是放进那里面去了 --------------------编程问答-------------------- 真是疯了。。。。我自己也看不出什么问题来,怎么就运行错误呢????????百思不得其解 --------------------编程问答-------------------- http://localhost:8080/你的工程名字/test/login.jsp --------------------编程问答--------------------
引用 13 楼  的回复:
http://localhost:8080/你的工程名字/test/login.jsp
不是这里。这方面没错。 --------------------编程问答-------------------- 难道我哪里配置错误吗?tomcat? struts? --------------------编程问答-------------------- 你修改了以后重新发布下.再运行试试.
--------------------编程问答-------------------- 做一个初始化Action去访问,别直接访问jsp,在试试 --------------------编程问答--------------------
引用 17 楼  的回复:
做一个初始化Action去访问,别直接访问jsp,在试试
报告大侠,刚刚单纯写了一个最简单的action去访问,报错。。。百思不得其解 --------------------编程问答-------------------- 孩子,test是你的工程名字么?如果是的话,为什么不放在webapps里面,而非得放在ROOT下呢?你把test文件夹放在webapps下再试试…… --------------------编程问答--------------------
引用 19 楼  的回复:
孩子,test是你的工程名字么?如果是的话,为什么不放在webapps里面,而非得放在ROOT下呢?你把test文件夹放在webapps下再试试……
附带说下,我的tomcat 里面的 server.xml 没动过一个码,这样直接把test文件夹放到webapps里面可以吗? --------------------编程问答-------------------- 首先看日志,确保tomcat启动时struts2的过滤器正常启动,可以把struts2的例子war拷到webapps目录中,看看例子中的配置及所用的包,及各个子目录的名称,看看建的对不对。 --------------------编程问答-------------------- 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文件夹里的文件层次很混乱,不知道是不是向我说的这样的。 --------------------编程问答--------------------
引用 22 楼  的回复:
test是工程的部署文件夹,把它放在webapps下,test里面有两个文件夹和一系

列你自己写的jsp页面,其中这两个文件夹一个是META-INF,一个是WEB-INF,

META-INF里面是MANIFEST.MF文件,WEB-INF里面是classes文件夹,lib文件夹和

web.xml.文件,lib里面是jar包,classes里面有struts.xml文件和.cla……
我没用eclipse编辑,没有META-INF文件夹,我是用ultraedit手动编写的。
刚才我放了个文件包demo到webapps里面,demo里面有个默认的index.jsp文件。输入http://localhost:8080/demo  却无法访问。。。似乎哪里还需要配置一下。。。。汗 --------------------编程问答-------------------- 代码如下:
---------
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 --------------------编程问答--------------------  web.xml
  |- classes
  | |- LoginAction.class
  | |- struts.xml
  |- lib
 
这几个文件 放到 WEB-INF 下面去.
然后重启项目试试. --------------------编程问答--------------------

<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? --------------------编程问答-------------------- 好了吧!!! --------------------编程问答-------------------- 是  name=login   !!!    对啊! --------------------编程问答-------------------- java好学吗 --------------------编程问答-------------------- 无法访问是什么概念?报的什么错?我在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"> --------------------编程问答--------------------
引用 26 楼  的回复:
Java code

<struts>
  <package name="ok" extends="struts-default" namespace="test">
  <action name="login" class="LoginAction">
  <result name="success">/wel.jsp</result>
  <result name="error">/err……
LoginAction.java编译成的LoginAction.class 直接放进了WEB-INF/class里面,没有任何编写java源文件时候,没有写任何package --------------------编程问答-------------------- jsp的  action=“名字”  与strusts里边的<action name="名字" class="LoginAction">   俩名字得一样才能正确映射的! --------------------编程问答-------------------- 你试我说的没啊!!!!    哎 --------------------编程问答--------------------
引用 32 楼  的回复:
jsp的  action=“名字”  与strusts里边的<action name="名字" class="LoginAction">   俩名字得一样才能正确映射的!
老大,是这样吗?我怎么觉得你说错了。一个是 xxx.action  一个是 xxx 才对啊 。。。

--------------------编程问答-------------------- 先改下试试!!! --------------------编程问答-------------------- 现在的问题是,我把工程test整个放到webapps下,然后输入http://localhost:8080/test/login.jsp 竟然不能访问??????!!!!!!!!!!!我疯了 --------------------编程问答-------------------- 看来你不了解  strust2  的映射机制 --------------------编程问答-------------------- 你别乱改文件的位置  就用原始的肯定不会错!!!
程序又错了  首先  debug  找错   你的这个问题  就是strusts2映射问题  你别搞复杂啦!! --------------------编程问答-------------------- 你将tomcat停掉,到tomcat的logs目录,将里面的所有文件删除,再启动tomcat,看logs目录中产生的文件内容,看有没有异常?只要哪个项目有异常,访问肯定不行 --------------------编程问答-------------------- 不能访问就是struts没有映射好,启动不起来,当然访问不到啊,再者,在action的package 不要设命名空间了,对本项目来说,没意义。访问action要用/test/xxx.action,另外class的路径检查清楚,虽然在classes文件夹里。但是要是src里的路径,你出的错很可能是这个错误 --------------------编程问答-------------------- 谢谢上面的各位大侠。我的问题还没有解决。我自己反复测试了,发现如下的现象,求大侠指点。

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

百思不得其解。不知道哪里写错了。。。 --------------------编程问答-------------------- 配置文件里面的action的配置的class要用全包名,就是完整路径,然后重新发布试试看 --------------------编程问答-------------------- 看样子是你的struts2没正常启动啊。。你的struts2压缩包是哪个版本的?
--------------------编程问答-------------------- 你的问题并不是web.xml的问题,如果在eclipse中,看启动时控制台的异常信息就可以找出错误,你的情况还是要看tomcat的日志,不知道你struts2的版本是多少?2.0的与2.1的所用的包和过滤器是不同的,最好到apache的网站上下载一个完整的框架,解压后到apps目录将里面的例子拷到tomcat的webapps目录下,看看里面的配置及所用的包,当然如果能看懂异常信息,自己解决问题就更好。 --------------------编程问答-------------------- 各位 我找到原因了 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之后就可以了!!!!!!!!!!!!!!

真是疯了。这是为神马????????????  
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,