Tout d'abord, la configuration Web.xml
<! - Spring-Mvc -> <Servlet> <Servlet-Name> Springservlet </ Servlet-Name> <Servlet-Class> org.springframework.web.servlet.dispatcherservlet </ servlet-Class> <Init-Param> <Am paramn-Name> ContextConfiglocation </ param-name> <param-value> Cl ASSPATH: Springmvc-servlet.xml </ Param-Value> </ Init-Param> <Choad-on-Startup> 1 </ Load-on-Startup> </ Servlet> <Servlet-Mapping> <Serplet-Name> Springservlet </vrlett-name> <Url-Pattern> / </url-Pattern> </ Servlet-Mapping>
Configuration de la méthode URL /, si vous êtes configuré / *, vous poserez des questions, et vous reviendrez même à la vue que JSP sera interceptée. Pour la raison spécifique, veuillez consulter le code source
Question: Si vous configurez de cette façon, tout le monde ignorera un problème, c'est-à-dire que A / B / C est accessible, mais a / b / c.do; a / b / c.mm; A / B / C.ZZ peut tous accéder au contrôleur A / B / C. Sans modifier le code source, nous allons
Résoudre ce problème. Bien que nous interceptions / ces demandes, nous ne laissons que des demandes comme A / B / C entrez le contrôleur. Si le suffixe de [.] Est suffixé, nous ne le laisserons pas entrer. Nous irons directement à la page 404.
Solution:
Ajouter au filtre sur web.xml
<! - Filtrage simple de URL -> <filter> <filter-name> servleTrequest </filter-name> <filter-class> cn.tomcat.quickstart.common.filter.servletRequestFilter </filter-Class> </ Filter> <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; Importer javax.servlet.http.httpservletRequest; Importer Javax.servlet.http.httSservletRessust; org.springframework.web.filter.onceperRequestFilter; / *** * traitez l'URL entrante et mettez-le devant le filtre, toutes les demandes sont interceptées, ex: a / b / c / c *. Imiter le style Restful et n'acceptez que les demandes de A / B / C * * / classe publique ServLetRequestFilter étend une fois PEperRequestFilter {@OverRideProtected void Dofilterinternal (HttpservletRequest Request, httpservletResponse réponse, filterchain FilterChain) Throws Servlexception, ioexception {string requedPath = thory request.getServletPath (); // Ne vous inquiétez pas d'intercepter les fichiers statiques. Par exemple, * .js, * .css est similaire à cela, et est traité dans web.xml // toutes les demandes avec le suffixe [.] Sont directement utilisées pour aller au 404, et n'acceptent pas ces demandes si (requestPath.LasTindexof (".")! = - 1) {request.getRequestDispatcher ("/ web-inf / pages / erre réponse);} else {filterchain.dofilter (demande, réponse);}}}}} Direct Go 404 avec la fin, haha, peut-être que vous demanderiez si c'est le cas, le fichier statique ne serait-il pas filtré? Similaire à * .js, * .css, ... n de nombreux types de fichiers de ce type