บางทีคุณอาจจำเป็นต้องรู้ว่า URL นั้นถูกแมปด้วยเช่นกันเนื่องจากฉันประสบ404
เป็นเวลาหลายชั่วโมง มีตัวจัดการการร้องขอสองชนิด และBeanNameUrlHandlerMapping
SimpleUrlHandlerMapping
เมื่อเรากำหนดเราจะใช้servlet-mapping
SimpleUrlHandlerMapping
สิ่งหนึ่งที่เราจำเป็นต้องรู้คือทั้งสองร่วมกันขนย้ายทรัพย์สินส่วนกลางที่เรียกว่าที่เริ่มต้นที่alwaysUseFullPath
false
false
นี่หมายความว่า Spring จะไม่ใช้เส้นทางแบบเต็มในการแมป URL ไปยังตัวควบคุม มันหมายความว่าอะไร? มันหมายถึงเมื่อคุณกำหนดservlet-mapping
:
<servlet-mapping>
<servlet-name>viewServlet</servlet-name>
<url-pattern>/perfix/*</url-pattern>
</servlet-mapping>
ตัวจัดการจะใช้ชิ้น*
ส่วนเพื่อค้นหาตัวควบคุม ตัวอย่างเช่นตัวควบคุมต่อไปนี้จะพบ404
ข้อผิดพลาดเมื่อคุณร้องขอโดยใช้/perfix/api/feature/doSomething
@Controller()
@RequestMapping("/perfix/api/feature")
public class MyController {
@RequestMapping(value = "/doSomething", method = RequestMethod.GET)
@ResponseBody
public String doSomething(HttpServletRequest request) {
....
}
}
มันเป็นคู่ที่สมบูรณ์แบบใช่มั้ย 404
แต่ทำไม ดังกล่าวก่อนหน้านี้ค่าเริ่มต้นของalwaysUseFullPath
เป็นเท็จซึ่งหมายถึงในคำขอของคุณเพียง/api/feature/doSomething
ใช้ในการค้นหาตัวควบคุมที่เกี่ยวข้อง แต่ไม่มีตัวควบคุมใส่ใจเกี่ยวกับเส้นทางนั้น คุณจำเป็นต้องมีการเปลี่ยนแปลงอย่างใดอย่างหนึ่ง URL ของคุณไป/perfix/perfix/api/feature/doSomething
หรือลบจากฐานperfix
MyController@RequestingMapping