目录
1. 什么是SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText和POI。Spring MVC 框架并不知道使用的视图,所以不会强迫开发者只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。
2. SpringMVC的特点
- 轻量级,简单易学
- 高效:基本请求相应的MVC框架
- 与Spring兼容特别好,无缝衔接
- 预定大于配置
- 功能强大
- 简单灵活
Spring的web框架围绕DispatcherServlet 设计。DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁;正因为SpringMVC好 , 简单 , 便捷 , 易学 , 天生和Spring无缝集成(使用SpringIoC和Aop) , 使用约定优于配置 . 能够进行简单的junit测试 . 支持Restful风格 .异常处理 , 本地化 , 国际化 , 数据验证 , 类型转换 , 拦截器 等等…所以我们要学习 。最重要的一点还是用的人多 , 使用的公司多。
3. SpringMVC核心控件
- 前端控制器(DispatcherServlet):对其他组件进行解耦,这样就增加了组件的可扩展性 无需开发直接配置
- 处理器映射器(HandlerMapping):无需开发,直接用,作用见上面
- 处理器适配器(HandlerAdapter):无需开发
- 处理器(Handler):需要开发,方式很多,也就是编写的 xxxController
- 视图解析器(ViewResolver):无需开发
- 视图(View):需要开发
4. SpringMVC执行流程
5. 常用注解
- @Controller 标注在类上,表示这是一个Controller层组件
- @Service 标注在类上,表示这是一个Service层组件
- @Repository 标注在类上,表示这是一个Dao持久层组件
- @RequestMapping 标注在类或方法上,用来映射Web请求(访问路径和参数)
- @ResponseBody 标注在返回值或者方法上,表示支持将返回值放在response体内,返 回json数据
- @RequestBody 标注在参数前,表示允许request的参数在request体中,而不是在直 接链接在地址后面
- @PathVariable 标注在参数前,用来接收路径参数
- @RestController 标注在类上,组合注解,组合了@Controller和@ResponseBody
6. 编写SpringMVC程序的步骤
- 新建一个Moudle , springmvc-hello , 添加web的支持!
- 导入了SpringMVC 的依赖!
- 配置web.xml , 注册DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--注册DispatcherServlet-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 这里有三种配置url-pattern方案
1、*.do:后缀为.do的请求才能够访问到该servlet[用这个]
2、/ :所有请求都能够访问到该servlet(除jsp),包括静态请求(处理会有问题,不用)
3、/* :有问题,因为访问jsp也会到该servlet,而访问jsp时,我们不需要这样,也不用
-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
4. 编写SpringMVC 的 配置文件!名称:springmvc-servlet.xml
<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!--添加处理器映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--添加处理器适配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--添加视图解析器-->
<!--视图解析器:DispatcherServlet给他的ModelAndView-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
<!-- 使用注解的handle,则需要配置组件扫描器,加载handler
base-package:指定要扫描的包
-->
<context:component-scan basepackage="com.johong.springmvc.controller</context:component-scan>
</beans>
5. 编写我们要操作业务Controller ,有三种方式,一是实现Controller接口,二是使用注解(掌握注解方式),三是实现HttpRequestHandler接口
6. 编写视图页面