【问题标题】:Can't find servlet in jetty [duplicate]在码头找不到 servlet [重复]
【发布时间】:2016-02-05 15:45:50
【问题描述】:

我真的很难弄清楚为什么我在提交表单时无法访问我的 servlet。我已经尝试多次更改xml中的路径并编辑了servlet代码,但是当我提交表单时,我的浏览器仍然找不到我的servlet。

这里是 web.xml:

<?xml version="1.0"?>
<web-app>


<servlet>
<servlet-name>quizServlet</servlet-name>
<servlet-class>quiz</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>quizServlet</servlet-name>
<url-pattern>/quiz</url-pattern>
</servlet-mapping>


</web-app>

我也尝试过让 form3/quiz 成为 url 模式。

这是一个简单的 servlet:

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

    public class quiz extends HttpServlet {
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        String grade = request.getParameter("grade");
        out.println("grade=" + grade);
        out.println("</body></html>");
        out.close();
    }

}

这里是html:

<html>
<body>
Quiz
<form method='post' action='quiz'>
    grade<input type='text' name='grade'>
<input type='submit'></form>
</body>
</html>

index.html 包含在 webapps/simpleForms/form3 中,web.xml 位于 webapps/simpleForms/form3/WEB-INF 中,quiz.java 位于 webapps/simpleForms/form3/WEB-INF/classes 中并被编译。

【问题讨论】:

  • 如果你尝试点击http://localhost:8080/simpleForms/quiz会发生什么?
  • 您的 web.xml 没有指定规范版本或 xsd/dtd,这可能导致未确定的 servlet 行为模式。您的类名也不符合规范(鼓励您使用包和以大写字母开头的类)。

标签: forms servlets jetty web.xml


【解决方案1】:

您的文件夹结构有问题。我可以运行您提供的代码。

  • 如果您的项目名称是webapps,则保留您的 servlet src(webapps/src/quiz) 文件夹。如果需要,可以使用包来组织它们。
  • 将您的 html 保存在 WebContent 文件夹中(webapp/WebContent/yourHtml.html)
  • 保留web.xml 下 WebContent/WEB-INF(webapp/WebContent/WEB-INF/web.xml)

有了这个文件夹结构,你应该可以运行你的servlet代码了。

【讨论】:

    猜你喜欢
    • 2014-09-19
    • 2018-06-06
    • 2012-07-06
    • 2014-08-21
    • 2014-04-14
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多