日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

处理器映射器(HandlerMapping)及处理器适配器(HandlerAdapter)详解(一)

發(fā)布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 处理器映射器(HandlerMapping)及处理器适配器(HandlerAdapter)详解(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

非注解 處理器映射器 和 處理器適配器

  處理器映射器:

  第一種:?BeanNameUrlHandlerMapping

<!-- 配置Handler --> <bean id="userController1" name="/queryUsers.action" class="com.bjxb.ssm.controller.UserController" /><!-- 處理器映射器 將bean的name作為url進(jìn)行查找, bean就是我們寫的Handler,所以我們需要在配置Handler時指定beanname(就是url) --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

?

  第二種:SimpleUrlHandlerMapping

?

<!-- 配置Handler 實現(xiàn) Controller 接口 的 Handler
  既有 name 屬性 可以讓 BeanNameUrlHandlerMapping 處理器映射器 映射到,
  又有 id
屬性 可以在 SimpleUrlHandlerMapping 處理器映射器 中進(jìn)行映射--> <bean id="userController1" name="/queryUsers.action" class="com.bjxb.ssm.controller.UserController" /><!-- 配置Handler,實現(xiàn) HttpRequestHandlerAdapter 接口 的 Handler --> <bean id="userController2" class="com.bjxb.ssm.controller.UserController2"/><!-- 簡單URL映射 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><!-- 對userController1進(jìn)行URL映射,URL是/queryUsers.action同一個Bean可以有多個URL與之映射--><prop key="/queryUsers1.action">userController1</prop><prop key="/queryUsers2.action">userController1</prop><prop key="/queryUsers3.action">userController2</prop></props></property> </bean>

?

?

?

  

  注意:上面兩種處理器映射器,我們是在同一個 xml 文件中配置,并且根據(jù)不同的 URL 都能正常訪問。

  結(jié)論:多個處理器映射器可以并存,前端控制器判斷 URL 能讓哪些映射器映射,從中選擇正確的映射器處理。

?

?

  非注解的適配器:

  第一種:SimpleControllerHandlerAdapter

<!-- 處理器適配器 所有的處理器適配器都實現(xiàn) HandlerAdapter接口 這里我們使用SimpleControllerHandlerAdapter 處理器適配器--> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

   

   注意:這款適配器要求我們編寫的 Handler 實現(xiàn) Controller 接口

  

  Handler如下:

public class UserController implements Controller{@Overridepublic ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {ArrayList<User> userlist = new ArrayList<User>();User user1 = new User("騰博","123456");User user2 = new User("小兵","123456");System.out.println("我來了");userlist.add(user1);userlist.add(user2);// 返回ModelAndViewModelAndView modelAndView = new ModelAndView();// 相當(dāng)于request的setAttribute,在jsp頁面中通過userlist取數(shù)據(jù)modelAndView.addObject("userlist", userlist);// 指定視圖modelAndView.setViewName("/WEB-INF/jsp/users/user.jsp");return modelAndView;}}

?

?

?

  第二種:HttpRequestHandlerAdapter

<!-- 另一個非注解的處理器適配器 HttpRequestHandlerAdapter --> <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>

?

   注意:這款適配器要求我們編寫的 Handler 實現(xiàn) HttpRequestHandler 接口

?

    

?   Handler如下

?

?

public class UserController2 implements HttpRequestHandler{@Overridepublic void handleRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ArrayList<User> userlist = new ArrayList<User>();User user1 = new User("騰博","123456");User user2 = new User("小兵","123456");System.out.println("我來了");userlist.add(user1);userlist.add(user2);// 設(shè)置模型數(shù)據(jù)request.setAttribute("userlist", userlist);// 設(shè)置轉(zhuǎn)發(fā)的視圖request.getRequestDispatcher("/WEB-INF/jsp/users/user.jsp").forward(request, response);// 使用此接口,我們可以通過修改response,設(shè)置響應(yīng)的數(shù)據(jù)格式,比如響應(yīng)json數(shù)據(jù)// response.setCharacterEncoding("utf-8");// response.setContentType("application/json;charset=utf-8");// response.getWriter().write("json串"); }}

?

  經(jīng)過上面的分析我們發(fā)現(xiàn):

    處理器映射器就是:根據(jù)我們的 URL 尋找 Handler
    處理器適配器就是:按照它要求的規(guī)則去執(zhí)行 Handler

    而且我們發(fā)現(xiàn):非注解形式的 HandlerMapping 和 HandlerAdapter 所對應(yīng)的 Handler,一個類中只有一個方法,處理能力有限,比較繁瑣

?

轉(zhuǎn)載于:https://www.cnblogs.com/xb1223/p/10185280.html

總結(jié)

以上是生活随笔為你收集整理的处理器映射器(HandlerMapping)及处理器适配器(HandlerAdapter)详解(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。