我对学习网络开发极其陌生。我正在使用头脑优先的Java,在完成第一章后,我完全陷入了一个问题。所以,直接问题: 我正在使用Apache-tomcat-7.0.55。在webapps文件夹中,我创建了我的项目,它的文件夹结构如下:
/path_to/apache-tomcat-7.0.55/webapps
-- /ch1/`my project folder`
--WEB-INF/ --web.xml
--classes/ --Ch1servlet.class
我的web.xml如下:
<?xml version="1.0" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4"
>
<servlet>
<servlet-name>Chapter1 Servlet</servlet-name>
<servlet-class>Ch1servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Chapter1 Servlet</servlet-name>
<url-pattern>/Serv1</url-pattern>
</servlet-mapping>
和Ch1servlet.java文件如下:
public class Ch1servlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
IOException{
PrintWriter out = response.getWriter();
java.util.Date today = new java.util.Date();
out.println("<html>" +
"<body>" +
"<h1 align=center>HF\'s Chapter1 Servlet</h1>" +
"<br>" + today + "</body>" + "</html>");
}
}
当我启动服务器并运行尝试使用浏览器触发网址http://localhost:8080/ch1/Serv1
时,我总是遇到resource not found
错误。为什么会这样?我觉得我已经按照书中指定的所有步骤做好了吗?
答案 0 :(得分:0)
您应该将servlet类放在java包中。无包装servlet是否有效取决于较旧的Tomcat和JVM版本的特定组合。在这里,我可以看到你正在使用一个相当新的Tomcat版本,如果你在书/教程中看到这个例子,那么它肯定已经过时了。
package com.example;
// ...
public class Ch1Servlet extends HttpServlet {
// ...
}
&#13;
你的web.xml应该是这样的:
<? xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>Chapter1 Servlet
</servlet-name>
<servlet-class>com.example.Ch1Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Chapter1 Servlet</servlet-name>
<url-pattern>/Serv1</url-pattern>
</servlet-mapping>
</web-app>
&#13;
试试看。我相信你的问题在于包裹。