首页 > 解决方案 > POST 方法在 Spring MVC 中不起作用

问题描述

我创建了一个登录表单

<form class="login100-form validate-form p-b-33 p-t-5" method="POST">
<div class="wrap-input100 validate-input" data-validate = "Enter username">
    <input class="input100" type="text" name="username" placeholder="User name">
    <span class="focus-input100" data-placeholder="&#xe82a;"></span>
</div>
<div class="wrap-input100 validate-input" data-validate="Enter password">
    <input class="input100" type="password" name="pass" placeholder="Password">
    <span class="focus-input100" data-placeholder="&#xe80f;"></span>
</div>
<div class="container-login100-form-btn m-t-32">
    <input class="login100-form-btn" type="button" onclick="location.href='eLibrary/login'" value="Login" >
</div>

我的控制器功能是

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(HttpServletRequest request, HttpServletResponse response) {
    String userName = request.getParameter("username");
    String pass = request.getParameter("pass");
    return "list-books";
}

但是,当我尝试登录时,它给出了错误

HTTP 状态 405 - 不允许的方法

不支持请求方法“GET”

我什至试过

@PostMapping("/login")
public String login(HttpServletRequest request, HttpServletResponse response) {
    String userName = request.getParameter("username");
    String pass = request.getParameter("pass");
    return "list-books";
}

但在上述情况下,request.getParameter("username") 给出了 null。

谁能帮帮我。

标签: htmljspspring-mvc

解决方案


更新行:

<input class="login100-form-btn" type="button" onclick="location.href='eLibrary/login'" value="Login" >

删除onclick:

<input class="login100-form-btn" type="submit" value="Login" >

并将 FORM 行更新为:

<form class="login100-form validate-form p-b-33 p-t-5" method="POST" action="eLibrary/login">

Onclick 将始终发送一个 GET 请求。如果您想使用 javascript 进行 POST,则必须使用 AJAX 操作。


推荐阅读