рд╡рд╕рдВрдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрдВрдЧ: рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд URL рдорд╛рдирдЪрд┐рддреНрд░рдг

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдорд╡реАрд╕реА 2.5 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд╕реЗ рдПрдХ рдирдпрд╛ рдПрдиреЛрдЯреЗрд╢рди-рдЖрдзрд╛рд░рд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрди рдмрдиреНрд╕ рдХреЛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ <mvc: рдПрдиреЛрдЯреЗрд╢рди-рдЪрд╛рд▓рд┐рдд /> рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЯреИрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ DefaultAnnotationHandlerMapping рдФрд░ AnnotationMethodHandlerAdaptor рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред







DefaultAnnotationHandlerMapping рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ @RequestMapping рдПрдиреЛрдЯреЗрд╢рди рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпрдп рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓рд╕ рджреЛ рдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рдореИрдкрд┐рдВрдЧ рдмрдирд╛рддрд╛ рд╣реИред * '' рдФрд░ '' рдПрдХ рд╣реА рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рдеред AnnotationMethodHandlerAdaptor рдХрд╛ рдХрд╛рд░реНрдп HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕реМрдВрдкрдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд▓реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП



@Controller @RequestMapping("/service/hotels") public class HotelsCollectionController { @Autowired private HotelService hotelService; @RequestMapping(method = RequestMethod.GET) public String getHotelList(Model model) { List<Hotel> list = hotelService .getHotelList(); model.addAttribute("hotels", list); return "service/hotels/read"; } public void setHotelService(HotelService hotelService) { this.hotelService = hotelService; } }
      
      







рдЖрдкрдХреЛ / рд╕реЗрд╡рд╛ / рд╣реЛрдЯрд▓, / рд╕реЗрд╡рд╛ / рд╣реЛрдЯрд▓ / рдФрд░ / рд╕реЗрд╡рд╛ / рд╡реНрдпрд╡рд╕рд╛рдпреА / рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рддреАрди рдореИрдкрд┐рдВрдЧ рдорд┐рд▓реЗрдВрдЧреЗ ред



рдкрд╣рд▓реЗ рджреЛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЕрдиреБрдХреВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ, рдФрд░ рдмрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ ContentNegotiatingViewResololver рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ ...



рд╕рдорд╕реНрдпрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реИрд╕реНрдЯрдлреБрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ REST рдореЗрдВ URL рдПрдХ рд╕рдВрд╕рд╛рдзрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ URL рдЕрдм рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд╛рдкрд░рд╡рд╛рд╣реА рд╕реЗ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рдорд╛рди рд╕рдорд╛рди рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдорд╛рд░реНрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд▓реИрд╢ рдпрд╛ рддрд╛рд░рд╛рдВрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╕реЗ рдЬрдЯрд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ / рд╕реЗрд╡рд╛ / рд╣реЛрдЯрд▓ рдХреЗ рдмрдЬрд╛рдп, рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП / рд╕реЗрд╡рд╛ / рд╣реЛрдЯрд▓ / рдпрд╛ / рд╕реЗрд╡рд╛ / рд╣реЛрдЯрд▓ / * рд╕рднреА рд╣реЛрдЯрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП URL рдХреЗ рд░реВрдк рдореЗрдВ, рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдмрд╣реБрдд рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрдо рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рднреА рдирд╣реАрдВ рд╣реИред

рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдЖрдкрдХреЛ 404 рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд╣рд┐рдд рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреА рдкреАрдврд╝реА рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдПрдХ рдФрд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╕рдВрдд рд╣реА рдЗрди рдирд┐рд╣рд┐рдд рдкрддреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЖрдЗрдП, рд▓рд╛рдкрд░рд╡рд╛рд╣реА рд╕реЗ рдХрд╣реЗрдВред рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ DefaultAnnotationHandlerMapping рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреА defaultSuffixPattern рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЬреЛ рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред



рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ:



  <mvc:annotation-driven /> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="useDefaultSuffixPattern" value="false" /> </bean>
      
      







рдЕрдм, рдПрдХ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рд╕рдВрджрд░реНрдн рдмрдирд╛рддреЗ рд╕рдордп рдХреНрдпрд╛ рдЖрддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рд╡рд╕рдВрдд <mvc: рдПрдиреЛрдЯреЗрд╢рди-рдЪрд╛рд▓рд┐рдд /> рджреЗрдЦрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ DefaultAnnotationHandlerMapping рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рд╡рд╣ рдКрдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреАрди рджреЗрдЦрддрд╛ рд╣реИ, рд╡рд╣ DefaultAnnotationHandlerMapping рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рднреА рд░рдЦрддрд╛ рд╣реИред рддреЛ рд╣рдорд╛рд░реЗ рд╢рд╛рдВрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ DefaultAnnotationHandlerMapping рдХреЗ рджреЛ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдВрдЧреЗ, рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде, рдФрд░ рджреВрд╕рд░рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдХреМрди рд╕рд╛ рд╣реИрдВрдбрд▓рд░ рдореИрдкрд┐рдВрдЧ HTTP рдЕрдиреБрд░реЛрдз рдХреЛ рдЪрдмрд╛рдПрдЧрд╛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЙрдирдХреЗ рдЖрдВрддрд░рд┐рдХ рдЖрджреЗрд╢ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ (рдареАрдХ рд╣реИ, рд▓рдЧрднрдЧ ... рдЖрдк рдЖрджреЗрд╢ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдмреИрд╕рд╛рдЦреА рд╣реИ)ред



рд╣рд╛рд▓рд╛рдБрдХрд┐ / рд╕реЗрд╡рд╛ / рд╣реЛрдЯрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ , рд▓реЗрдХрд┐рди / рд╕реЗрд╡рд╛ / рд╣реЛрдЯрд▓ / рдФрд░ / рд╕реЗрд╡рд╛ /hotels.* рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрдк ContentNegotiatingViewResololver рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рд╛рде рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг REST рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдЦреЛ рджрд┐рдпрд╛ рд╣реИред рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢реНрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕рд╣реА рдкреНрд░рд╕реНрддреБрддрд┐ рдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо 500 рдХрд╛ рдЕрдкрд╡рд╛рдж рд╣реЛрдЧрд╛ред рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рд╛рдереА рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╣реИрдВрдбрд▓рд░рдореИрдкрд┐рдВрдЧ рдХреЛ рд╕рдВрджрд░реНрдн рд╕реЗ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо <mvc: рдПрдиреЛрдЯреЗрд╢рди-рдЪрд╛рд▓рд┐рдд /> рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдПрдиреЛрдЯреЗрд╢рдирдореЗрдереЛрдбреИрдВрдбрд▓рд░ рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдХрдард┐рди рдХрд╛рдо рдХрд░реЗрдВ:



  <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="useDefaultSuffixPattern" value="false" /> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
      
      







рдпрд╣ рд╡рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП 404 рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд URL рдХреЛ рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдорд┐рд▓реЗрдЧрд╛, рдЕрд░реНрдерд╛рдд, рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ URL рдХреЛ рдХреЛрдИ рднреА рдирд╣реАрдВ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдЖрдк рдмреЗрд╣рддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВред



All Articles