- 浏览: 14430 次
最新评论
Struts2入门碰钉记
2010年11月01日
前一阵子,想着学学Struts2吧,就借了本书开始干。经历了下载myEclipse漫长的等待,解决了Tomcat的设置问题后,一个长久而纠结大问题把我郁闷得不行。
这就是"HTTP STATUS 404 request resource (xxxxx.action) is not available"错误。
先看代码:
web.xml
[/b] [b]-
Struts 2
-
struts2
org.apache.struts2.dispatcher.FilterDispatcher
-
struts2
/*
-
index.html
----------------------------
struts.xml
-
-
-
/helloreader.jsp
------------------------
HelloReader.java
package tutorial;
import com.opensymphony.xwork2.ActionSupport;
public class HelloReader extends ActionSupport{
public static final String MESSAGE = "Hello Reader, I'm from Struts 2!";
public String execute() throws Exception{
setMessage(MESSAGE);
return SUCCESS;
}
private String message;
public void setMessage(String message){
this.message=message;
}
public String getMessage(){
return message;
}
}
-------------------
helloreader.jsp
Hello Reader!
================
开始我觉得是配置的问题。因为架构中变量参数很多,讲究个一致。
其中,web.xml中和中相应的filter-name要完全一样;struts.xml中result标签内容要和要跳转到的jsp文件名一致;action标签的name属性要和URL中最后的action名一致……其中的道理非常简单,但容易出错。
我就把两个xml文件从头到尾检查了N遍,得出结论:和书上的一模一样,并且没有错误!
后来我想,用action访问不到,直接输jsp路径呢?结果,jsp也访问不到!这个比较弱智,是因为我的URL输的不对,我输的是:http://localhost:8080/项目名/HelloReader.action/,这是不对的。http://localhost:8080/是到Tomcat文件夹中的webapps目录下,而我为了防止凌乱,在它下面建了个Pros目录,将我的工程都放在里面。这样就应该是http://localhost:8080/Pros/项目名/HelloReader.action/
或者把Tomcat的conf文件夹中的server.xml里的中的appBase改为"webapps/Pros"也行。
没辙,然后开始到网上去问。
一上网才知道,这个问题困扰了海一样的人!都是问这个问题的,回应的人也很多,但最终解决问题的却很少,就算解决了,他们的方法我试了,也都不行。好多人也是晕晕乎乎就好的。
下面是我看到了几种解决方法:
一、代码错误
有的人最后发现,自己代码打错了!我气得直接PASS。
二、文件位置错误
我看了看我的文件们的位置。struts.xml和tutorial.HelloReader.java在src目录下,web.xml在WEB-INF目录下,而helloreader.jsp在WebRoot根目录下。
一切是那么完美,但就是有错~
三、jar包版本的问题
我认为是struts2的问题,我用的是2.2.1,于是开始下其他的。结果,是一样的~
四、晕晕乎乎好的
我更晕。
然后我就晕了,这已经搞掉我一天的时间,接下来的几天里我都有空就上网看看有没有解决办法,结果没有。
后来,我看到有人说Struts2的lib里的包不能全导入工程,会冲突。简单的程序只要导入struts2-core.jar、xwork.jar、ognl.jar 、commons-logging.jar、commons-fileupload.jar 五个包就行。马上删去工程里我早就看不顺眼的其它包,然后满怀希望地调试,又出现了404那熟悉的数字……吐!
至此,我已经把Struts2的流程、原理搞得熟透,简单例子的代码闭着眼就写出来了,睁开眼看一看一恶心,顺便熟悉了Tomcat的各种配置,甚至对XML又有了新的认识……
但就是搞不掉404 。
和网上好多人一样绝望。
今天看见,有人说Struts2.2.1(正是我用的版本!我怎么这么倒霉!)必须在项目的lib里加上一个叫javassist-X.X.ga.jar的包,这个包在Struts2下的lib中还没有!这不玩人呢吗?我马上下了一个这个XX包,导入工程后……还是404!
晕倒。
最后才知道,不用下载,在Struts2送的例子的lib文件夹中就有那个javassist包。我……
刚才,看见有人提到WAR文件什么的,发布方式不一样,就有可能运行不起来。不抱希望的我,就把工程打包成WAR文件Export到webapps文件夹里,结果输入URL,以action结尾,还是404!吐啊~
不过幸亏我又看了一眼,这回这个404和原来不一样!原来都是XXXXX.action )is not available,这个是XXXXX.jsp) is not available!说明它跳转了!只是JSP文件没找到!!!
结果发现,WAR文件里没有我放在工程根目录下的jsp文件,那它跑哪了呢?经过对比发现,WAR的根目录就是工程里的WebRoot目录!马上把jsp文件放到WebRoot目录下,重启Tomcat,输入那被我输了千遍的URL。
当Hello Reader, I'm fom Struts2!这一行字出现时,我竟有点不敢相信,也没有很兴奋,默默地写了这篇文章!
回头看看,虽然最终是靠不同的发布方式解决了问题,但上面说的真的也是可能造成这样错误的原因!比如代码输错,使配置文件不能很好地传递数据;URL错误,使Struts找不到相应的action等。
以前所做的一些修改也不是多余的。其实我是犯了很多错误,只不过改变发布方式是最后一次改正罢了。比如javassist.jar这个包是需要的。我把它删掉后,连Struts2给的例子都不能运行。
PS:其实只要点击MyEclipse中的Deploy命令,选择工程名及Tomcat版本后,即可自动发布成功!且以后有修改只要Redeploy即可,不用重启Tomcat服务器。
补:今天(2011年8月18日)又配了一个struts2,出现以下错误:
Unable to load configuration. - bean - jar:file:/D:/Program%20Files/Tomcat%206.0/webapps/ssh/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:47:178
Tomcat启动都失败了。试了其他的struts版本也不行,最后原来是公司机器上Tomcat的问题。
又在官网上下了个Tomcat,于是就成功了。
发表评论
-
Android领衔:2010年移动开发平台回顾
2012-01-20 09:37 549Android领衔:2010年移动开发平台回顾 2010年1 ... -
DirectShow技术介绍(长篇)-1
2012-01-20 09:37 1228DirectShow技术介绍(长篇)-1 2011年01月1 ... -
Android开发环境安装与配置
2012-01-20 09:37 661Android开发环境安装与配 ... -
WP7 环境准备
2012-01-20 09:37 668WP7 环境准备 2010年06月14日 WPMind. ... -
Visual Studio 2008 SP1 补丁安装时发生严重错误-安装失败-解决方法整合版!-分享
2012-01-20 09:36 1274Visual Studio 2008 SP1 补丁 ... -
有关SVN的一些麻烦
2012-01-19 14:39 1103有关SVN的一些麻烦 2011年02月28日 前段时间整 ... -
新Eclipse插件可以快速构建主流java框架
2012-01-19 14:39 850新Eclipse插件可以快速构建主流java框架 2010年 ... -
flex安装
2012-01-19 14:39 695flex安装 2011年03月30日 需要软件: a ... -
ClassLoader整理总结
2012-01-19 14:39 643ClassLoader整理总结 2010年10月16日 ... -
20100816JavaScript核心基础语法
2012-01-17 04:25 53820100816JavaScript核心基础 ... -
javascript内置函数
2012-01-17 04:25 797javascript内置函数 2010年09月08日 ... -
总结性知识:107个常用Javascript语句
2012-01-17 04:25 573总结性知识:107个常用Javascript语句 2010年 ... -
常用js
2012-01-17 04:25 488常用js 2010年10月01日 ... -
JS代码大全
2012-01-17 04:25 524JS代码大全 2010年10月11日 1.documen ... -
女性最为吸引人的品质
2012-01-16 03:15 556女性最为吸引人的品质 2009年10月11日 ... -
(转)《重庆女性特质调查报告》出炉 漂亮能干泼辣排前三
2012-01-16 03:15 703(转)《重庆女性特质调 ... -
与女性相处的秘诀
2012-01-16 03:15 606与女性相处的秘诀 2009 ... -
女性最为吸引人的品质
2012-01-16 03:15 528女性最为吸引人的品质 ... -
现代女性吸引人的气质
2012-01-16 03:15 702现代女性吸引人的气质 ...
相关推荐
改struts2入门案例是我本人自己写的入门小案例,可以使用。适合刚接触或者准备学习struts2的同事拿来看看
Struts2入门案例 实现简单的
struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序
Struts2入门教程.pdf j2ee的进阶读物,
( struts2入门实例教程详解.docx )
Struts2入门V3.0
Struts2入门PPT教程 Struts2入门PPT教程 Struts2入门PPT教程
struts2 例子 struts.xml基本配置 页面跳转
struts2入门案例struts2入门案例struts2入门案例struts2入门案例struts2入门案例struts2入门案例
Struts2入门demo 希望对初学者有用!!!
帮助学习struts2的朋友,一些入门的例子。
很好的struts2入门教程,网上搜集整理的! 内容: ·常用的Struts 2.0的标签(Tag)介绍 ·Struts 2.0的Action讲解 ·Struts2国际化(i18n)您的应用程序 ·Struts2.0转换器(Converter) ·Struts 2.0中实现...
十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...
struts2入门教程及struts2集成spring。
struts2入门(传参) 简单的struts2登陆实例
本项目是Struts2项目,初学者有疑问可以下载观看,寻找自己需要的知识,算是Struts2入门级项目
struts2入门struts2 标签, 关于struts2基本标签使用
struts2 入门书籍 一个网友的总结 现在我将它共享。