1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java元婴期(28)----java进阶(springmvc(2)---入门程序(下)基于注解开发(重点掌握))

java元婴期(28)----java进阶(springmvc(2)---入门程序(下)基于注解开发(重点掌握))

时间:2022-04-05 06:17:04

相关推荐

java元婴期(28)----java进阶(springmvc(2)---入门程序(下)基于注解开发(重点掌握))

入门程序

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

1.非注解的处理器映射器

处理器映射器:

org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping

另一个映射器:

org.springframework.web.servlet.handler.SimpleUrlHandlerMapping

多个映射器可以并存,前端控制器判断url能让哪些映射器映射,就让正确的映射器处理。

2.非注解的处理器适配器

org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter

要求编写的Handler实现 Controller接口。

//使用此方法可以通过修改response,设置响应的数据格式,比如响应json数据

/*

response.setCharacterEncoding("utf-8");

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

response.getWriter().write("json串");*/(若是有疑问请回顾json篇)

DispatcherSerlvet.properties

前端控制器从上边的文件中加载处理映射器、适配器、视图解析器等组件,如果不在springmvc.xml中配置,使用默认加载的。

解的处理器映射器和适配器(重点掌握,非注解部分主要了解原理)

在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。

在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器

在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter注解适配器。

在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器。

(务必配对使用)

配置注解映射器和适配器。

<!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置mvc:annotation-driven默认加载很多的参数绑定方法,比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter实际开发时使用mvc:annotation-driven--><!-- <mvc:annotation-driven></mvc:annotation-driven> -->

开发注解Handler

使用注解的映射器和注解的适配器。(注解的映射器和注解的适配器必须配对使用)

此处的注解,在springmvc的配置文件中会有对应的注解扫描

//使用Controller标识 它是一个控制器@Controllerpublic class ItemsController3 {//商品查询列表//@RequestMapping实现 对queryItems方法和url进行映射,一个方法对应一个url//一般建议将url和方法写成一样@RequestMapping("/queryItems")public ModelAndView queryItems()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("iphone6苹果手机!");itemsList.add(items_1);itemsList.add(items_2);//返回ModelAndViewModelAndView modelAndView = new ModelAndView();//相当 于request的setAttribut,在jsp页面中通过itemsList取数据modelAndView.addObject("itemsList", itemsList);//指定视图modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");return modelAndView;}

在spring容器中加载Handler

<!-- 对于注解的Handler可以单个配置实际开发中建议使用组件扫描--><!-- <bean class="cn.itcast.ssm.controller.ItemsController3" /> --><!-- 可以扫描controller、service、...这里让扫描controller,指定controller的包--><context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan>

部署调试

访问:http://localhost:8080/springmvcfirst1208/queryItems.action

源码分析(重点)

通过前端控制器源码分析springmvc的执行过程。

第一步:前端控制器接收请求

调用doDiapatch

第二步:前端控制器调用处理器映射器查找 Handler

第三步:调用处理器适配器执行Handler,得到执行结果ModelAndView

第四步:视图渲染,将model数据填充到request域。

视图解析,得到view:

调用view的渲染方法,将model数据填充到request域

渲染方法:

入门程序小结

前端控制器配置:

第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析

第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析

使用此种方式可以实现 RESTful风格的url

处理器映射器:

非注解处理器映射器(了解)

注解的处理器映射器(掌握)

对标记@Controller类中标识有@RequestMapping的方法进行映射。在@RequestMapping里边定义映射的url。使用注解的映射器不用在xml中配置url和Handler的映射关系。

处理器适配器:

非注解处理器适配器(了解)

注解的处理器适配器(掌握)

注解处理器适配器和注解的处理器映射器是配对使用。理解为不能使用非注解映射器进行映射。

<mvc:annotation-driven></mvc:annotation-driven>可以代替下边的配置:

<!--注解映射器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/><!--注解适配器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

实际开发使用:mvc:annotation-driven

视图解析器配置前缀和后缀:

程序中不用指定前缀和后缀:

小结-springmvc代码执行流程(基于注解)

​​​​​​​此图一定要结合springmvc的架构图来理解

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。