SpringMVC
一. 简述SpringMVC
SpringMVC是一个基于java实现MVC设计模式的轻量级框架,也是一个基于请求驱动的web框架。使用前端控制器实现视图层和控制层的参数传递。
二. SpringMVC的请求处理流程
- 用户发送请求到前端控制器。
- 前端控制器根据xml、注解请求处理器映射器查找Handler
- 处理器映射器向前端控制器返回Handler
- 前端控制器用适配器去执行Handler
- 处理器适配器去执行Handler
- Handler执行完成给适配器返回MondelAndView
- 处理器适配器向前端控制器返回MondelAndView
- 前端控制器请求视图解析器去进行视图解析,解析出真正的视图
- 视图解析器向前端控制器返回View
- 前端控制器将模型数据填充到视图进行渲染
- 前端控制器向用户响应结果
三. 部分组件的作用
DispatcherServlet:前端控制器
DispatcherServlet是整个流程控制的中心,是springmvc中最核心的类,在web.xml中配置。降低了各个组件之间的耦合性
HandlerMapper:处理器映射器
根据用户请求url找到(Handler)处理器
HandlerAdapter:适配器
通过HandlerAdapter对处理器进行执行,这是适配器器模型的应用
ModelAndView:视图与模型
一般在Controller层作为结果类型返回,其内部view部分指定返回的页面,model指定返回的参数
四. SpringMVC优点
- 灵活的配置功能
- 提供了大量的控制器接口和实现类
- 真正做到了与View层实现无关
- 面向接口编程
五. 注解方式
若有多个请求时,需要配置多个映射关系,并建立多个Controller来进行多个处理。
更改spring-mvc.xml基于注解的处理器
1 <!--启用SpringMvc注解--> 2 <mvc:annotation-driven/> 3 <!--对web包中的所有类进行扫描,已完成Bean的创建和自动依赖注入的功能--> 4 <context:component-scan base-package="cn.controller"/> 5 <!--启动SpringMvc的注解功能,完成请求和注解pojo的映射--> 6
cn包下controller类 cn.controller类中的各个注释
@Controller:标注一个普通的JavaBean类成为可以处理请求的控制器
@HandlerMapper:通过请求URL进行映射
六. 视图解析器
设置spring-mvc.xml视图解析器
1 <!--视图解析器--> 2 <bean class="org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver"/> 3 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 4 <property name="prefix" value="/"></property> 5 <property name="suffix" value=".jsp"></property> 6 </bean>
七. 参数传递
- view to Controller
在方法参数前加@RequestParam进行入参
@RequestMapping("/hehe") public String a(){ return "first"; }
- Controller to view
添加模型数据
@RequestMapping("/lala") public ModelAndView c(User u){ System.out.println(u.getName()+"---"+u.getAge()); ModelAndView mav=new ModelAndView(); mav.addObject("name","李四"); mav.setViewName("first"); return mav; }