[SPRING] JSP에서의 Spring MVC 요청 URL
SPRINGJSP에서의 Spring MVC 요청 URL
Spring MVC를 사용하여 웹 애플리케이션을 작성 중이다. 콘트롤러 등에 대한 주석을 사용하고 있습니다. (폼 동작, 태그 등) 응용 프로그램의 실제 링크를 제외하고 모든 것이 잘 작동합니다. 현재,이 코드는 분명히 약식입니다.
//In the controller
@RequestMapping(value="/admin/listPeople", method=RequestMethod.GET)
//In the JSP
<a href="/admin/listPeople">Go to People List</a>
"http : // localhost : 8080 / MyApp / admin / listPeople"과 같은 URL을 직접 입력하면 페이지가 올바르게로드됩니다. 그러나 위 링크는 작동하지 않습니다. 응용 프로그램 이름 "MyApp"가 손실됩니다.
거기에 응용 프로그램 이름에 던져 봄을 구성하는 방법이 있다면 아는 사람 있습니까?
스프링 구성 중 어떤 것이 필요한지 알려주십시오. view resolver와 함께 표준 디스패처 서블릿을 사용하고 있습니다.
해결법
-
==============================
1.링크에 컨텍스트 경로를 추가해야합니다.
링크에 컨텍스트 경로를 추가해야합니다.
// somewhere on the top of your JSP <c:set var="contextPath" value="${pageContext.request.contextPath}"/> ... <a href="${contextPath}/admin/listPeople">Go to People List</a>
-
==============================
2.c : url 태그는 컨텍스트 경로를 URL에 추가합니다. 예 :
c : url 태그는 컨텍스트 경로를 URL에 추가합니다. 예 :
<c:url value="/admin/listPeople"/>
또는 Spring MVC 애플리케이션에서 가능한 한 상대 URL을 사용하는 것을 선호한다. 따라서 페이지가 / MyApp / index에 있으면 링크를 통해 listPeople 페이지로 연결됩니다.
URL 계층 구조에서 더 깊이있는 경우에도 작동합니다. ..를 사용하여 레벨을 트래버스 할 수 있습니다. 그래서 / MyApp / admin / people / aPerson의 페이지에서 를 사용하면 목록 페이지로 돌아갑니다.
-
==============================
3.나는베이스 태그를 사용하는 것을 선호한다 :
나는베이스 태그를 사용하는 것을 선호한다 :
<base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/" />
그런 다음 모든 링크는 다음과 같을 수 있습니다.
<a href="admin/listPeople">Go to People List</a>
-
==============================
4.난 그냥이 질문에 대한 답변을 찾으려고 노력하고 이것은 첫 번째 Google 결과입니다.
난 그냥이 질문에 대한 답변을 찾으려고 노력하고 이것은 첫 번째 Google 결과입니다.
이 작업은 이제 MvcUriComponentsBuilder를 사용하여 수행 할 수 있습니다.
이것은 4.0 버전의 Spring MVC의 일부이다.
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilder.html
필요한 메소드는 fromMappingName입니다.
문서에서 :
@RequestMapping("/people") class PersonController { @RequestMapping("/{id}") public HttpEntity getPerson(@PathVariable String id) { ... } }
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %> <a href="${s:mvcUrl('PC#getPerson').arg(0,"123").build()}">Get Person</a>
-
==============================
5.보통 "/"의 컨텍스트 루트를 사용하거나 전쟁을 ROOT.war로 배포하도록 tomcat을 구성합니다. 어느 쪽이든 전쟁 이름은 URL의 일부가되지 않습니다.
보통 "/"의 컨텍스트 루트를 사용하거나 전쟁을 ROOT.war로 배포하도록 tomcat을 구성합니다. 어느 쪽이든 전쟁 이름은 URL의 일부가되지 않습니다.
-
==============================
6.당신은 servletRelativeAction을 사용할 수 있습니다. 나는이 버전이 (현재 4.0.x를 사용하고있다) 어떤 버전을 사용할 수 있는지 잘 모르겠다. 그리고 이것에 대한 많은 문서를 보지 못했지만 스프링 폼을 뒷받침하는 코드를 보면 아마 추측 할 수있다. 패스하는 경로가 "/"로 시작하는지 확인하십시오.
당신은 servletRelativeAction을 사용할 수 있습니다. 나는이 버전이 (현재 4.0.x를 사용하고있다) 어떤 버전을 사용할 수 있는지 잘 모르겠다. 그리고 이것에 대한 많은 문서를 보지 못했지만 스프링 폼을 뒷받침하는 코드를 보면 아마 추측 할 수있다. 패스하는 경로가 "/"로 시작하는지 확인하십시오.
예:
<form:form class="form-horizontal" name="form" servletRelativeAction="/j_spring_security_check" method="POST">
org.springframework.web.servlet.tags.form.FormTag를 참조하십시오 :
protected String resolveAction() throws JspException { String action = getAction(); String servletRelativeAction = getServletRelativeAction(); if (StringUtils.hasText(action)) { action = getDisplayString(evaluate(ACTION_ATTRIBUTE, action)); return processAction(action); } else if (StringUtils.hasText(servletRelativeAction)) { String pathToServlet = getRequestContext().getPathToServlet(); if (servletRelativeAction.startsWith("/") && !servletRelativeAction.startsWith(getRequestContext().getContextPath())) { servletRelativeAction = pathToServlet + servletRelativeAction; } servletRelativeAction = getDisplayString(evaluate(ACTION_ATTRIBUTE, servletRelativeAction)); return processAction(servletRelativeAction); } else { String requestUri = getRequestContext().getRequestUri(); ServletResponse response = this.pageContext.getResponse(); if (response instanceof HttpServletResponse) { requestUri = ((HttpServletResponse) response).encodeURL(requestUri); String queryString = getRequestContext().getQueryString(); if (StringUtils.hasText(queryString)) { requestUri += "?" + HtmlUtils.htmlEscape(queryString); } } if (StringUtils.hasText(requestUri)) { return processAction(requestUri); } else { throw new IllegalArgumentException("Attribute 'action' is required. " + "Attempted to resolve against current request URI but request URI was null."); } } }
-
==============================
7.몇 년이 지났기 때문에 나는 이것을 찾고있는 다른 사람들을 위해 칩을 넣을 것이라고 생각했습니다. 특수 효과를 사용하고 있는데 다음과 같은 컨트롤러 동작이있는 경우 :
몇 년이 지났기 때문에 나는 이것을 찾고있는 다른 사람들을 위해 칩을 넣을 것이라고 생각했습니다. 특수 효과를 사용하고 있는데 다음과 같은 컨트롤러 동작이있는 경우 :
@RequestMapping("/new") //<--- relative url public ModelAndView newConsultant() { ModelAndView mv = new ModelAndView("new_consultant"); try { List<Consultant> list = ConsultantDAO.getConsultants(); mv.addObject("consultants", list); } catch (Exception e) { e.printStackTrace(); } return mv; }
.jsp (view)에이 지시어를 추가한다.
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
간단히 사용하십시오.
<spring:url value="/new" var="url" htmlEscape="true"/> <a href="${url}">Nuevo consultor</a>
어디에
값의 값은 컨트롤러 동작에서 @ RequestMapping의 인수와 일치해야하며
var의 값은 href에 사용하는 변수의 이름입니다.
HIH
from https://stackoverflow.com/questions/6970115/spring-mvc-request-urls-in-jsp by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 비 스프링 관리 클래스에서 작동하지 않는 스프링 자동 와이어 링 (0) | 2019.01.29 |
---|---|
[SPRING] Spring 3.0의 다중 특성 파일 (0) | 2019.01.29 |
[SPRING] Spring 3.2-mvc를 사용하여 큰 이미지를 업로드 / 스트리밍하는 방법 (0) | 2019.01.29 |
[SPRING] web.xml url-pattern matcher에는 URL을 제외시키는 방법이 있습니까? (0) | 2019.01.29 |
[SPRING] clone 또는 BeanUtils.copyProperties를 사용해야하며 이유는 무엇입니까? (0) | 2019.01.29 |