如何在 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 模式
我在 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 模式