springmvc的非注解的处理器映射器和适配器

前提:

            对于处理器映射器和适配器,我们不需要编写,只需要引入jar包中的就是行了。但是,这里注意,关于处理器映射器和适配器实现类有很多,不同的实现类对我们对其他的配置要求不同。所以要针对不同的类做不同的分析。

       一、   映射器:

              1.<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

           要求:这里要求在配置handler的时候,他的beanname为url


            2.<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
           <property name="mappings">
              <!-- 对itemsController进行url映射,url是 /queryItems1.action-->
              <props>
                <prop key="/queryItems1.action">ItemsController1</prop>
             </props>
           
           </property>

  </bean>

            这里key是路径,红字为配置handler的beanname


二、适配器

   

         1.<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

                         要求编写的handler需要实现Controller接口

                        示例代码:

                 public class ItemsController1 implements Controller{
@Override
public ModelAndView handleRequest(HttpServletRequest req,
HttpServletResponse resp) throws Exception {


        List<Items>itemsList=new ArrayList<Items>();
//向list添加数据
         Items items_1=new Items();
         items_1.setName("电脑");
         items_1.setPrice(6000f);
         items_1.setDetail("联想笔记本壳。");
         itemsList.add(items_1);
         
         Items items_2=new Items();
         items_2.setName("手机");
         items_2.setPrice(7000f);
         items_2.setDetail("联想手机。");
         itemsList.add(items_2);
         
         Items items_3=new Items();
         items_3.setName("鼠标");
         items_3.setPrice(10000f);
         items_3.setDetail("联想鼠标。");
         itemsList.add(items_3);
         
         //返回ModelAndView
         ModelAndView modelAndView=new ModelAndView();
         //相当于reques的setAtrribute,在jsp页面中通过itemsList来获取数据
         modelAndView.addObject("itemsList", itemsList);
         //制定视图
         modelAndView.setViewName("/WEB-INF/JSP/itemsList.jsp");
         return modelAndView;
}
}

                       

2.<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>

   需要实现HttpRequestHandler接口。

示例代码:

public class httpItemsController implements HttpRequestHandler {
@Override
public void handleRequest(HttpServletRequest request, HttpServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
List<Items>itemsList=new ArrayList<Items>();
//向list添加数据
         Items items_1=new Items();
         items_1.setName("电脑222");
         items_1.setPrice(6000f);
         items_1.setDetail("联想笔记本壳222。");
         itemsList.add(items_1);
         
         Items items_2=new Items();
         items_2.setName("手机222");
         items_2.setPrice(7000f);
         items_2.setDetail("联想手机222。");
         itemsList.add(items_2);
         
         Items items_3=new Items();
         items_3.setName("鼠标22");
         items_3.setPrice(10000f);
         items_3.setDetail("联想鼠标22。");
         itemsList.add(items_3);
         
         //设置模型数据
         request.setAttribute("itemsList", itemsList);
         //设置转发的视图
         request.getRequestDispatcher("/WEB-INF/JSP/itemsList.jsp").forward(request, arg1);
      }

}


对于第二种适配器实现类可以通过response,设置相应的数据格式,比如响应的json数据

       response.SetCharacterEncoding("utf-8")

       response.setContentType("application/json;charset=utf-8")

       rsponse.getWriter().write("json串")




另:注意如果我们没有配置这些适配器和映射器,

  


这里前端控制器会到这个文件中去找映射器、适配器、视图解析器等组件。


猜你喜欢

转载自blog.csdn.net/lilibo123/article/details/80722501
今日推荐