أولاً ، تكوين web.xml
<!-spring-mvc-> <vervlet> <Servlet-Name> SpringServlet </servlet-name> <Sradlet-Class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <Ing-param> <param-name> contextConfiglocation </param-name> ASSPATH: springmvc-servlet.xml </param-value> </ith-param> <load-on-startup> 1 </load-on-startup> </servlet> <cervlet mapping> <cervlet-name> SpringServlet </revlet-name> <url-pattern>/</url-patern> </servled-mapplet
تكوين url-pattern/، إذا تم تكوينه/*، فسوف تطرح أسئلة ، وحتى العودة إلى عرض 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-> <ilter> <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 ؛ استيراد javax.servlet.filterchain ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpserstsponse ؛ استيراد الاستيراد ؛ org.springframework.web.filter.onceperRequestFilter ؛/**** معالجة عنوان URL الوارد ووضعه أمام المرشح ، springmvc <erl-pattern>/</url-pattern>* بشكل افتراضي ، يتم اعتراض جميع الطلبات ، على سبيل المثال: a/b/b/b/c.html ، لاحقة ، تقليد النمط المريح ، وقبول الطلبات فقط من A/B/C * */public class servletRequestFilter يمتد مرة واحدة {OverRideprotected void dofilterinternal (httpservletrequest request ، httpservletresponse ، filterChain filterchain) request.getServletPath () ؛ // لا تقلق بشأن اعتراض الملفات الثابتة. على سبيل المثال ، *.js ، *.css تشبه هذا ، ويتم معالجتها في web.xml // يتم استخدام جميع الطلبات مع اللاحقة [.] مباشرة للذهاب إلى 404 ، ولا تقبل هذه الطلبات إذا (requestPath.lastindexof (". استجابة) ؛} آخر {filterchain.dofilter (طلب ، استجابة) ؛}}}}} Direct GO 404 مع النهاية ، هاها ، ربما تسأل عما إذا كان هذا هو الحال ، ألن يتم ترشيح الملف الثابت؟ على غرار *.js ، *.css ، ... n العديد من هذه الأنواع من الملفات