如何在 web.xml 中为 servlet 配置 Post 方法

How to configure Post method for servlet in web.xml

我在 web.xml 中有一个 servlet 作为欢迎文件。当请求到达应用程序时,它直接调用 get 方法。有什么方法可以让它调用 servlet 中的 post 方法吗?下面是代码。你能帮帮我吗

<welcome-file-list>
    <welcome-file>LoginServlet</welcome-file>
  </welcome-file-list>
   <servlet>
    <description>
        </description>
    <display-name>LoginServlet</display-name>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.eeft.login.LoginServlet</servlet-class>
  </servlet>
   <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>
        /LoginServlet</url-pattern>
  </servlet-mapping>

这是不可能的,因为 HTTP GET 和 POST 请求之间存在根本差异。 POST 请求伴随着 <form> 数据作为用户首先提交的结果。虽然 欢迎文件 迎合了来自您网站的 root / 的 GET 请求,但在所有实际情况下,这些请求都来自用户只需在浏览器的地址栏中输入地址即可。 POST 没有数据,因此欢迎文件请求始终是 GET 请求。

现在,如果你的问题背后的原因是你只是想重用你的 doPost() 逻辑,那么就像 @Avinash 上面建议的那样,你可以简单地从你的 doGet() 作为

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

但是,还有更好的方法。将您的 LoginServlet 逻辑拆分为 doGet()doPost(),这样 GET 请求就会收到一个 登录表单 ,例如

<form method="post" action="LoginServlet">
  Username: <input type="text" name="user" /><br />
  Password: <input type="password" name="pass" /><br />
  <input type="submit" value="Login" />
</form>

注意表单是如何提交给自己的。当它执行时,POST 请求将像以前一样由您的 doPost() 方法处理。验证用户凭据并相应地重定向用户。如果认证失败,使用sendRedirect()将用户送回LoginServlet。因为,这将是一个 GET 请求,用户将再次看到 登录表单

登录页面 理想情况下应该来自 JSP,但我猜你刚开始使用 Servlets,我不想让你的事情复杂化。一旦您对 Servlets.

感到满意,请研究 MVC 模式