2013-03-01 3 views
1

검색된 적이 있으며 이에 대한 결론적 인 답변을 찾지 못했습니다.스프링 MVC - 일반 HTTP 처리기

Dispatcher 서블릿을 통해 모든 HTTP 요청을 라우팅 한 다음 특정 컨트롤러로 연결하려고합니다. 궁극적으로 저는 AJAX 리소스를 처리 할 수 ​​있기를 원합니다. 또 다른 요청은 중심점을 통해 이루어집니다.

현재이 작업을 수행하기 위해/* 장소에 URL 매핑이 있습니다. 내 컨트롤러는 @RequestMapping ("/ [My resource]. *")을 사용하여 .htm 요청을 캡처합니다. 불행하게도 Spring은 RequestDispactcher.forward를 사용하여 InternalResourceViewResolver에서 .jsp를 확인한 다음 프론트 컨트롤러를 다시 켜서 궁극적으로 404 오류가 발생하는 것으로 보입니다.

제 질문은 일반보기 요청 이외의 HTTP 요청을 처리 할 수있는 모든 일반 캐치를 설정할 수 있습니까?

HTTP 처리기는 다른 서버로 요청을 전달하고 내부 및 외부 리소스를 해결할 수 있어야합니다. 이미지, CSS는

감사합니다, 앤디

감사

답변

1

A는 /* 모든 요청이 올 수 있기 때문이다, 더 나은 아이디어가 /* 대신 /DispatcherServlet의 서블릿 매핑을 변경하는 것입니다 생각 등 이 서블릿에서 jsp forwards도 찾은 것처럼 jsp에 대한 JSPServlet 매핑이 있다는 사실을 감안하면 / 매핑은 다른 매핑에서 찾을 수없는 경우에만 기본값으로 설정됩니다. 요청 된 경로.

+0

모든 요청을 DispatcherServlet을 통해 전달하려면 어떻게해야합니까? 이것은 내가 이와 같이 흘러 가기를 원한다. 1. 나는 자원에 대한 매핑이 있는지 확인한다. 컨트롤러가 아니라면 컨트롤러가 Ajax 요청인지 확인하고, 정적 리소스 용 기본 Servlet으로 델리게이트하지 않는다. – Andy

+0

'/'의 서블릿 매핑은 정확히 수행 할 것입니다 - webapp root의 정적 리소스를 처리하기 위해' '를 추가하십시오. –

+0

버전 3.2가 버그인지 확실하지 않지만 SimpleUrlHandlerMapper를 사용한다고 가정 할 때 기본 서블릿 처리기를 포함하면 404 오류가 발생하며 일치하는 항목을 찾지 못합니다. 서블릿 컨텍스트에서 DefaultAnnotationHandlerMapper를 추가하면 "핸들러 용 어댑터 없음 .."등의 500 오류가 발생합니다. 매우 실망 스럽습니다 ..! – Andy

0

web.xml에 /에 app 서블릿 매핑을 유지합니다. 아래와 같이.

다른 자원을 해결하려면 Dispatcher 서블릿 XML에서 다음 태그를 추가하십시오. 여기서 resources는 js, css, images가 들어있는 폴더입니다. 그것은 maven 웹 어플리케이션 구조의 Webcontent 폴더 아래에 저장됩니다. 프로젝트 구조에 따라 변경하십시오.

<resources mapping="/resources/**" location="/resources/" /> 

시도해보십시오.