刚学servlet,遇到些问题,请各位达人指教

时间:2020-12-23 14:46:48
刚开始学习,在看《servlet和jsp核心编程》这本书,有些问题,请各位达人指教:
服务器tomcat已经安装配置好了,测试显示“hello”的html和jsp页面都通过,但是编译和部署servlet时就有错误了。
    1,不使用包的servlet,一个helloservlet.java编译成功,将class文件放入c:\tomcat4.1\webapps\root\web-inf\classes
       通过 http;//localhost/servlet/helloservlet无法访问,出现如下错误
HTTP Status 404 - /helloservlet

--------------------------------------------------------------------------------

type Status report

message /helloservlet

description The requested resource (/helloservlet) is not available.


--------------------------------------------------------------------------------

Apache Tomcat/4.1.31

2,使用包和是用工具类的servlet,HelloServlet3.java
package coreservlets;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

/** Simple servlet for testing the use of packages
 *  and utilities from the same package.
 *  <P>
 *  Taken from Core Servlets and JavaServer Pages 2nd Edition
 *  from Prentice Hall and Sun Microsystems Press,
 *  http://www.coreservlets.com/.
 *  &copy; 2003 Marty Hall; may be freely used or adapted.
 */

public class HelloServlet3 extends HttpServlet {
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
      throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    String title = "Hello (3)";
    out.println(ServletUtilities.headWithTitle(title) + 
                "<BODY BGCOLOR=\"#FDF5E6\">\n" +
                "<H1>" + title + "</H1>\n" +
                "</BODY></HTML>");
  }
}

编译出错:
helloservlet3.java:23: cannot resolve symbol
symbol  : variable ServletUtilities
location: class coreservlets.HelloServlet3
    out.println(ServletUtilities.headWithTitle(title) +
                ^
1 error

helloservlet3.java我放在d:\ServletDevel\coreservlets中编译,(不知道对不对)。
c:\AUTOEXEC.BAT已经添加如下:
set PATH=C:\j2sdk1.4.2_07\bin;%PATH%
set CLASSPATH=.;D:\ServletDevel;C:\Tomcat4.1\common\lib\servlet.jar
搞了一天也通不过,郁闷之极,

13 个解决方案

#1


classpath里的dt.jar和tools.jar还没有加呢~~

在说了~你的程序里也没有jsp页面那!!
1,class文件放入c:\tomcat4.1\webapps\root\web-inf\classes 这里放的.class的文件~
2. c:\tomcat4.1\webapps\root 这个放的是jsp页面!
你不能c:\tomcat4.1\webapps\root 这里访问java源程序

#2


servlet/helloservlet?
你servlet下有helloservlet.jsp文件吗~
一般HTTP Status 404问题就是访问的页面不存在~

#3


tomcat配置参数不方便,很难配成功。
你编的是servlet,改用jsp方式,就简单了

#4


WEB.XML没有配置好..配置好后还要reload一下才能生效.

#5


set PATH=C:\j2sdk1.4.2_07\bin;%PATH%
set CLASSPATH=.;D:\ServletDevel;C:\Tomcat4.1\common\lib\servlet.jar
=========================
你用的是win98?

#6


classpath里的dt.jar和tools.jar还没有加呢~~
这个怎么加?书上没提,不懂,能说一下么?
在说了~你的程序里也没有jsp页面那!!
1,class文件放入c:\tomcat4.1\webapps\root\web-inf\classes 这里放的.class的文件~
我就是把HelloServlet.clss放到这个目录下了,通过servlet调用器访问,不对吗?
2. c:\tomcat4.1\webapps\root 这个放的是jsp页面!
你不能c:\tomcat4.1\webapps\root 这里访问java源程序
我将一个jsp页面放到c:\tomcat4.1\webapps\root 下,已经可以访问了。

#7


WEB.XML没有配置好..配置好后还要reload一下才能生效.
能说的详细一点吗?什么地方没配好?
我的系统是2000。

#8


ServletUtilities.java已经编译成ServletUtilities.class,和helloservlet3.java一起放在d:\ServletDevel\coreservlets中,编译helloservlet3.java还是出错,为什么?

#9


c:\tomcat4.1\webapps\root\web-inf\web.xml内容如下

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
  <servlet>
    <servlet-name>helloservlet</servlet-name>
    <servlet-class>HelloServlet3</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>helloservlet</servlet-name>
    <url-pattern>/servlet/helloservlet</url-pattern>
  </servlet-mapping>
</web-app>

注意<servlet-class></servlet-class>中写入的类必须包含完整的包,例如你的servlet位于myPack包下,则应该是myPack.HelloServlet3

编译时应该如下
javac -classpath c:\tomcat4.1\common\lib\servlet.jar HelloServlet3.java

#10


有没有高人指点一下?自己看书实在是搞不清楚哪里有问题啊?都是按照书上的说法做的

#11


web.xml你配置了没有啊?怎么配置上面的兄弟应该说的很清楚了..

#12


404的错误主要是因为找不到文件,也就是说你的servlet的配置有问题,按照楼上的方法配好就行了

#13


谢谢大家,终于可是显示了,web.xml没有配置对。
第二个问题还没有解决,ServletUtilities.java已经编译成ServletUtilities.class,和helloservlet3.java一起放在d:\ServletDevel\coreservlets中,编译helloservlet3.java还是出错,为什么?
helloservlet3.java:23: cannot resolve symbol
symbol  : variable ServletUtilities
location: class coreservlets.HelloServlet3
    out.println(ServletUtilities.headWithTitle(title) +
                ^
1 error

#1


classpath里的dt.jar和tools.jar还没有加呢~~

在说了~你的程序里也没有jsp页面那!!
1,class文件放入c:\tomcat4.1\webapps\root\web-inf\classes 这里放的.class的文件~
2. c:\tomcat4.1\webapps\root 这个放的是jsp页面!
你不能c:\tomcat4.1\webapps\root 这里访问java源程序

#2


servlet/helloservlet?
你servlet下有helloservlet.jsp文件吗~
一般HTTP Status 404问题就是访问的页面不存在~

#3


tomcat配置参数不方便,很难配成功。
你编的是servlet,改用jsp方式,就简单了

#4


WEB.XML没有配置好..配置好后还要reload一下才能生效.

#5


set PATH=C:\j2sdk1.4.2_07\bin;%PATH%
set CLASSPATH=.;D:\ServletDevel;C:\Tomcat4.1\common\lib\servlet.jar
=========================
你用的是win98?

#6


classpath里的dt.jar和tools.jar还没有加呢~~
这个怎么加?书上没提,不懂,能说一下么?
在说了~你的程序里也没有jsp页面那!!
1,class文件放入c:\tomcat4.1\webapps\root\web-inf\classes 这里放的.class的文件~
我就是把HelloServlet.clss放到这个目录下了,通过servlet调用器访问,不对吗?
2. c:\tomcat4.1\webapps\root 这个放的是jsp页面!
你不能c:\tomcat4.1\webapps\root 这里访问java源程序
我将一个jsp页面放到c:\tomcat4.1\webapps\root 下,已经可以访问了。

#7


WEB.XML没有配置好..配置好后还要reload一下才能生效.
能说的详细一点吗?什么地方没配好?
我的系统是2000。

#8


ServletUtilities.java已经编译成ServletUtilities.class,和helloservlet3.java一起放在d:\ServletDevel\coreservlets中,编译helloservlet3.java还是出错,为什么?

#9


c:\tomcat4.1\webapps\root\web-inf\web.xml内容如下

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
  <servlet>
    <servlet-name>helloservlet</servlet-name>
    <servlet-class>HelloServlet3</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>helloservlet</servlet-name>
    <url-pattern>/servlet/helloservlet</url-pattern>
  </servlet-mapping>
</web-app>

注意<servlet-class></servlet-class>中写入的类必须包含完整的包,例如你的servlet位于myPack包下,则应该是myPack.HelloServlet3

编译时应该如下
javac -classpath c:\tomcat4.1\common\lib\servlet.jar HelloServlet3.java

#10


有没有高人指点一下?自己看书实在是搞不清楚哪里有问题啊?都是按照书上的说法做的

#11


web.xml你配置了没有啊?怎么配置上面的兄弟应该说的很清楚了..

#12


404的错误主要是因为找不到文件,也就是说你的servlet的配置有问题,按照楼上的方法配好就行了

#13


谢谢大家,终于可是显示了,web.xml没有配置对。
第二个问题还没有解决,ServletUtilities.java已经编译成ServletUtilities.class,和helloservlet3.java一起放在d:\ServletDevel\coreservlets中,编译helloservlet3.java还是出错,为什么?
helloservlet3.java:23: cannot resolve symbol
symbol  : variable ServletUtilities
location: class coreservlets.HelloServlet3
    out.println(ServletUtilities.headWithTitle(title) +
                ^
1 error