man*_*nan 15 spring jsp spring-mvc
我是春天的新人.我创建了一个简单的登录应用程 但在我的情况下第一次发布url并正确调用控制器方法.在第二次它是附加一个控制器时间的路径.第一次发布: // localhost:8090/springmvc/account/login同一页面的时间:// localhost:8090/springmvc/account/account/login.我该如何解决这个重定向问题?
这是我的控制器页面:
@Controller
@RequestMapping("account")
public class AccountController {
AccountService service = new AccountService();
@RequestMapping(value = "account/default", method = RequestMethod.GET)
public ModelAndView RegisterUser() {
return new ModelAndView("/Account/Index","command",new User());
}
@RequestMapping(value = "/registeruser", method = RequestMethod.POST)
public ModelAndView RegisterUser(User user) {
user.setMessage(service.Register(user));
return new ModelAndView("/Account/Index", "command", user);
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public ModelAndView RegisterUer(User user) {
user.setMessage(service.Register(user));
return new ModelAndView("/Account/create", "command", user);
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public ModelAndView LoginUser(User user, ModelMap model) {
String msg = service.isAuthendicated(user) ? "Logged in" : "Failed";
user.setMessage(msg);
return new ModelAndView("/Account/Index", "command", user);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的jsp页面:
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib prefix="t" tagdir="/WEB-INF/tags"%>
<t:genericpage>
<jsp:body>
<h2>Login</h2>
<div>
${command.message} </div>
<a href="account/register">Register</a>
<form:form action="account/login" method="post">
<div>
<form:input path="username" />
</div>
<div>
<form:input path="password" />
</div>
<input type="submit" value="Login">
</form:form>
</jsp:body>
</t:genericpage>
Run Code Online (Sandbox Code Playgroud)
我将标签库用于公共页面:
<%@tag description="Master Page" pageEncoding="UTF-8"%>
<html>
<body>
<div id="pageheader">
<h2>WElcome</h2>
</div>
<div id="body">
<jsp:doBody />
</div>
<div id="pagefooter">
<p id="copyright">Copyright</p>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
iku*_*men 25
根据您使用的Spring版本,以下是一些选项:
弹簧3.1和更低的OR弹簧3.2.3和更高
您应该根据上下文路径具有特定于根目录的URL /操作.
<form:form action="${pageContext.request.contextPath}/account/login" method="post">
Run Code Online (Sandbox Code Playgroud)
注意:引入了Spring 3.2.3 servletRelativeAction但我从未使用它.
春天3.2
不要做任何事情,上下文路径是前置的 - 这实际上是一个突破性的变化,并最终回滚.
<form:form action="/account/login" method="post">
//will produce action="/springmvc/account/login"
Run Code Online (Sandbox Code Playgroud)
用a开始你的表单操作/.
<form:form action="/account/login" method="post">
Run Code Online (Sandbox Code Playgroud)
如果不这样做,您告诉浏览器将操作附加到地址栏上现有的URL.
如果您直接在HTML中使用此类链接(不使用Spring form:form),请尝试使用c:url正确构建URL(包括上下文路径等).这会使构建正确的相对URL带来很多痛苦.
<a href="<c:url value="/account/register" />">Register</a>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42118 次 |
| 最近记录: |