Tomcat不能加载servlet(http status 404 The requested resource (/ch06/welcome) is not available)

1、能够访问静态页面(比如:http://localhost:8888/ch06/welcome.html)但不能访问诸如:http://localhost:8888/c... 1、能够访问静态页面(比如:http://localhost:8888/ch06/welcome.html
但不能访问诸如:http://localhost:8888/ch06/hello(即不能加载servlet)
2、上面的程序是孙鑫教程的源程序,所以不存在web.xml等配置的错误。
感谢各位指点我一下。
web.xml映射的类是有的,Servlet不带包声明,这些都没有问题,所有的代码都是拷贝过来的,我做的工作只是配置Tomcat,而且也配置成功了。可就是访问不了Servlet,这和Tomcat版本是否有关系,以及与jdk版本兼容性有没有关系?

真的好感谢你,你给我的目录结构太重要了,我ch06的路径是这个:D:\Program Files\apache-tomcat-5.5.27\webapps\ROOT\ch06;
按你的结构:目录应该是:D:\Program Files\apache-tomcat-5.5.27\webapps\ch06
但我发现Tommat的那个初始页面的确就是在webapps\ROOT下啊,而且,当如果我把我的ch06放在webapps/ROOT下的话,也能访问静态页面啊,只不过访问不了Servlet。
是不是server.xml规定用户的web应用程序就应该放在webapps下而不webapps\ROOT下啊?
还是其他地方还有规定。
初学java,可能问题有些菜。
展开
 我来答
taotling
推荐于2016-08-19 · TA获得超过2000个赞
知道小有建树答主
回答量:412
采纳率:50%
帮助的人:375万
展开全部
如果web.xml中配置无误的话,
你看看WEB-INF/classes下有没有web.xml中所映射的类,
注意你所写的Servlet如果带有包声明,
在WEB-INF/classes下的类路径要带上完整的包结构路径.

你把你放置代码的路径贴出来我看看,
404就是找不到资源,
不是版本兼容的问题,如果是版本兼容的问题,
那应该是500错误.

孙鑫的代码我看过,
http://localhost:8888/ch06/hello访问的应该是这个映射:
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>SimpleHello</servlet-class>
</servlet>

你的目录结构是这样的吗?
├—webapps
│ │
│ ├—ch06
│ │ │ login.html
│ │ │ success.html
│ │ │ welcome.html
│ │ │
│ │ ├—src
│ │ │ CounterServlet.java
│ │ │ LoginServlet.java
│ │ │ LoginServlet2.java
│ │ │ OutputInfo.java
│ │ │ PortalServlet.java
│ │ │ SimpleHello.java
│ │ │ WelcomeYou.java
│ │ │
│ │ └—WEB-INF
│ │ │ web.xml
│ │ │
│ │ └—classes
│ │ CounterServlet.class
│ │ LoginServlet.class
│ │ LoginServlet2.class
│ │ OutputInfo.class
│ │ PortalServlet.class
│ │ SimpleHello.class
│ │ WelcomeYou.class

如果是这样的结构,web.xml也没问题的话,
不可能访问出404错误的.

如果你自己没把ch06放置于Tomcat的webapps目录下,
而是在别的地方,
注意你的server.xml配置是否正确,
如果你改动了server.xml,
贴出来看看.

一般来说,在Tomcat中webapps下的每个文件夹都是一个独立的Web应用,
ROOT文件夹是Tomcat的一个默认的Web应用,你输入http://localhost:8888
的时候,默认的访问就是ROOT文件夹下的index.html

ch06算是一个简单的Web应用,你不能在ROOT这个Web应用嵌套另一个Web应用,
对于静态页面来说,只要URL路径与真实的Web应用的目录结构路径一致,就能访问,但如果要访问Servlet,其class类文件必须放于Web应用(不要嵌套)的WEB-INF/classes目录下.
w598042893
2012-07-18
知道答主
回答量:6
采纳率:0%
帮助的人:6853
展开全部
追问:我也遇到类似的问题。同一本教材。为了测试问题,我把另外正常的servlet也部署在这个服务下面,结果是新部署的可以访问,原来的还是遇到404.表面上看是这个servlet本身的问题,但是一个编译通过的class文件,什么情况下才会导致404错误?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
onezero104
2009-05-29 · TA获得超过281个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:93.2万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式