什么是SpringMVC?

Spring MVC 随着Spring3.0 的发布已经成为一个最优秀Spring 的MVC框架,特点有 MVC 设计模型请求驱动类型轻量级 web框架

Spring 提供的 监听器 ContextLoaderListener 做了什么

加载Spring配置文件、创建应用上下文对象并存储到ServletConttext域中,提供了一个客户端工具 WebApplicationContextUtils 获得 应用上下文对象

我们如何使用?

  • 在web.xml配置 ContexLoaderListener 监听器(Spring-web坐标)
  • 使用WebApplicationContextUtils 获得应用上下文对象 ApplicaitonContext

SpringMVC 开发步骤

切记 使用SpringMVC开发时,使用依赖 请统一版本,跨版本,你就等着报错吧!!!

切记 使用SpringMVC开发时,使用依赖 请统一版本,跨版本,你就等着报错吧!!!

切记 使用SpringMVC开发时,使用依赖 请统一版本,跨版本,你就等着报错吧!!!

  • 1、导包 SpringMVC包
  • 2、配置Servlet 核心前端控制器 DispathcerServlet
  • 3、编写Controller 和 视图页面
  • 4、将Controller 使用注解@Controller 配置到Spring 容器中
  • 5、开启组件扫描 放到 spinrg-mvc.xml
  • 6、测试
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    <!-- 使用注解开发,需要配置组件扫描 这样 Spring就能知道被注解修饰的内容-->
    <context:component-scan base-package="com.zlk"/>
</beans>

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 组建扫描 -->
    <context:component-scan base-package="com.zlk"/>

</beans>

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>



  <!-- 初始化全局参数 -->
  <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>

  <!--配置SpirngMVC 的前端控制器-->
  <servlet>
    <servlet-name>DispathcerServlet</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>DispathcerServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

自己随便写一个Controller层 写一个 RequestMapping() 即可

然后 自己测试,看看能不能调到 webapp 文件下的网页 即可

SpringMVC 执行流程 (手写)

首先要知道 组件

DispatcherServlet 前端控制器

HandlerMapping 处理器映射器

HandlerAdaptor 处理器 适配器

ViewResolver 视图解析器

  1. 用户发送请求 到DispatcherServlet
  2. DispatcherServlet前端控制器 接受请求 去调用 HandlerMapping 处理器映射器
  3. 处理器映射器找到具体的处理器(根据XML、或者注解)生成处理器对象,以及拦截器(如果有则生成没有就不生成) 一并返回给 DispatcherServlet前端控制器
  4. DispatcherServlet前端控制器 去 调用 HandlerAdaptor处理器适配器
  5. HandlerAdaptor处理器适配器 去调用具体的处理器 (Controller 也叫后端控制器)
  6. Controller 执行完成返回 ModelAndView。
  7. HandlerAdaptor处理器适配器 将后端控制器返回的 ModleAndView 返回给 DispatcherServlet前端控制器
  8. DispatcherServlet 将ModleAndViewer 传递给 ViewReslover视图解析器
  9. ViewReslover 解析后 返回DispatcherServlet 具体的View
  10. DispatcherServlet 根据View 进行渲染视图。并返还给用户。

SpringMVC 常见注解

@RequestMapping :用于建立请求URL与请求执行方法的对应关系

参数Method = “” ,可以选择 枚举形式RequestMethod.GET

配置内部资源视图解析器

spring-mvc.xml 添加下面配置

    <!-- 配置内部资源视图解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
还是那句话,你只看到了大佬轻松解决问题的光鲜,却不记得当初人家死磕Bug的痛苦。

万物皆入轮回,谁也躲不掉!

以上文章,均是我实际体验,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,支持下原创,请勿直接盗用,有条件的可以开通个会员支持下,谢谢!!!

Java Code Study » 1 SpringMVC

招聘、单纯问问题,都可以联系我

加我QQ 公司缺人,拉我入伙