将文件放在Web项目中的正确结构

时间:2014-10-16 12:14:01

标签: java-ee servlets web

我对学习网络开发极其陌生。我正在使用头脑优先的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错误。为什么会这样?我觉得我已经按照书中指定的所有步骤做好了吗?

1 个答案:

答案 0 :(得分:0)

您应该将servlet类放在java包中。无包装servlet是否有效取决于较旧的Tomcat和JVM版本的特定组合。在这里,我可以看到你正在使用一个相当新的Tomcat版本,如果你在书/教程中看到这个例子,那么它肯定已经过时了。

&#13;
&#13;
package com.example;

// ...

public class Ch1Servlet extends HttpServlet {
  // ...
}
&#13;
&#13;
&#13;

你的web.xml应该是这样的:

&#13;
&#13;
<? 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;
&#13;
&#13;

试试看。我相信你的问题在于包裹。