【问题标题】:Right structure to place files in a web-project将文件放置在 Web 项目中的正确结构
【发布时间】:2014-10-16 12:14:00
【问题描述】:

我对学习网络开发非常陌生。我正在使用head-first 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>");
               }
       }

当我启动服务器并运行尝试使用我的浏览器触发 URL http://localhost:8080/ch1/Serv1 时,我总是收到 resource not found 错误。为什么呢?我觉得我已经很好地遵循了书中指定的所有步骤?

【问题讨论】:

  • 如果 web.xml 正是您在服务器上拥有的那个,那么它就是格式错误的 xml,因为它在末尾缺少结束标记 ,因此 Web 应用程序不会部署。
  • 哦,对不起,我在这里复制错了,但它有结束标签。
  • 启动tomcat的时候有没有报错?如果是,请将其添加到您的问题中。
  • 不,tomcat正常启动。
  • 你为你的 Ch1servlet.java 类使用任何包吗?

标签: jakarta-ee servlets web


【解决方案1】:

您应该将 servlet 类放在 java 包中。无包 servlet 是否工作取决于旧 Tomcat 和 JVM 版本的特定组合。在这里,我可以看到您使用的是相当新的 Tomcat 版本,而且如果您在书籍/教程中看到此示例,那么它肯定已经过时了。

package com.example;

// ...

public class Ch1Servlet extends HttpServlet {
  // ...
}

你的 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>

试试看。我相信您的问题出在包裹上。

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 2012-06-13
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 2012-07-11
    相关资源
    最近更新 更多