Во -первых, конфигурация web.xml
<!-Spring-mvc-> <servlet> <vervlet-name> Springservlet </servlet-name> <bertlet-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> <Load-on-Startup> 1 </Load-on-Startup> </Servlet> <Servlet-Mapping> <Servlet-name> Springservlet </servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
Конфигурация URL-Pattern/, если настроен/*, вы будете задавать вопросы и даже вернетесь в просмотр JSP будет перехвачен. По конкретной причине, пожалуйста, смотрите исходный код
Вопрос: Если вы настраиваете такой способ, все будут игнорировать проблему, то есть, как и/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; импорт javax.servlet.http.httpservelponse; org.springframework.web.filter.onceperquestfilter;/**** Обработайте входящий URL и поместите его перед фильтром, Springmvc <Url-pattern>/</url-pattern>* По умолчанию все запросы перехватываются, ex: a/b/c.do, a/b/c.html, a/c.actrice, a/b/c. Суффикс, имитирует стиль RESTFUL и только принимайте запросы от A/B/C * */Public Class ServletRequestFilter Extens OncePerquestFilter {@OverrideProtected void dofilterInternal (httpservletrequest, httpservletrespons request.getServletPath (); // Не беспокойтесь о перехвате статических файлов. Например, *.js, *.css аналогичен этому, и обрабатывается в web.xml // Все запросы с суффиксом [.], Непосредственно используются для перейти к 404 и не принимайте такие запросы if (requestPath.lastIndexof (".")! Ответ);} else {filterChain.dofilter (запрос, ответ);}}}}} Direct Go 404 с окончанием, хаха, может быть, вы бы спросили, не так ли, не будет ли статический файл отфильтрован? Похоже на *.js, *.css, ... n многих таких типов файлов