请教tomcat6.0中servlet的配置问题!
新手学习JSP,使用清华大学出版社出版的《Servlet与JSP核心编程》第2版
JDK是jdk-1_5_0_04-windows-i586-p.exe
TOMCAT是apache-tomcat-6.0.13.exe
JDK的安装目录是E:\Java\jdk1.5.0_04
TOMCAT的安装目录是E:\Tomcat 6.0
环境变量:
PATH
E:\Java\jdk1.5.0_04\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
classpath
.;E:\Java\jdk1.5.0_04\lib\dt.jar;E:\Java\jdk1.5.0_04\lib\tools.jar;E:\Tomcat 6.0\lib\servlet-api.jar;
CATALINA_HOME
E:\Tomcat 6.0
在E:\Tomcat 6.0\webapps\ROOT目录下,编写Hello.html和Hello.jsp,测试通过。
在E:\Tomcat 6.0\webapps\ROOT\WEB-INF\classes目录下,编写HelloServlet.java
代码如下:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/** Simple servlet used to test server.
* <P>
* Taken from Core Servlets and JavaServer Pages 2nd Edition
* from Prentice Hall and Sun Microsystems Press,
* http://www.coreservlets.com/.
* © 2003 Marty Hall; may be freely used or adapted.
*/
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType( "text/html ");
PrintWriter out = response.getWriter();
String docType =
" <!DOCTYPE HTML PUBLIC \ "-//W3C//DTD HTML 4.0 " +
"Transitional//EN\ "> \n ";
out.println(docType +
" <HTML> \n " +
" <HEAD> <TITLE> Hello </TITLE> </HEAD> \n " +
" <BODY BGCOLOR=\ "#FDF5E6\ "> \n " +
" <H1> Hello </H1> \n " +
" </BODY> </HTML> ");
}
}
编译成HelloServlet.class后在IE里执行http://localhost/servlet/HelloServlet
被告示HTTP Status 404 错误,书上说是classpath设置不对
望对servlet配置熟悉的人告之!!!
[解决办法]
HTTP Status 404 是没找到页面,和classpath没关系
另外http://localhost/servlet/HelloServlet这种写法,只在Tomcat 4.0以前的版本好用,以后的版本为了安全起见,已经把这个默认配置修改了
如果你非要不配置web.xml就想让HelloServlet可移执行的话,修要做以下修改
找到\Tomcat 6.0\conf\web.xml,打开这个文件
把下面这两段的注释放开
<!--
<servlet>
<servlet-name> invoker </servlet-name>
。。。
</servlet>
-->
<!--
<servlet-mapping>
<servlet-name> invoker </servlet-name>
。。。
</servlet-mapping>
-->
之后,重新启动tomcat就可以了
[解决办法]
在你的action 里加上 <%=request.getContextPath()%>
例子action= " <%=request.getContextPath()%> /servletname "
[解决办法]
看你的web.xml,配置的Servlet的映射名是Servlet1啊
你怎么用
http//localhost/myapp/Servlet?
当然找不到了
用http//localhost/myapp/Servlet1 试试