Pertama, konfigurasi web.xml
<!-Spring-mvc-> <servlet> <servlet-name> springservlet </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <Ilin-param> <param-name> ContextConfigLocation </param-name> <param-vaLuue> cl Asspath: springmvc-servlet.xml </param-value> </init-param> <Boad-on-startup> 1 </load-on-startup> </servlet> <servlet-Mapping> <servlet-name> SpringServlet </servlet-name> <rerl-pola>/</url-pattern> </servlet-petak>
Konfigurasi Pola URL/, jika dikonfigurasi/*, Anda akan mengajukan pertanyaan, dan bahkan kembali ke tampilan JSP akan dicegat. Untuk alasan spesifik, silakan lihat kode sumbernya
Pertanyaan: Jika Anda mengkonfigurasi dengan cara ini, semua orang akan mengabaikan masalah, yaitu, A/B/C dapat diakses, tetapi A/B/C.DO; a/b/c.mm; A/B/C.ZZ semuanya dapat mengakses A/B/C Controller. Tanpa memodifikasi kode sumber, kami akan melakukannya
Menyelesaikan masalah ini. Meskipun kami mencegat/permintaan semacam itu, kami hanya membiarkan permintaan seperti/b/c masukkan controller. Jika akhiran [. Kami akan langsung ke halaman 404.
Larutan:
Tambahkan ke filter di web.xml
<!- Penyaringan sederhana url-> <nilter> <filter-name> servletRequest </tiler-name> <nilter-class> cn.tomcat.quickstart.common.filter.servletrequestfilter </filter-class> </shile Filter> <STERFOLT-MAPPING> <STERNICE-NAME> ServletRequest </tiler-name> <RURL-PATERS>/*</RURL-PATERS> </TERFERTER-MAPPING> SERVLETREQUESTFILTER.JAVAIMPORT java.io.ioException; import javax.servlet.filterchain; import javax.servlet.servletException; import javax.servlet.http.httpservletRequest; impor javax.servlet.http.httpservletsponse; org.springframework.web.filter.oncperrequestfilter;/**** memproses url yang masuk dan meletakkannya di depan filter, springmvc <url-pola>/</rat-pola>* secara default, semua permintaan dicegat, ex: a/b/c.do, a/b/c.htm, dicegat, ex: a/b/c.do, a/b/c.htm, dicegat, ex: a/b/c.do, a/b/c.htm, dicegat, ex: a/b/c.do, a/b/c.htm, dicegat, ex: a/b/c.do, a/b/c.htm, dicegat, ex: a/b/c.do, a/b/c.htm, dicegat) restful style, and only accept requests from a/b/c* */public class ServletRequestFilter extends OncePerRequestFilter {@Overrideprotected void doFilterInternal(HttpServletRequest request,HttpServletResponse response, FilterChain filterChain)throws ServletException, IOException {String requestPath = request.getSerVletpath (); // Jangan khawatir tentang mencegat file statis. Misalnya, *.js, *.css mirip dengan ini, dan diproses dalam web.xml // semua permintaan dengan akhiran [.] Secara langsung digunakan untuk pergi ke 404, dan tidak menerima permintaan tersebut jika (requestPath.LastIndexof (".") respons);} else {filterchain.dofilter (request, response);}}}}} Direct Go 404 dengan akhir, haha, mungkin Anda akan bertanya apakah ini masalahnya, bukankah file statis disaring? Mirip dengan *.js, *.css, ... n banyak jenis file seperti itu