ก่อนอื่นการกำหนดค่า web.xml
<!-Spring-Mvc-> <servlet> <servlet-name> Springservlet </servlet-name> <servlet-lass> org.springframework.web.servlet.dispatcherservlet </servlet-class> <int-param> Asspath: SpringMvc-Servlet.xml </param-value> </init-param> <load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-name>
การกำหนดค่า 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-> <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; นำเข้า Javax.servlet.filterchain; นำเข้า Javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservletrequest นำเข้า Javax.servlet.http.httpservletresponse; org.springframework.web.filter.onceperrequestfilter;/**** ประมวลผล URL ที่เข้ามาและวางไว้ที่ด้านหน้าของตัวกรอง, SpringMvc <url-pattern>/</url-pattern>* โดยค่าเริ่มต้น คำต่อท้ายเลียนแบบสไตล์การพักผ่อนและยอมรับคำขอจาก A/B/C * */คลาสสาธารณะ ServletRequestFilter ขยายเวลาหนึ่งครั้ง perperrequestFilter {@Overrideprotected void dofilterInternal request.getServletPath (); // ไม่ต้องกังวลกับการสกัดกั้นไฟล์คงที่ ตัวอย่างเช่น *.js, *.css คล้ายกับสิ่งนี้และประมวลผลใน web.xml // คำขอทั้งหมดที่มีคำต่อท้าย [.] ถูกใช้โดยตรงเพื่อไปที่ 404 และไม่ยอมรับคำขอดังกล่าวหาก (requestPath.Alstindexof ("")! =-1) {request.getRequestDisper การตอบสนอง);} else {filterchain.dofilter (คำขอ, การตอบสนอง);}}}}} Direct Go 404 กับตอนจบฮ่าฮ่าบางทีคุณอาจถามว่าเป็นกรณีนี้หรือไม่ คล้ายกับ *.js, *.css, ... n ไฟล์หลายประเภทดังกล่าว