2013-04-23 3 views
2

I have been told in this post. 스프링을 사용하여 URL 구조에서 .jsp 확장자를 가질 수 있음. 나는 다음과 같은 코드를 달성하기 위해 노력 해왔다 : 내가 얻을 8080/응용 프로그램/환영/item.jsp :스프링에서 .jsp 확장자를 가진 URL을 지원하는 방법

HelloController.java

@Controller 
@RequestMapping("/welcome") 
public class HelloController { 
    @RequestMapping(value="/item.jsp", method = RequestMethod.GET) 
    public String helloDotJSP(ModelMap model) { 

     System.out.println("/item.jsp RequestMapping"); 
     model.addAttribute("message", "Spring 3 MVC Hello World"); 
     return "item"; 
    } 
} 

그리고 페이지 로컬 호스트에 액세스하려고 할 때 오류 해당 요청한 리소스를 사용할 수 없습니다. 그러나 확장자를 /item.jsp에서 /item.other으로 수정하면 작업이 시작됩니다. .jsp 확장 프로그램을 어떻게 추가 할 수 있습니까?

도움 주셔서 감사합니다.

+0

왜 그렇게하고 싶은지 궁금합니다. 어쨌든, 모든 매핑에서이 확장을 사용 하시겠습니까? 아니면 일반적으로 응용 프로그램입니까? – NilsH

+0

내 요구 사항 중 하나는 기존 URL 인프라와의 역 호환성을 제공하는 것입니다. 이 확장 프로그램을 사용하기 위해 모든 매핑이 필요한지는 알 수 없지만 확실하게 둘 이상있을 것입니다. – Disper

+0

나는 본다. 기본 JSP 서블릿이 귀하의 URL 패턴을 간섭하고 있다고 생각합니다. 대신 기존 URL에 대해 URL 다시 쓰기를 사용 해본 적이 있습니까? 그런 다음 "old"URL을 숨기고 일반 URL URL 매핑을 투명하게 사용합니다. – NilsH

답변

1

web.xml의 서블릿 매핑이 item.jspDispatcherServlet으로 매핑하지 않기 때문에 "요청한 리소스를 사용할 수 없습니다."라는 메시지가 나타납니다.

귀하의 요구 사항이 이전 URL을 지원하기위한 것이라면 더 효과적인 방법이 있습니다.

대부분의 로우 파이는 이러한 JSP에의 이전 URL을 같은 이름과 구조, 그리고 각이 나는 보통 스크립하지만 경우에 사용하지 않는 것이 좋습니다

<% 
response.setStatus(301); 
response.setHeader("Location", "/new-url.htm"); 
response.setHeader("Connection", "close"); 
%> 

같은 스크립트 릿을 추가하는 것이 JSP를 만드는 것입니다 이것들은 가장 간단한 해결책입니다.

아파치와 같은 최첨단 웹 서버가있는 경우 301 개의 리디렉션 규칙을 추가 할 수도 있습니다.

희망이 도움이됩니다.

관련 문제