SpringMVC
简介
SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC也是要简化我们日常Web开发。
基本案例(创建流程)
1.导入坐标
<!--1.导入springmvc与servlt坐标-->
<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>
2.创建SpringMVC控制器类
/**
* 2.定义Controller
* 2.1 @Controller --设定SpringMVC的核心控制器bean
*/
@Controller
public class UserController {
/**
* 2.2 @RequestMapping --设置当前控制器方法请求访问路径
*/
@RequestMapping("/save")
/**
* 2.3 设置当前操作的返回类型
* @ResponseBody --设置当前控制器方法响应内容为当前返回值,无需解析
*/
@ResponseBody
public String save(){
System.out.println("user save ...");
return "{'module':'springmvc'}";
}
}
3.初始化SpringMVC环境(同Spring环境), 设定SpringMVC加载对应的bean
//3.加载springmvc的配置文件,加载controller对应的bean
@Configuration
@ComponentScan("com.itnkb")
public class SpringMvcConfig {
}
4.初始化Servlet容器,加载SpringMVC环境, 并设置SpringMVC技术处理的请求
//4.定义一个servlet容器启动的配置类,其中加载spring的配置
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
//加载springMVC配置
protected WebApplicationContext createServletApplicationContext() {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(SpringMvcConfig.class);
return ctx;
}
//设置哪些请求归属springMVC处理
protected String[] getServletMappings() {
return new String[]{"/"};
}
//加载spring配置
protected WebApplicationContext createRootApplicationContext() {
return null;
}
}
网页启动结果
总结![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5476743d6625038772f2d16fe5fded4b.png)
bean控制
主要解决Spring和Spring分别控制bean,通过精确设定来完成-
Spring配置类
/**
* 为避免spring加载的bean扫描到springMVC应该加载的bean,采取精确设定的方法
*/
@Configuration
@ComponentScan({"com.itnkb.service","com.itnkb.dao"})
public class SpringConfig {
}
解决初始化Servlet容器的耦合问题
/**
* 通过继承"AbstractAnnotationConfigDispatcherServletInitializer"来解决耦合
*/
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{SpringConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMvcConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}