一. Spring集成web环境
1. 基本三层架构环境搭建
1.1 添加依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
1.2 创建web层
![在这里插入图片描述](https://img-blog.csdnimg.cn/ef8bafda29cc4c92a3f259380bb975d3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
2. ApplicationContext应用上下文获取方式
![在这里插入图片描述](https://img-blog.csdnimg.cn/47eb848bd3ba4d628a6d81bdc5ca4e6b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/2c9dcf95138546ff929a75e7d2802052.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/bf03ed5805a8466eab944a2bfae873f0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
3. Spring提供获取应用上下文的工具
![在这里插入图片描述](https://img-blog.csdnimg.cn/4cc89fdb3f4246cb99308dece4e0232d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
4. 导入Spring集成web的坐标
这样就可以配置监听器了
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
5. 配置ContextLoaderListener监听器
![在这里插入图片描述](https://img-blog.csdnimg.cn/241b32ea21c64e9cb2bebbe4dcb233a8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
6. 通过工具获得应用上下文对象
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
ApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(servletContext);
UserService userService = app.getBean(UserService.class);
userService.save();
}
}
ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
Object obj = applicationContext.getBean("id");
二. SpringMVC的简介
1. SpringMVC概述
![在这里插入图片描述](https://img-blog.csdnimg.cn/dca82b72090a41b2a24a492fb4891cc2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
2. SpringMVC快速入门
![在这里插入图片描述](https://img-blog.csdnimg.cn/4179e267ca98419bb15dcc3012b0c4e8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/bcc6f342b3124d03869ca3b60d11e088.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_17,color_FFFFFF,t_70,g_se,x_16)
2.1 导入Spring和SpringMVC的坐标和Servlet和Jsp的坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
2.2 在web.xml配置SpringMVC的核心控制器
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.3 创建Controller和业务方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/cd967b6e6b8541458ffc76cbddb64148.png)
2.4 创建视图页面index.jsp
![在这里插入图片描述](https://img-blog.csdnimg.cn/9cbef82e8f844ba8b8420d285875ce8a.png)
2.5 配置注解
![在这里插入图片描述](https://img-blog.csdnimg.cn/dbb3d3eb2b264917adc859ccb8142e36.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_19,color_FFFFFF,t_70,g_se,x_16)
2.6 创建spring-mvc.xml
![在这里插入图片描述](https://img-blog.csdnimg.cn/971f3af936aa47f69af11774f089bbea.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
2.7 访问测试地址
![在这里插入图片描述](https://img-blog.csdnimg.cn/cecae38a24be4e13a8b4c3a0ec402a2a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_19,color_FFFFFF,t_70,g_se,x_16)
3. SpringMVC流程图示
![在这里插入图片描述](https://img-blog.csdnimg.cn/81b96015554a435580ceb2977485cf2b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
三. SpringMVC 组件解析
1. SpringMVC的执行流程
![在这里插入图片描述](https://img-blog.csdnimg.cn/cec992c44a4e4a6eb94397a4688374c9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/5450f6df1db44efeb90ef3676a40c22c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
2. SpringMVC组件解析
![在这里插入图片描述](https://img-blog.csdnimg.cn/849604ff41b8496b8130400860890d81.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/77a79d9041bb4f9396d81f41b076445d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
3. SpringMVC注解解析
![在这里插入图片描述](https://img-blog.csdnimg.cn/c8ee7196e8744871bc80bb37c6d86e12.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/7891e235cd8e4d6ea172ddaa3c09a226.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/d935afb3d3e846bf99bec38badd6dffb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
4. SpringMVC的XML配置解析
![在这里插入图片描述](https://img-blog.csdnimg.cn/5dd5bbda11324625ad60e1a19decd256.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/f4c29c675709402bbc9a403c1e8b4ca5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/ea8a2f2b4ab444a383c50c7a1cd66111.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
|