一、SpringMVC简介
1.1 介绍
1.2 入门案例
1.创建maven工程的Javaweb项目,并在pom.xml中导入两个相关依赖
<!-- web项目的打包方式为war包--> <packaging>war</packaging> <!-- tomcat7插件--> <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>80</port> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!-- 导入servlet和springmvc相关的依赖(注意:因为使用的是tomcat7插件,springmvc的版本不能太高)--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.10.RELEASE</version> </dependency> </dependencies>
2.编写控制器类和请求方法
// 2.定义Controller @Controller public class UserController { // 3.设置当前方法的访问路径 @RequestMapping("/select") // 4.设置返回内容作为响应数据 @ResponseBody public String select() { System.out.println("user select ..."); return "{'msg':'select'}"; } @RequestMapping("/delete") @ResponseBody public String delete() { System.out.println("user delete ..."); return "{'msg':'delete'}"; } }
注意事项:
- @RequestMapping的值不可以相同,否则报错
- 方法有参数,但是访问时没有参数,依然可以调用到方法
3.编写SpringMVC配置类(类似于Spring配置类)
@Configuration @ComponentScan("com.itxiaoguo") public class SpringMvcConfig { // 5.编写SpringMVC的配置类(类似spring的配置类) }
4.编写Servlet容器初始化类,告诉tomcat服务器加载SpringMVC的配置
// 6.编写Servlet容器初始化配置类(用于tomcat服务器加载SpringMVC配置类) public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer { // 加载SpringMVC容器配置信息 @Override protected WebApplicationContext createServletApplicationContext() { AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); context.register(SpringMvcConfig.class); // 注入配置信息 return context; } // 设置哪些请求归SpringMVC处理 @Override protected String[] getServletMappings() { return new String[]{"/"}; // 设置所有请求归SpringMVC管理 } // 加载Spring容器配置信息 @Override protected WebApplicationContext createRootApplicationContext() { return null; } }
5.启动tomcat服务器,在浏览器对Controller的方法进行访问
6.如果是没有定义的方法,那么访问就会显示404
1.3 入门案例工作流程
(1)服务器初始化过程
1.服务器启动,执行ServletContainersInitConfig类,初始化web容器
2.执行createServletApplicationContext方法,注册SpringMVC配置信息
3.加载SpringMVCConfig类,加载对应包下的bean
4.加载UserController类,每个@RequestMapping对应一个方法
5.执行getServletMappings方法,将所有请求交由SpringMVC处理
(2)单次请求过程
1.发送请求:localhost/springmvc_1/select
2.web容器发现所有请求由SpringMVC处理
3.解析请求路径,得到请求方法名,执行对应的@RequsetMapping的方法
4.检测到@ResponseBody,直接将返回值作为响应返回
二、bean加载控制
背景引入:
SpringMVC中控制的bean是表现层的bean,Spring控制业务层和数据层的bean,为了让Spring不加载表现层的bean,只需要在Spring的配置类的@ComponentScan注解中不扫描SpringMVC的bean就可以了。
2.1 SpringMVC bean加载控制
SpringMVC加载的bean放在controller包下。
2.2 Spring bean加载控制
(1)扫描业务层和数据层,不扫描表现层
目录结构:
下面看Spring配置类:
@Configuration @ComponentScan({"com.itxiaoguo.service"}) public class SpringConfig { }
因为数据层没有写实现类,因此配置中不加载数据层的bean;按照代码,我们可以加载上service层的bean,不能加载上controller层的bean。下面看测试代码和运行结果:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {SpringConfig.class}) public class UserServiceImplTest { @Autowired private UserService service; @Test public void testBean() { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); // 加载Spring配置类 UserController userController = context.getBean(UserController.class); System.out.println(userController); // System.out.println(service); // 分别查看是否被加载了 } }
不知道如何使用Spring测试,请戳👉👉:Spring整合mybatis和junit测试
可以看到表现层没有被加载,下面将上面最后一行输出service对象的代码解开注释,并注释掉获取和输出userController的语句,查看运行结果:
综上所述,将Spring和SpringMVC管理的bean分开的需求已经实现!
(2)扫描所有,排除表现层
@Configuration @ComponentScan( value = {"com.itxiaoguo"}, excludeFilters = @ComponentScan.Filter( type = FilterType.ANNOTATION, // 使用注解过滤类型 classes = Controller.class // 指明要过滤的具体哪一种注解类型 ) ) public class SpringConfig { }
综上所述,将Spring和SpringMVC管理的bean分开的需求已经实现!
(2)扫描所有,排除表现层
@Configuration @ComponentScan( value = {"com.itxiaoguo"}, excludeFilters = @ComponentScan.Filter( type = FilterType.ANNOTATION, // 使用注解过滤类型 classes = Controller.class // 指明要过滤的具体哪一种注解类型 ) ) public class SpringConfig { }
使用上面的测试类,注意SpringMVC配置类中不能扫描controller层,否则过滤失效!同样可以验证这种方式也实现了需求。
(3).不区分Spring和SpringMVC环境(待了解…^ _ ^)
三、使用Postman接口测试工具测试接口
3.1Postman工具介绍
官方解释:
Postman是Google公司开发的一款功能强大的网页调试与发送HTTP请求,并能运行测试用例的Chrome插件。
通俗地讲:
它可以帮助我们模仿浏览器发送请求,比如get、post、异步等。以前我们要发送post请求(form表单)或者异步请求(Ajax),都要通过写代码来实现,现在通过这款工具我们直接选择请求方式就可以实现!
3.2使用Postman测试访问Controller
(1)下载Postman(又名邮差)工具
Postman的下载使用教程,请戳👉👉postman使用教程(超详细)
(2)输入url测试
(3)查看测试返回结果
控制台输出结果:
根据以上输出,可以知道使用Postman工具访问和浏览器访问同样可以实现。
四、结语
这篇文章主要介绍了SpringMVC是隶属于Spring framework家族中的web层框架,以及入门案例和执行流程,bean的加载控制,最后介绍Postman工具的使用。