在学习struts2的过程中,遇到了http status 404 的问题,由于是跟着视频学的,所以出错后的第一反应是里面的代码写错了,于是乎,我开始跟视频上的一点一点的对照,后来发现没有写错,还是供源的作者人好,竟然还有源代码,我就直接把工程给导入了,接下来悲剧了,还是这个错,于是寄希望于百度了。不过还好,最后总算是把问题解决了,把方法贴出来,希望能帮到大家吧。
可能的情况如下:
HTTP Status 404(The requested resource is not available)的几种解决方案
1. 未部署Web应用
2.URL输入错误
排错方法:
首先,查看URL的IP地址和端口号是否书写正确。
其次,查看上下文路径是否正确 Project--------Properties------MyElipse-----Web-----
Web Context-root检查这个路径名称是否书写正确。
最后,检查一下文件名称是否书写正确。
3.目录不能被引用
排错方法:
在 Eclipse的“包资源管理器(Package Explorer)”检查文件存放的位置。由于META-INF
WEB-INF文件夹下的内容无法对外发布,所以,如果你引用了带这两个目录的文件,肯定是不允许。例如: http://localhost:8080/guestbook/WEB-INF/index.html就是错误的
文件位置存放错误
4. Tomcat服务器中web.xml中的问题
排错方法:
如果你的web应用程序有多个jsp页面的话,当你点击你web应用程序的虚拟根目录时可能会出现404错 误,只是你只需要修改Tomcat服务器中web.xml
<init-param>
<param-name>listings</param-name>
<param-value>false(将其该为true)</param-value>
</init-param>
补充说明:在6.0.18 版本error:“ The requested resource () is not available. ”
总是无法访问/myapp/*.jsp文件,可以将 /ROOT 中build.xml 文件copy 一份到myapp, 注意把里面所有的 ROOT 用 myapp 代替. 应该就OK.
5、WEB-INF下面必须要有几个固定的文件夹和文件
±web.xml 该web app的配置文件
±lib 该web app用到的库文件
±classes存放编译好的servlet
请注意他们的名字,我曾经就由于把classes写成class,查错查了半宿还没解决,所以写这些的时候千万要仔细,要不会浪费更多的精力去查错。
6、如果要运行的不是.jsp文件,而是servlet(.class)文件,要配置web.xml(当然是WEB-INF下面的),加上以下字段:
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/HelloWorldServlet</url-pattern>
</servlet-mapping>
其中的“HelloWorldServlet”改为你要运行的文件名
如果你的错误原因以上的都不是,那么可能就是下面的问题了
可能是你没有部署tomcat,以下是方法:
关于Myeclipse中tomcat的部署问题:
一、在Myeclipse软件中部署
1、 在Myeclipse中,创建好工程后,在Myeclipse菜单栏中选择 Windows -> Preferences -> Myeclipse -> Tomcat5,选择"Enable";Tomact Home Directory要选择你机器上Tomcat所安装的目录。然后,再Windows -> Preferences-> Myeclipse -> Tomcat5 ->JDK,确保这个是有对应的jdk版本,若没有,则通过"Add"添加其安装路径。ok
2、选择工具栏上的 按钮,在”Project”中选择你要部署的工程,然后”Add”,再选择”Tomcat”,Finish。
3、 在工具栏上选择 ,启动Tomcat。
4、 运行程序。在IE中输入http://localhost:8080/aa/WebRoot/index.jsp(aa为工程名字)
二、在Tomcat的server.xml配置文件中部署(我就是用这种方法解决的)
1、在Tomcat下,找到conf文件下的server.xml,打开。
2、在<Host>和</host>之间加上如下代码:
1 <Context path="/虚拟目录名" docBase="目标目录位置" debug="0" reloadable="true">
2 </Context>
(严格区分大小写,当path=""时,此时的虚拟目录直接为root--->http://localhost:8080/)
path:表示在浏览器中输入http://localhost:8080/虚拟目录名
docBase:表示你的程序包的物理绝对路径,默认的绝对路径是 %tomcat_home%/webapps
reloadable :为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序;为false则不自动加载。(我觉得这种部署方法就好在这里,可以不用重新启动Tomcat。)
示例: 1 <!-- 我的自定义目录-->
2 <Context path="/wess" debug="0" docBase="C:\Documentsand Settings\tt\workspace\Welcome_SS\WebRoot" reloadable="true">
3 </Context>
4、 启动Tomcat
在Myeclipse工具栏上选择 ,启动Tomcat。或者在Tomcat下,找到bin文件下的startup.bat,打开进行启动。
5、 运行程序。在地址中输入http://localhost/wess/index.jsp(引用上面示例配置时的情况)
在lib下的struts-config.xml可以添加下面三句进行主页默认的配置,而不必写出主页。
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
注:由于以上提到的有些图片不能显示,故把出处附上:http://wenku.baidu.com/view/69bce89c51e79b89680226ca.html
特别说明:如果以上情况都不是,可能是你的tomcat的安装路径问题,一般情况下我们会把tomcat的安装路径设为D:\Program Files\apache-tomcat-6.0.18,注意了,Program与Files中间的空格很可能就是问题所在,建议大家改变tomca的安装路径,如:C:\apache-tomcat-6.0.18,只要文件夹的名字中不含空格就可以了