java - 当我按下提交按钮时出现 HTTP 状态 404

标签 java tomcat servlets

<分区>

这是我的 html 代码:

<form action="Post" method="post"  >

    <label for="semester">Semester</label>
    <input type="text" name="semester" placeholder="Enter the semester">

    <label for="prof-name">Instructor's name</label>
    <input type="text" name="prof-name" placeholder="Enter the instructor's name">

    <label id="course-eval">How was the course?</label>
    <textarea  name="course-evaluation" placeholder="Write everything about the course"></textarea>

    <label for="prof-eval">How was your professor?</label>
    <textarea name="prof-evaluation" placeholder="Write everything about your professor"></textarea>

    <input type="submit" value="Submit" >

</form>

这是我的 servlet 代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String semester = request.getParameter("semester");
    String name = request.getParameter("prof-name");
    String course = request.getParameter("course-evaluation");
    String prof = request.getParameter("prof-evaluation");

    response.setContentType("text/html;");
    PrintWriter writer = response.getWriter();

    writer.println("<html><head></head><body>");
    writer.println("Semester:"+semester+"<br/>");
    writer.println("Instructor's name:"+name+"<br/>");
    writer.println("How was the course?:"+course+"<br/>");
    writer.println("How was your professor?:"+prof+"<br/>");
    writer.print("</body></html>");
    writer.close();
}

这是我的 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>skce</display-name>
  <welcome-file-list>
    <welcome-file>cse101.html</welcome-file>
    <welcome-file>cse101.htm</welcome-file>
    <welcome-file>cse101.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
   <servlet-name>Post</servlet-name>
   <servlet-class>com.skce.post.Post</servlet-class>

   <init-param>
    <param-name>semester</param-name>
    <param-value></param-value>
   </init-param>

   <init-param>
    <param-name>prof-name</param-name>
    <param-value></param-value>
   </init-param>

   <init-param>
    <param-name>course-evaluation</param-name>
    <param-value></param-value>
   </init-param>

   <init-param>
    <param-name>prof-evaluation</param-name>
    <param-value></param-value>
   </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>Post</servlet-name>
    <url-pattern>/post</url-pattern>
  </servlet-mapping>
  <listener>
    <listener-class>com.skce.post.ContextListener</listener-class>
  </listener>
</web-app>

我得到 HTTP 状态 404,描述是“请求的资源不可用”。我使用 Apache Tomcat/7.0.73。

什么会导致这个错误?

最佳答案

如果您的表单是 JSP 页面,请使用 taglib 为您的表单生成正确的上下文路径,这样您就不会在表单操作属性中对其进行硬编码。 <c:url/> taglib 将正确的上下文路径添加到您的表单操作。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<form action="<c:url value="/post"/>" method="post"  >
...
</form>

要使用 taglib,您需要将以下依赖项添加到您的 Web 项目。

<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

关于java - 当我按下提交按钮时出现 HTTP 状态 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41787601/

相关文章:

java - jhipster V5.8.2 中将initialValue 添加到SequenceGenerator

eclipse - 在 Tomcat 上使用 Eclipse 使用 Rabbit MQ 消息

java - 无法在我的 Springboot 应用程序中检索模板

java - 如何在Java中检查何时按下网页重新加载按钮

java - 如何在Android设备上使用Android应用程序通过蓝牙接收5字节数据?

java - java中如何从目录中顺序读取文件?

java - 布局 Inflate 中的alignParentBottom

java - Tomcat项目文件夹做什么?

java - JUnit 使用 Mockito 进行 Servlet 测试用例

servlets - 在 Vaadin 7.6 中获取当前的 servlet 请求?