SpringMVC 概述

1.1 SpringMVC 概述 

  1) Spring 为展现层提供的基于 MVC 设计理念的优秀的 Web 框架,是目前最主流的MVC 框架之一

  2Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架。

  3Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口。

  4)支持 REST 风格的 URL 请求。   Restful

  5)采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。

 

1.2 SpringMVC是什么 

  1)一种轻量级的、基于MVC的Web层应用框架。偏前端而不是基于业务逻辑层。Spring框架的一个后续产品。

 

  2Spring框架结构图(新版本):

  

 

1.3 SpringMVC能干什么 

  1) 天生与Spring框架集成,如:(IOC,AOP)

  2) 支持Restful风格

  3) 进行更简洁的Web层开发

  4) 支持灵活的URL到页面控制器的映射

  5) 非常容易与其他视图技术集成,如:Velocity、FreeMarker等等

  6) 因为模型数据不存放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用)

  7) 非常灵活的数据验证、格式化和数据绑定机制、能使用任何对象进行数据绑定,不必实现特定框架的API

  8) 更加简单、强大的异常处理

  9) 对静态资源的支持

  10) 支持灵活的本地化、主题等解析

 

 

1.4 SpringMVC怎么玩

 

1)将Web层进行了职责解耦,基于请求-响应模型
2)常用主要组件
  ①DispatcherServlet:前端控制器
  ②Controller:处理器/页面控制器,做的是MVC中的C的事情,但控制逻辑转移到前端控制器了,用于对请求进行处理
  ③HandlerMapping :请求映射到处理器,找谁来处理,如果映射成功返回一个HandlerExecutionChain对象
              (包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器对象)   ④View Resolver : 视图解析器,找谁来处理返回的页面。把逻辑视图解析为具体的View,进行这种策略模式,很容易更换其他视图技术;     如InternalResourceViewResolver将逻辑视图名映射为JSP视图   ⑤LocalResolver:本地化、国际化   ⑥MultipartResolver:文件上传解析器   ⑦HandlerExceptionResolver:异常处理器

 

 

SpringMvc的入门

**开发步骤**

  ①导入SpringMVC相关坐标

  ②配置SpringMVC核心控制器DispathcerServlet

  ③创建Controller类和视图页面

  ④使用注解配置Controller类中业务方法的映射地址

  ⑤配置SpringMVC核心文件 spring-mvc.xml

  ⑥客户端发起请求测试

代码实现

 

我们将要实现项目结构是:

 

 

 

 

 

 

 

 

①导入Spring和SpringMVC的坐标、导入Servlet和Jsp的坐标

我们要先在pom.xml中导入所需要的jar包坐标

 <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
<!-- 导入springMvc框架需要的jar包坐标-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.4.RELEASE</version>
    </dependency>
<!--导入spring框架需要的jar包坐标,springMvc依赖spring框架-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.4.RELEASE</version>
    </dependency>
<!--servlet坐标-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>
<!--    jsp坐标-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
    </dependency>
  </dependencies>

 

②创建spring-mvc.xml

在src目录下创建main下创建resources 并设置Resoucrs Root

 

 

 

src-->main-->resources

在resource下建立springMvc.xml的配置文件

springMvc.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
       http://www.springframework.org/schema/context/spring-context.xsd
">

<!--  配置注解扫描-->
    <context:component-scan base-package="com.springMvc"/>

</beans>

 

③在web.xml配置SpringMVC的核心控制器

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>
  <!--  配置springMvc的前端控制器-->
  <servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>   <!--DiepatcherServlet 是依赖spring-webmvc这个包 -->
<!-- init-param是选择你的mvc项目初始加载的配置--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMvc.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--> </servlet-mapping> </web-app>

 

 

④在项目的java目录下创建web目录并在web中创建Controller和业务方法

package com.springMvc.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller //将这个web层的类加入到spring容器中
public class QuickController {

    @RequestMapping("/quick")// RequestMapping()注解为你的请求地址对应的要执行的方法
    public String save(){
        return "success.jsp";
    }
}

 

 

④在项目的webapp下创建视图页面success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

success !!!

</body>
</html>

⑤配置你的tomcat运行容器内容

 

 

 

 

 

 

⑥访问测试地址

http://localhost:8080/quick

页面显示:

 

 

2.3 SpringMVC流程图示

 

 SpringMVC入门步骤

Spring访问流程(代码角度)

 

SpringMVC的开发步骤

   ①导入SpringMVC相关坐标

   ②配置SpringMVC核心控制器DispathcerServlet

   ③创建Controller类和视图页面

   ④使用注解配置Controller类中业务方法的映射地址

   ⑤配置SpringMVC核心文件 spring-mvc.xml

   ⑥客户端发起请求测试

 

 

3. SpringMVC的组件解析

 

 

 

 

①用户发送请求至前端控制器DispatcherServlet。

②DispatcherServlet收到请求调用HandlerMapping处理器映射器。

③处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

④DispatcherServlet调用HandlerAdapter处理器适配器。

⑤HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

⑥Controller执行完成返回ModelAndView。

⑦HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

⑧DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

⑨ViewReslover解析后返回具体View。

⑩DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户。

 

3.2 SpringMVC组件解析

1:前端控制器:DispatcherServlet

用户请求到达前端控制器,它就相当于 MVC 模式中的 C,DispatcherServlet 是整个流程控制的中心,由

它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。

2:处理器映射器:HandlerMapping

 HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的

映射方式,例如:配置文件方式,实现接口方式,注解方式等。

 

3:处理器适配器:HandlerAdapter

通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理

器进行执行。

4:处理器:Handler

它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由

Handler 对具体的用户请求进行处理。

5:视图解析器:View Resolver

  View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。

6:视图:View

SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView等。最常用的视图就是 jsp。
一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面

 

 

.

posted @ 2021-01-06 18:33  可爱的红领巾  阅读(136)  评论(0编辑  收藏  举报