gpt4 book ai didi

jsp - 为什么调用 doGET 而不是 doPOST?

转载 作者:行者123 更新时间:2023-12-04 17:09:13 25 4
gpt4 key购买 nike

我正在使用 Servlet/JSP 测试基于表单的安全身份验证。我只是直接运行 servlet,它应该根据 web.xml 文件要求我进行登录身份验证。但它每次都只是简单地进入 doGET 方法。是的,我进行了更改以在 tomcat-users.xml 文件中添加“角色”“用户”。我是 J2EE 的新手。所以请忍受我愚蠢的问题。

这是 Login.jsp

<form method="post" action="j_security_check">
<table>
<tr>
<td>User name: </td>
<td><input type="text" name="j_username"></td>
</tr>
<tr>
<td>Password: </td>
<td><input type="password" name="j_password"></td>
</tr>
</table>`enter code here`
<input type="submit" value="Login">
</form>

这是 Servlet:
@WebServlet("/SecurityCheck")
public class SecurityCheck extends HttpServlet {
private static final long serialVersionUID = 1L;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.getWriter().println("I went to doGET");
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.getWriter().println("success........");
}

}

这是 web.xml:
<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">
<security-constraint>
<web-resource-collection>
<web-resource-name>Security check</web-resource-name>
<url-pattern>/SecurityCheck/*</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>

<auth-constraint>
<role-name>users</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/Login.jsp</form-login-page>
<form-error-page>/Faliure.jsp</form-error-page>
</form-login-config>
</login-config>
</web-app>

最佳答案

您是否也在 web.xml 中声明了安全角色?

   <security-role>
<role-name>users</role-name>
</security-role>

如果您像这样访问您的 servlet
   SecurityCheck/myServlet

您想提示登录屏幕正确吗?您正在通过 GET 方法(默认)发出资源请求。这应该添加到您的安全约束 > Web 资源集合标签中。
   <http-method>GET</http-method>
<http-method>POST</http-method>

目前,如果还没有用户通过身份验证,则只有 SecurityCheck 路径中的 POST 方法才会提示登录。

关于jsp - 为什么调用 doGET 而不是 doPOST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24297985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com