Java 表单提交在servlet应用程序中不起作用

Java 表单提交在servlet应用程序中不起作用,java,servlets,Java,Servlets,下面是web.xml、servlet和jsp代码 import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespons

下面是web.xml、servlet和jsp代码

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MyServlet
 */

public class MyServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;

   /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doGost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  String userName = request.getParameter("userName");
  PrintWriter out = response.getWriter();
  out.println("hello "+userName+" how are you ?");
 }

}
JSPCode:

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
 This is First Servlet
 <form action="firstTest">
  <table>
   <tr>
    <td>Username:</td>
    <td><input type="text" name="userName"/></td>
   </tr>
   <tr>
    <td> Password:</td>
    <td><input type="password" name="password" /></td>
   </tr>
   <tr>
    <td colspan="2"><input name = "sumbit "type="submit" /></td>
   </tr>
  </table>
 </form>
</body>
</html>

在此处插入标题
这是第一个Servlet
用户名:
密码:
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>Trial</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

  <servlet>
   <servlet-name>FirstServlet</servlet-name>
   <servlet-class>MyServlet</servlet-class>
  </servlet>

  <servlet-mapping>
   <servlet-name>FirstServlet</servlet-name>
   <url-pattern>/firstTest</url-pattern>
  </servlet-mapping>
</web-app>

试验
index.html
第一个servlet
MyServlet
第一个servlet
/第一次测试
当我给出URL http:localhost:8080/Trial时,Index.jsp即将出现,但当我给出用户名和密码时,URL将更改为http:localhost:8080/firstTest,而不是http:localhost:8080/Trial/firstTest,并且我收到405错误“Tomcat错误http状态405-此URL不支持http方法GET”我的代码有什么错误吗

protected void doGost

更改为doPost或doGet…

在jsp代码表单标记中,您没有指定方法名称,默认情况下它使用GET方法,因此只需替换此代码,我希望它可以工作:

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    String userName = request.getParameter("userName");
    PrintWriter out = response.getWriter();
    out.println("hello " + userName + " how are you ?");
}

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
}

}

为了在部署到服务器之前解决此类键入错误

我们使用@override注释来测试该方法是否为重载方法。当您编译java时,它将抛出异常。实际上,编译器将检查语法错误等。但在这种情况下,编译器处理的doGost()也是一种在编译级别使用上述注释的方法,只有开发人员才能理解问题发生的位置


所以。我的建议是重写方法的@override

你写的是doGost而不是doGetHahaha,这太棒了。我们都去过那里。