SpringMVC入门案例
概述
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文件中添加相应的依赖坐标
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>8095</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
-
创建配置类
@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-webmvc
jar包的原因是它会自动依赖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环境
-