[SPRING] Spring MVC : 양식을 게시 할 때 추가되는 URL 경로
SPRINGSpring MVC : 양식을 게시 할 때 추가되는 URL 경로
나는 봄 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);
}
}
이 내 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>
공통 페이지에 태그 라이브러리를 사용했습니다.
<%@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>
해결법
-
==============================
1.사용중인 Spring의 버전에 따라 다음과 같은 옵션이 있습니다.
사용중인 Spring의 버전에 따라 다음과 같은 옵션이 있습니다.
스프링 3.1 이하 또는 스프링 3.2.3 이상
컨텍스트 경로와 관련된 루트 - 관련 url / actions가 있어야합니다.
<form:form action="${pageContext.request.contextPath}/account/login" method="post">
참고 : Spring 3.2.3에서는 servletRelativeAction이 도입되었지만 사용한 적이 없습니다.
봄 3.2
아무 것도하지 말고, 컨텍스트 경로가 미리 추가됩니다. 실제로 이것은 급격한 변화 였고 결국 다시 롤백되었습니다.
<form:form action="/account/login" method="post"> //will produce action="/springmvc/account/login"
-
==============================
2./로 양식 작업을 시작하십시오.
/로 양식 작업을 시작하십시오.
<form:form action="/account/login" method="post">
그렇게하지 않으면 검색 주소창의 기존 URL에 작업을 추가하라는 메시지가 브라우저에 표시됩니다.
그리고 HTML과 같은 링크를 Spring의 form : form을 사용하지 않는 곳에서 직접 사용하는 경우 c : url을 사용하여 컨텍스트 경로 등을 포함하는 URL을 올바르게 구성하십시오. 적절한 상대 URL을 구축하는 데는 많은 어려움이 있습니다.
<a href="<c:url value="/account/register" />">Register</a>
-
==============================
3.../를 사용하여 현재 컨텍스트 루트 URL 가져 오기 :
../를 사용하여 현재 컨텍스트 루트 URL 가져 오기 :
<form:form action="../account/login" method="post">
여기에서
from https://stackoverflow.com/questions/18631147/spring-mvc-url-path-appending-when-posting-the-form by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 단위 테스트 또는 통합 테스트에 Spring의 MockMvc가 사용됩니까? (0) | 2019.03.04 |
---|---|
[SPRING] Spring과 Hibernate를 사용하는 좋은 샘플 애플리케이션은 무엇인가? [닫은] (0) | 2019.03.04 |
[SPRING] 스프링 싱글 톤 빈은 쓰레드에 안전한가요? (0) | 2019.03.04 |
[SPRING] 스프링 MVC 주석 컨트롤러의 단위 테스트 방법 (0) | 2019.03.04 |
[SPRING] 스프링 보안을 사용하여 실패한 로그인에서 사용자 이름을 얻으려면 어떻게해야합니까? (0) | 2019.03.04 |