SpringMVC是基于Spring技术的一款MVC框架,所谓MVC是web开发的一种经典设计模式,c指的是Controller(控制器),m是model(模型)及是通常我们所建的那些类,v(视图层)就是那些前端所能看见的页面 。主要是用来进行Web开发,是对Servlet进行了封装。
特点:
- 轻量级,简单易学
- 高效 , 基于请求响应的MVC框架
- 与Spring兼容性好,无缝结合
- 约定优于配置
- 功能强大:RESTful、数据验证、格式化、本地化、主题等
- 简洁灵活
以下是SpringMVC流程图。
SpringMVC入门案例(全注解)
-
SpringMVC的制作过程和Servlet开发流程几乎是一致的,具体的实现流程是如下:
1.创建web工程(Maven结构)
2.设置tomcat服务器,加载web工程(tomcat插件)
3.导入坐标(SpringMVC+Servlet)
4.定义处理请求的功能类(UserController)
5.设置请求映射(配置映射关系)
6.将SpringMVC设定加载到Tomcat容器中
-
创建一个Maven工程后,在.pom文件中添加相应的依赖坐标
javax.servlet javax.servlet-api 3.1.0 provided org.springframework spring-webmvc 5.2.10.RELEASE org.apache.tomcat.maven tomcat7-maven-plugin 2.1 8095 /
-
创建配置类
@Configuration @ComponentScan("com.itheima.controller") public class SpringmvcConfig { }@Configuration代表此类是个配置类,代替了配置文件中的SpringMVC的下xml文件。
@ComponentScan代表此配置类作用在哪个包结构下。
-
创建Controller类
@Controller public class UserController { @RequestMapping("/save") @ResponseBody public void save(){ System.out.println("user save ..."); return "{'info':'springmvc'}"; } }@Controller代表此类是在控制层,被Spring容器控制的类。
@RequestMapping代表前端访问此注解中的地址时就执行该方法,这里的sava方法就是打印了一句话。
@ResponseBody代表此方法返回的数据格式为json格式。
-
使用配置类代替Web项目中的web.xml文件。
将原来的web.xml文件删除,创建一个配置类ServletContainersInitConfig(类名可以随意取);
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer { @Override//加载Springmvc配置类 protected WebApplicationContext createServletApplicationContext() { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); //加载指定配置类 ctx.register(SpringmvcConfig.class); return ctx; } @Override//设置由springmvc控制器处理的请求映射路径 protected String[] getServletMappings() { return new String[]{"/"}; } @Override//加载Spring配置 protected WebApplicationContext createRootApplicationContext() { return null; } }这里主要是继承AbstractDispatcherServletInitializer再重写它三个方法,入门案例没有Spring配置类,所以主要是加载Springmvc配置类和设置有springmvc控制器处理的请求映射路径方法需要有返回值。
-
配置Tomcat环境
-
启动项目
-
访问路径进入浏览器在路径后加上“/save”访问。
浏览器页面:
控制台打印:user save …
此次SpringMVC全注解开发案例就完成了,可以看出代码量不多,只需要设置两个配置类加一个Contorller类。再加上相对应的注解和请求路径就好。
注意事项:
-
案例中的端口是8095;
-
SpringMVC是基于Spring的,在pom.xml只导入了spring-webmvcjar包的原因是它会自动依赖spring相关坐标
-
AbstractDispatcherServletInitializer类是SpringMVC提供的快速初始化Web3.0容器的抽象类
-
AbstractDispatcherServletInitializer提供了三个接口方法供用户实现
- createServletApplicationContext方法,创建Servlet容器时,加载SpringMVC对应的bean并放入WebApplicationContext对象范围中,而WebApplicationContext的作用范围为ServletContext范围,即整个web容器范围
- getServletMappings方法,设定SpringMVC对应的请求映射路径,即SpringMVC拦截哪些请求
- createRootApplicationContext方法,如果创建Servlet容器时需要加载非SpringMVC对应的bean,使用当前方法进行,使用方式和createServletApplicationContext相同。
- createServletApplicationContext用来加载SpringMVC环境
- createRootApplicationContext用来加载Spring环境
-



