【问题标题】:correct file structure for mvc (servlets,jsp,web.xml)正确的 mvc 文件结构(servlets、jsp、web.xml)
【发布时间】:2015-12-12 15:06:48
【问题描述】:

我正在编写一个名为FirstApp的简单mvc应用程序。该项目的文件结构如下:

FirstApp
|--entername.html
|--WEB-INF
    |--web.xml
    |--classes
          |--web
             |--EnterName.class
          |--model

当我尝试在 tomcat 服务器上运行它时,它给了我一个 HTTP 500 错误。
据我所知,我的部署描述符是正确的。

<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"
  metadata-complete="true">

  <display-name>Welcome to first servlet</display-name>
  <description>
     Welcome to My first servlet on linux
  </description>

  <servlet>
    <servlet-name>first servlet</servlet-name>
    <servlet-class>web.EnterName</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>first servlet</servlet-name>
    <url-pattern>/Enter.do</url-pattern>
  </servlet-mapping>

</web-app>

EnterName.java 文件

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

public class EnterName extends HttpServlet {
    public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException
    {
        res.setContentType("text/html");
        PrintWriter pw = res.getWriter();
        pw.println("hello how are you ");
    }
}

导致错误的原因是什么?model 文件夹中目前没有文件

【问题讨论】:

  • EnterName.java的源代码是什么?您如何部署应用程序?
  • @JBNizet 上述结构存在于 apache-tomcat-7.0.67/webapps/FirstApp 目录中
  • EnterName.java的源代码是什么?
  • @JBNizet 刚刚添加了它。

标签: java jsp servlets model-view-controller web.xml


【解决方案1】:

您的类不在web 包中,正如您声称的在web.xml 文件和目录结构中。

添加

package web; 

作为课程的第一行。

WEB-INF/classes 下的目录结构必须与包结构完全匹配。该类仅在其实际包为web 且其简单名称为EnterName 时才命名为web.EnterName

【讨论】:

  • 是的。我真傻。这行得通。如果我不在我的 java 文件和 web.xml 文件中使用 package web 怎么办,只使用 &lt;servlet-class&gt;EnterName&lt;/servlet-class&gt; 它不工作
  • 永远不要使用默认包。这是 Java 从一开始就应该禁止的事情之一。只是永远不要使用它。也就是说,我认为它应该在这种情况下工作,只要您将 EnterName.class 文件直接放在 WEB-INF/classes 下。
  • 是的。明白了。放在classes 文件夹下时有效。
猜你喜欢
  • 1970-01-01
  • 2013-02-07
  • 2016-06-21
  • 2012-12-08
  • 2011-10-02
  • 2012-11-06
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多