먼저 web.xml 구성
<!-Spring-MVC-> <Servlet> <Servlet-name> SpringServlet </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <init-param> <param-name> contextConfigLocation </param-name> <param-value> cl ASSPATH : SpringMVC-servlet.xml </param-value> </init-param> </init-on-startup> 1 </serv-on-startup> </servlet> <servlet-mapping> <servlet-name> springservlet </servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
url-pattern configuration/, 구성/*가있는 경우 질문을하고 view jsp로 돌아가는 것도 인터셉트됩니다. 구체적인 이유는 소스 코드를 참조하십시오
질문 : 이런 식으로 구성하면 모든 사람이 문제를 무시합니다. 즉, A/B/C에 액세스 할 수 있지만 A/B/C.DO; A/B/C.mm; A/B/C.ZZ는 모두 A/B/C 컨트롤러에 액세스 할 수 있습니다. 소스 코드를 수정하지 않고 우리는
이 문제를 해결하십시오. 우리는 그러한 요청을 가로 채지 만 A/B/C와 같은 요청이 컨트롤러를 입력하게합니다. [.]의 접미사가 접미사 인 경우 입력하지 않습니다. 우리는 404 페이지로 직접 갈 것입니다.
해결책:
web.xml에서 필터에 추가하십시오
<!- 간단한 필터링 URL-> <filter> <filter-name> ServletRequest </filter-name> <filter-class> cn.tomcat.quickstart.common.filter.servletrequestfilter </filter-class> </ 필터> <filter-mapping> <filter-name> servletrequest </filter-name> <Url-pattern>/*</url-pattern> </filter-mapping> servletrequestfilter.javaimport java.io.ioexception; import javax.servlet.filterchain; import javax.servlet.servletexception; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpervletresponse; 가져 오기 org.springframework.web.filter.onceperRequestFilter;/**** 수신 URL을 처리하여 필터 앞에 놓고 SpringMvc <Url-Pattern>/</url-pattern>* 기본적으로 모든 요청이 인터셉트, a/b/c.do, a/b/c.html,/b/c. 접미사, 편안한 스타일을 모방하며 a/b/c * */public class servletrequestfilter의 요청 만 허용합니다. request.getServletPath (); // 정적 파일을 가로 채는 것에 대해 걱정하지 마십시오. 예를 들어, *.js, *.css는 이것과 유사하며 web.xml // 접미사 [.]가있는 모든 요청이 404로 이동하는 데 직접 사용되며 (requestPath.LastIndexOf ( ".")! = -1) {request.getRequestDispatcher ( "/web-inf/pages/404. 응답);} else {filterchain.dofilter (요청, 응답);}}}}} Direct Go 404 결말과 함께, 하하, 아마도 이것이 사실인지 묻습니다. 정적 파일이 필터링되지 않습니까? *.js, *.css와 유사합니다