我有一个servlet作为web.xml中的欢迎文件。当请求到达应用程序时,它直接调用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>
答案 0 :(得分:0)
由于HTTP GET和POST请求之间的根本区别,这是不可能的。 POST请求附带<form>
数据,因为用户首先提交了该数据。虽然欢迎文件可以满足您网站 root /
的GET请求,但在所有实际情况下,用户只需输入地址即可。浏览器的地址栏。 POST没有数据,因此欢迎文件请求总是一个GET。
现在,如果您的问题背后的原因是您只想重新使用doPost()
逻辑,然后将其作为上面建议的 @Avinash ,您只需从{{1}调用它即可作为
doGet()
但是,还有更好的方法。将您的public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
逻辑拆分为LoginServlet
和doGet()
,以便GET请求收到登录表单,如
doPost()
注意表单如何提交给自己。如果发生这种情况,POST请求将像以前一样由<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>
方法处理。验证用户凭据并相应地重定向用户。如果身份验证失败,请使用doPost()
将用户重新发送回sendRedirect()
。由于这是一个GET请求,用户将再次看到登录表单。
登录页面理想情况下应来自JSP,但由于我猜你刚开始使用 Servlets ,我不想让你复杂化。一旦熟悉了 Servlets ,就可以了解MVC模式。