IT 梁朝伟带你走近 Spring MVC
1. spring MVC
Spring Web MVC是一种基于Java的实现了MVC设计模式的、请求驱动类型的、轻量级Web框架。、
1.1 spring mvc 的优点
- 多视图共享应该模型,大大提高代码的可重用性
- mvc3个模板相互独立,松耦合结构
- 控制器提高了应用程序的灵活性和可配置性
- 有利于软件工程化管理
2.1 spring mvc 的缺点
- 原理复杂
- 增加了系统结构和实现的复杂性
- 视图对模型数据的低效率访问
2. spring MVC 搭建
2.1 引入jar
<!-- spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.1.7.RELEASE</version>
</dependency>
<!-- spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.7.RELEASE</version>
</dependency>
2.2 spring MVC配置
2.2.1配置web.xml
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
2.2.1 配置mvc文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 加访问url的前缀和后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/"/>
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
<!-- 后缀是html会404,还没有找到原因 -->
</bean>
</beans>
2.3 创建controller
@Controller
public class StandardControllr {
@Autowired
private StandardService standardService;
@RequestMapping("/index")
public ModelAndView toindex(){
ModelAndView modelAndView =new ModelAndView();
modelAndView.setViewName("biaoList");
return modelAndView;
}
}
2.4 创建view
用jsp就可以了
3. spring MVC 流程
- 首先用户发送请求–>DispatherServlet
- DispatcherServlet–>HandlerMapping
- DispatcherServlet–>HandlerAdapter
- HandlerAdapter–>处理器功能处理方法的调用
- ModelAndView的逻辑视图名–>ViewRecolver
- View–>渲染
- 返回控制权给DispatcherServlet,由DispatcherServlet返回呼应给用户,流程结束。
3.1 SpringMVC核心开发步骤
DispatcherServlet在web.xml中的部署描述,从而拦截请求到springMVC
HandlerMapping的配置,从而将请求映射到处理器
HandlerAdapter的配置,从而支持多种类型的处理器
处理器(页面控制器)的配置,从而刊行功能处理
ViewResolver的配置,从而将逻辑视图名解析为具体的视图技术
3.2 SpringMVC的组件
前端控制器(DispatcherServlet)
请求到处理器映射(HandlerMapping)
处理器适配器(HandlerAdapter)
视图解析器(ViewResolver)
处理器或页面控制器(Controller)
4.注解
- @Controller:用于标识处理器类
- @RequestMapping:(窄化路径)请求到处理器功能方法的映射规则,可定义到类和方法
- @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定
- @ModelAttribute:请求参数到命令对象的绑定
- @SessionAttributes:指定ModelMap中的哪些属性需要转存到session
- @RequestBody:用于目前比较流行的ajax开发的数据绑定(即提交数据的类型为json格式)
- @ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换)
- @RestController:@RestController注解相当于@ResponseBody + @Controller合在一起的作用