A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冰深 中级黑马   /  2012-11-19 12:50  /  3863 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冰深 于 2012-11-20 09:28 编辑

    我在学习JavaWeb开发的时候尝试写Servlet的时候报404错误是怎么回事?
    就是老师举的第一个例子,手写一个Servlet,我的代码:
  1. package cn.tender;
  2. import java.io.*;
  3. import javax.servlet.*;

  4. public class FirstServlet extends GenericServlet
  5. {
  6.         public void service(ServletRequest req,ServletResponse res)throws ServletException, java.io.IOException
  7.         {
  8.                 OutputStream out=res.getOutputStream();
  9.                 out.write("Hello My First Servlet Demo!哈哈~".getBytes());
  10.         }

  11. }
复制代码
然后编译之后成功生成了class文件,又写下web.xml配置文件
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!--
  3.   Licensed to the Apache Software Foundation (ASF) under one or more
  4.   contributor license agreements.  See the NOTICE file distributed with
  5.   this work for additional information regarding copyright ownership.
  6.   The ASF licenses this file to You under the Apache License, Version 2.0
  7.   (the "License"); you may not use this file except in compliance with
  8.   the License.  You may obtain a copy of the License at

  9.       http://www.apache.org/licenses/LICENSE-2.0

  10.   Unless required by applicable law or agreed to in writing, software
  11.   distributed under the License is distributed on an "AS IS" BASIS,
  12.   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.   See the License for the specific language governing permissions and
  14.   limitations under the License.
  15. -->
  16. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  17.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  18.    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  19.    version="2.5">
  20. <servlet>
  21.     <servlet-name>FirstServlet</servlet-name>
  22.     <servlet-class>cn.tender.FirstServlet</servlet-class>
  23.   </servlet>

  24.    <servlet-mapping>
  25.     <servlet-name>FirstServlet</servlet-name>
  26.       <url-pattern>/FirstServlet</url-pattern>
  27.   </servlet-mapping>
  28.   </web-app>
复制代码
启动Tomcat6之后访问该页面http://192.168.1.100:8080/serverlet/FirstServlet 结果就是报错:
  1. HTTP Status 404 - Servlet FirstServlet is not available

  2. type Status report

  3. message Servlet FirstServlet is not available

  4. description The requested resource is not available.

  5. Apache Tomcat/6.0.36
复制代码
然后我怀疑是web.xml文件写错了,于是又找到jsp来测试,将XML文件添加一个节点:
  1. <welcome-file-list>
  2.     <welcome-file>index.jsp</welcome-file>
  3.   </welcome-file-list>
复制代码
访问这个jsp文件结果成功了!
jsp代码index.jsp代码:
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4.   <head>
  5.     <title>我的第一个JSP页面。</title>
  6.   </head>
  7.   <body>
  8.     Hello world!

  9.     <%
  10.         String name = "Servlet木块测试";
  11.         out.println(name);
  12.     %>
  13.   </body>
  14. </html>
复制代码
访问http://192.168.1.100:8080/serverlet/ ,按这个推测应该是XML文件没有写错啊,运行成功有结果!这是什么原因呢?难道是Tomcat需要一些额外的配置吗(因为教程里没看到tomcat安装,所以是自己配置的)?



评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2 赞一个!

查看全部评分

14 个回复

正序浏览
冰深 中级黑马 2012-11-20 11:59:54
15#
卍解 发表于 2012-11-20 10:24
你是不是在web.xml中配置的,下面的web.xml.bak和webdd.xml是什么啊。可以删除掉。你配置文件没有错,实 ...

web.xml.bak是editplus自动生成的备份文件,不会影响的,现在找到原因了,谢谢哦~
回复 使用道具 举报
卍解 中级黑马 2012-11-20 10:24:06
14#
冰深 发表于 2012-11-19 23:09
位置应该没错吧?
这是xml和jsp的文件位置:

你是不是在web.xml中配置的,下面的web.xml.bak和webdd.xml是什么啊。可以删除掉。你配置文件没有错,实在不行换个tomcat试试.
回复 使用道具 举报
冰深 中级黑马 2012-11-20 09:03:00
13#
焦晨光 发表于 2012-11-20 01:47
我不清楚楼主 是怎么编写这个Servlet的
我把我总结的 不使用工具 编写Servlet步骤写一下
编写步骤:

我的代码就是上面的啊,而且就算这个步骤,所以就很纳闷了~~
回复 使用道具 举报
我不清楚楼主 是怎么编写这个Servlet的
我把我总结的 不使用工具 编写Servlet步骤写一下
编写步骤:
1、建立标准的JavaWeb应用的目录结构
FirstApp
WEB-INF
  classes
  lib
  web.xml
2、进入WEB-INF/classes目录下,编写一个类
package com.itheima.servlet;
import javax.servlet.*;
import java.io.*;
public class HelloServlet extends GenericServlet{
public void service(ServletRequest req,
                             ServletResponse res)
                      throws ServletException,
                             java.io.IOException{
  String data = "Hello World";
  res.getOutputStream().write(data.getBytes());
}
}
3、编译该类。不要忘记设置classpath,把servlet-api.jar加进来
set classpath=%classpath%;C:\apache-tomcat-6.0.35\lib\servlet-api.jar
javac -d . HelloServlet.java
4、映射Servlet。修改web.xml文件
<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
<servlet>
        <servlet-name>fuck</servlet-name>
        <servlet-class>com.itheima.servlet.HelloServlet</servlet-class>
   </servlet>
<servlet-mapping>
        <servlet-name>fuck</servlet-name>
        <url-pattern>/fuck</url-pattern>
    </servlet-mapping>
</web-app>
5、部署当前web应用,拷贝到Tomcat\webapps目录下,并启动Tomcat
6、访问:http://localhost:8080/FirstApp/fuck


回复 使用道具 举报
冰深 发表于 2012-11-19 23:27
还是没找到解决方法,回头再试试吧~~~~~

嗯,总之程序这东西就得细心, 上次一个小错误 纠结我大半天时间
回复 使用道具 举报
冰深 中级黑马 2012-11-19 23:27:15
10#
sp000 发表于 2012-11-19 23:11
刚发了一篇关于xml路径问题的帖子,可以去看看,说不定还有点用

还是没找到解决方法,回头再试试吧~~~~~
回复 使用道具 举报
冰深 发表于 2012-11-19 23:10
关键就是我觉得路径没有错。。。。没找到问题~

刚发了一篇关于xml路径问题的帖子,可以去看看,说不定还有点用
回复 使用道具 举报
冰深 中级黑马 2012-11-19 23:10:07
8#
sp000 发表于 2012-11-19 23:03
路径不对,或者网页不存在

关键就是我觉得路径没有错。。。。没找到问题~
回复 使用道具 举报
冰深 中级黑马 2012-11-19 23:09:04
7#
卍解 发表于 2012-11-19 21:08
404是找不到页面的问题,你访问http://192.168.1.100:8080/serverlet/能访问到index.jsp说明你配置到tomcat ...

位置应该没错吧?
这是xml和jsp的文件位置:

这是class文件位置:

貌似没有错吧?~{:soso_e117:}



回复 使用道具 举报
路径不对,或者网页不存在
回复 使用道具 举报
404是找不到页面的问题,你访问http://192.168.1.100:8080/serverlet/能访问到index.jsp说明你配置到tomcat里面去了。说明你servlet的web.xml配置FirstServlet类有问题。检查一下
  1. 22.<servlet>

  2. 23.    <servlet-name>FirstServlet</servlet-name>

  3. 24.    <servlet-class>cn.tender.FirstServlet</servlet-class>

  4. 25.  </servlet>

  5. 26.

  6. 27.   <servlet-mapping>

  7. 28.    <servlet-name>FirstServlet</servlet-name>

  8. 29.      <url-pattern>/FirstServlet</url-pattern>

  9. 30.  </servlet-mapping>

复制代码
类的位置写对没。
回复 使用道具 举报
没人吗?!                  
回复 使用道具 举报
本帖最后由 冰深 于 2012-11-19 13:50 编辑
都彭韬 发表于 2012-11-19 13:36
web.xml 写错了吧
第22行
少了

这是我笔误,我的代码上有这段~,谢谢哦~{:soso_e113:}希望能找到原因~
回复 使用道具 举报
web.xml 写错了吧
第22行
少了
<servlet>
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马