struts2最初级的问题求助

BIGSHOTZHANG 2012-10-17 11:33:50
在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那里有地方写错了,但是找不出来,求助大侠。。。。



...全文
405 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
new_bird_0001 2012-10-18
  • 打赏
  • 举报
回复
你的问题并不是web.xml的问题,如果在eclipse中,看启动时控制台的异常信息就可以找出错误,你的情况还是要看tomcat的日志,不知道你struts2的版本是多少?2.0的与2.1的所用的包和过滤器是不同的,最好到apache的网站上下载一个完整的框架,解压后到apps目录将里面的例子拷到tomcat的webapps目录下,看看里面的配置及所用的包,当然如果能看懂异常信息,自己解决问题就更好。
BIGSHOTZHANG 2012-10-18
  • 打赏
  • 举报
回复
各位 我找到原因了 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之后就可以了!!!!!!!!!!!!!!

真是疯了。这是为神马????????????
ncist_jianeng 2012-10-18
  • 打赏
  • 举报
回复
看样子是你的struts2没正常启动啊。。你的struts2压缩包是哪个版本的?
lzm3v3 2012-10-18
  • 打赏
  • 举报
回复
配置文件里面的action的配置的class要用全包名,就是完整路径,然后重新发布试试看
new_bird_0001 2012-10-17
  • 打赏
  • 举报
回复
使用开发工具了没有?看看tomcat的启动日志,看看有没有异常,还有,将test文件夹建到webapps文件夹下,不需要建到root下,或者在server.xml中添加路径就可以了。
BIGSHOTZHANG 2012-10-17
  • 打赏
  • 举报
回复
修改了namespace为空之后,还是报错,错误还和以前一样。。。。。。。。迷惑。。。。
wuqiong1314 2012-10-17
  • 打赏
  • 举报
回复
namespace=""命名空间空就行,要不就是namespace=“/test” 提交action = "test/action.action"
隔壁老王来也 2012-10-17
  • 打赏
  • 举报
回复
namespace="/test"
BIGSHOTZHANG 2012-10-17
  • 打赏
  • 举报
回复
谢谢上面的各位大侠。我的问题还没有解决。我自己反复测试了,发现如下的现象,求大侠指点。

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

百思不得其解。不知道哪里写错了。。。
yao376689024 2012-10-17
  • 打赏
  • 举报
回复
不能访问就是struts没有映射好,启动不起来,当然访问不到啊,再者,在action的package 不要设命名空间了,对本项目来说,没意义。访问action要用/test/xxx.action,另外class的路径检查清楚,虽然在classes文件夹里。但是要是src里的路径,你出的错很可能是这个错误
new_bird_0001 2012-10-17
  • 打赏
  • 举报
回复
你将tomcat停掉,到tomcat的logs目录,将里面的所有文件删除,再启动tomcat,看logs目录中产生的文件内容,看有没有异常?只要哪个项目有异常,访问肯定不行
wangzhonglong456 2012-10-17
  • 打赏
  • 举报
回复
你别乱改文件的位置 就用原始的肯定不会错!!!
程序又错了 首先 debug 找错 你的这个问题 就是strusts2映射问题 你别搞复杂啦!!
wangzhonglong456 2012-10-17
  • 打赏
  • 举报
回复
看来你不了解 strust2 的映射机制
BIGSHOTZHANG 2012-10-17
  • 打赏
  • 举报
回复
现在的问题是,我把工程test整个放到webapps下,然后输入http://localhost:8080/test/login.jsp 竟然不能访问??????!!!!!!!!!!!我疯了
wangzhonglong456 2012-10-17
  • 打赏
  • 举报
回复
先改下试试!!!
BIGSHOTZHANG 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 的回复:]

jsp的 action=“名字” 与strusts里边的<action name="名字" class="LoginAction"> 俩名字得一样才能正确映射的!
[/Quote]老大,是这样吗?我怎么觉得你说错了。一个是 xxx.action 一个是 xxx 才对啊 。。。

wangzhonglong456 2012-10-17
  • 打赏
  • 举报
回复
你试我说的没啊!!!! 哎
wangzhonglong456 2012-10-17
  • 打赏
  • 举报
回复
jsp的 action=“名字” 与strusts里边的<action name="名字" class="LoginAction"> 俩名字得一样才能正确映射的!
BIGSHOTZHANG 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 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……
[/Quote]LoginAction.java编译成的LoginAction.class 直接放进了WEB-INF/class里面,没有任何编写java源文件时候,没有写任何package
chaochaocomeon 2012-10-17
  • 打赏
  • 举报
回复
无法访问是什么概念?报的什么错?我在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">
加载更多回复(24)

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧