★springMVC表现层框架

什么是MVC?

 

 

 

 

Model(模型):数据模型,提供前端要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao)和服务层(行为Service),也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务

 

View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西

 

Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示,也就是说控制器做了个调度员的工作

 

SpringMVC

Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架

 

Spring MVC的特点:

1、轻量级,简单易学

2、高效,基于请求响应的MVC框架

3、与Spring兼容性好,无缝结合

4、约定优于配置

5、功能强大:RESTful、数据验证、格式化、本地化、主题化等

6、简洁灵活

 

最开始我们在处理请求和响应是基于servlet的,那servlet是一个规范,不属于框架,springMVC是一个表现层的框架,在底层封装了servlet

MVC实现了视图和业务代码的分离

 

springMVC核心原理

  1. 用户发送请求给服务器,url:user.do
  2. 服务器收到请求,发现DispatcherServlet可以处理,于是调用DispatcherServlet
  3. DispatcherServlet内部,通过HandlerMappings(处理映射器)检查这个url有没有对应的Controller,如果有,则通HandlerAdapters(处理适配器)调用Controller
  4. Controller开始执行
  5. Controller执行完毕后,如果返回字符串,则ViewResolvers将字符串转化成相应的视图对象,如果返回ModelAndView对象,该对象本身就包含了视图对象信息
  6. DispatcherServlet通过ViewResolvers(视图解析器)将视图对象中的数据输出给服务器
  7. 服务器将数据输出给客户端

 

springMVC整体调度流程

 

配置springMVC

springMVC框架如何去使用,如何去配置?

使用控制器

创建一个TestController类,实现Controller接口

 

我们在定义了一个Controller之后如何通过mvc去访问这个资源?

1、在web.xml中配置DispatcherServlet:mvc框架前端总调度器

具体会去完成web交互时的各自调度工作

 

web.xml中配置前端总调度器,所有的访问请求都会进入此资源

 

2、由于MVC框架属于spring的功能模块,所以必须得有核心容器的支持,要去创建spring配置文件springMVC.xml

 

创建springMVC.xml配置文件,引入springMVC的xml约束

 

web.xml中注册配置文件位置,核心容器对象可以交给DispacherServlet去创建,需要指定配置文件的位置,以及设置启动级别

 

继续配置springMVC.xml,注册controller组件,视图解析器实例

 

SpringMVC基于注解

<mvc:default-servlet-handler/>

让SpringMVC不处理静态资源

 

<mvc:annotation-driven/>

支持mvc注解驱动

 

InternalResourceViewResolver

视图解析器

配置xml,开启对注解的支持

 

@Controller注解

这个注解如果只是在spring框架中使用的话,就是将当前类的实例存到容器中 但是如果在springMVC中去使用,它不仅可以存实例到容器,还能够将该类下任意一个方法的返回值是String 的方法,返回值会作为视图名称,用于视图跳转

 

@RequestMapping注解

用于地址的映射,可以修饰类也可以修饰方法,也可以只在方法上使用,能够体现层级关系

此时在前端访问:http://localhost:8080/springMVC/user/test 测试资源

 

@ResponseBody注解

让当前视图失效,并且会直接返回数据

 

springMVC如何去接收前端传递过来的值

springMVC可以支持参数接值,你在前端需要传递的数据,后端mvc可以使用参数进行接收

可以在接收参数的时候接收HttpServletrequest,再接收Parameter值

也可以在参数中根据对应参数名接值

springMVC在参数列表中可以通过实体进行接值

mvc会根据接收实例的属性名称来接收对应的前端数据,并且封装成java对象

 

springMVC如何将封装好的数据存到Model中

在参数中接收一个Model接口的实例,是由springMVC提供的,底层封装了request域

通过返回字符串的方式

通过返回ModelAndView的方式

 

通过SpringMVC来实现转发和重定向

forward 在MVC框架中视图跳转默认就是请求转发

redirect

 

项目

通过spring + springMVC + jdbcTemplate 来搭建一个web项目,完成员工列表

 

web.xml配置

 

springMVC.xml配置

 

表现层(控制器)

 

业务层

 

持久层

 

springMVC能够高效的去处理请求和响应,还支持参数接值,也可以支持注解的方式来映射资源路径