【SpringMVC】快速入门
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)服务器初始化过程
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,直接将返回值作为响应返回
背景引入:
SpringMVC中控制的bean是表现层的bean,Spring控制业务层和数据层的bean,为了让Spring不加载表现层的bean,只需要在Spring的配置类的@ComponentScan注解中不扫描SpringMVC的bean就可以了。
SpringMVC加载的bean放在controller包下。
(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 {
}
使用上面的测试类,注意SpringMVC配置类中不能扫描controller层,否则过滤失效!同样可以验证这种方式也实现了需求。
(3).不区分Spring和SpringMVC环境(待了解…^ _ ^)
官方解释:
Postman是Google公司开发的一款功能强大的网页调试与发送HTTP请求,并能运行测试用例的Chrome插件。
通俗地讲:
它可以帮助我们模仿浏览器发送请求,比如get、post、异步等。以前我们要发送post请求(form表单)或者异步请求(Ajax),都要通过写代码来实现,现在通过这款工具我们直接选择请求方式就可以实现!
(1)下载Postman(又名邮差)工具
Postman的下载使用教程,请戳👉👉postman使用教程(超详细)
(2)输入url测试
(3)查看测试返回结果
控制台输出结果:
根据以上输出,可以知道使用Postman工具访问和浏览器访问同样可以实现。
这篇文章主要介绍了SpringMVC是隶属于Spring framework家族中的web层框架,以及入门案例和执行流程,bean的加载控制,最后介绍Postman工具的使用。
- 点赞
- 收藏
- 关注作者
评论(0)