美文网首页
SpringMVC中非注解方式下的映射器和适配器总结

SpringMVC中非注解方式下的映射器和适配器总结

作者: ApesKingMan | 来源:发表于2020-04-16 10:12 被阅读0次

        如何使用非注解的方式来定义映射器和适配器。

1. 处理器适配器

    之前使用的处理器适配器是:org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter。

SimpleControllerHandlerAdapter适配器能执行实现了Controller接口的Handler,所以我们所写的Handler需要实现Controller接口。

除了这个适配器外,还有另一个适配器,叫org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter。即可以配置: 

HttpRequestHandlerAdapter适配器能执行实现了HttpRequestHandler接口的Handler,所以我们所写的Handler需要实现HttpRequestHandler接口,这跟实现Controller接口稍微有点不同,比如我们写一个Handler。

public class ItemsController1 implements Controller {

    @Override

    public ModelAndView handleRequest(HttpServletRequest request,

    HttpServletResponse response) throws Exception {

        //实际中是调用service查找数据库,查询商品列表,这里直接使用静态数据来模拟了

        List<Items> itemsList = new ArrayList<Items>();

        //向list中填充静态数据

        Items items_1 = new Items();

        items_1.setName("联想笔记本");

        items_1.setPrice(6000f);

        items_1.setDetail("ThinkPad T430 联想笔记本电脑!");

        Items items_2 = new Items();

        items_2.setName("苹果手机");

        items_2.setPrice(5000f);

        items_2.setDetail("iPhone11苹果手机!");

        itemsList.add(items_1);

        itemsList.add(items_2);

        //设置模型数据

        request.setAttribute("itemaList", itemsList);

        //设置转发的视图

        request.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(request, response);

    }

}

前面获取数据都是一模一样的,后面转到视图部分和实现Controller接口是不同的,实现HttpRequestHandler接口的话,最后这里处理和原来的servlet是一样的,往request域中存入数据,然后跳转到新的jsp视图页面。不过这种方式还可以修改response,设置响应的数据格式等。

不管是用那个适配器,一个相同点就是:每个Handler中只能有一个方法,因为要继承Controller或者HttpRequestHandler,就要重写相对应的那个方法,在那个方法中处理逻辑。也就是说一个Handler中不能有两个方法或两个以上的来处理不同的逻辑,这是弊端,但是也有它的好处,限定了程序员的编程,比较规范。

这两个适配器可以同时使用,不会冲突,配了两个适配器,写了两个Handler,分别去实现Controller和HttpRequestHandler接口,都可以被执行。

2. 处理器映射器

前面使用的映射器是:org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping。即:

这个映射器根据名字也可以看得出,是根据bean的name作为url进行查找,所以配置Handler的bean的时候,要配置一下name属性,设置为要请求的url即可正确映射。

还有一种处理器映射器叫简单映射器:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping。它的映射方式是直接根据url来的,如下:

这种可以直接配url,然后对应的url指定一个Handler,使用的是该Handler对应bean的id,所以只要在bean中配好id,然后将url和这个id对应上即可。经测试,这两个映射器也可以一起使用,互不冲突,匹配到哪个就用哪个。

参考:https://mp.weixin.qq.com/s/_MzJKRNERwjUo5ci4EllBg

相关文章

网友评论

      本文标题:SpringMVC中非注解方式下的映射器和适配器总结

      本文链接:https://www.haomeiwen.com/subject/gxhzmhtx.html