我的 Web 应用程序有许多表单,其中最简单的是登录表单(我使用的是 thymeleaf):
<form method="post" action = "#" th:action = "@{/account/login}">
Username: <input name="username" type="text" /> <br />
Password: <input name="password" type="password" /> <br />
<input name="login" type="submit" value="Login" />
</form>
我的控制器处理程序方法是:
@RequestMapping(value = "/account/login", method = RequestMethod.POST, params = "login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
Model model) {
// do some logging in
return "/account/profile";
}
我的问题是因为我正在做一个 POST /account/login
,这就是浏览器地址栏中显示的内容。我真的很想展示它/account/profile
。/account/profile
即使从概念上讲它不正确,我是否应该改为进行 POST 。
另一种解决方案是在 POST 上/account/login
进行,成功后重定向并在/account/profile
.
假设我也有这样的处理方法:
@RequestMapping(value = "/account/login", method = RequestMethod.GET)
public String loginPage() {
return "/account/login";
}
还有哪些其他解决方案可能适合类似 REST 的 url 映射的概念?