1、 SpringMVC 概述
1) Spring 为展现层提供的基于 MVC 设计理念的优秀的 Web 框架,是目前最主流的MVC 框架之一 。MVC,M:model,模型层,指的是项目中的实体JavaBean,装载并传输数据;V:视图层,代表JSP;C:控制层,指的是项目中的Servlet,控制请求和处理。
2)Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架。
3)Spring MVC 通过一套 MVC 注解,让 POJO(Plain Old Java Object) 成为处理请求的控制器,而无须实现任何接口。
4)支持 REST 风格的 URL 请求。   Restful
5)采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。

2、SpringMVC是什么
1)一种轻量级的、基于MVC的Web层应用框架。偏前端而不是基于业务逻辑层。Spring框架的一个后续产品。
2)Spring框架结构图(新版本):

3、SpringMVC能干什么
1) 天生与Spring框架集成,如:(IOC,AOP)
2) 支持Restful风格
3) 进行更简洁的Web层开发
4) 支持灵活的URL到页面控制器的映射
5) 非常容易与其他视图技术集成,如:Velocity、FreeMarker等等
6) 因为模型数据不存放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用)
7) 非常灵活的数据验证、格式化和数据绑定机制、能使用任何对象进行数据绑定,不必实现特定框架的API
8) 更加简单、强大的异常处理
9) 对静态资源的支持
10) 支持灵活的本地化、主题等解析

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

5、HelloWorld

  1. springMVC的搭建过程:
  2. 1、导入jar
  3. 2、在web.xml中配置springMVC的核心(前端)控制器DispatcherServlet
  4. 作用:加载springMVC的配置文件,在下方的配置方式下,DispatcherServlet自动加载配置文件,此时的配置文件有默认的位置和名称
  5. 默认位置:WEB-INF下,默认名称<servlet-name>-servlet.xml,例如以下配置方式的文件名:springMVC-servlet.xml
  6. 当加载了配置文件,springMVC就会根据扫描组件找到控制层
  7. <servlet>
  8. <servlet-name>springMVC</servlet-name>
  9. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>springMVC</servlet-name>
  13. <url-pattern>/</url-pattern>
  14. </servlet-mapping>
  15. 3、创建一个POJO,在此类上加上@Controller注解,springMVC就会将此类作为控制层加载,让其处理请求响应
  16. 4、在控制层中,需要在方法上设置@RequestMapping(value="xxx")
  17. springMVC就是通过此注解将请求路径与控制层中的方法进行匹配,此时请求路径为localhost:8080/projectName/xxx
  18. 5、处理请求的方法会返回一个字符串,即视图名称,最终会通过配置文件中配置的视图解析器实现页面跳转
  19. 方式:prefix + 视图名称 + suffix ,此为最终跳转的页面路径

1)新建web工程,加入jar包

  1. spring-aop-4.0.0.RELEASE.jar
  2. spring-beans-4.0.0.RELEASE.jar
  3. spring-context-4.0.0.RELEASE.jar
  4. spring-core-4.0.0.RELEASE.jar
  5. spring-expression-4.0.0.RELEASE.jar
  6. commons-logging-1.1.3.jar
  7. spring-web-4.0.0.RELEASE.jar
  8. spring-webmvc-4.0.0.RELEASE.jar

2) 在 web.xml 中配置SpringMVC核心控制器DispatcherServlet

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  3. <display-name>SpringMVC</display-name>
  4.  
  5. <servlet>
  6. <servlet-name>SpringMVC</servlet-name>
  7. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  8. </servlet>
  9. <servlet-mapping>
  10. <servlet-name>SpringMVC</servlet-name>
  11. <url-pattern>/</url-pattern>
  12. </servlet-mapping>
  13.  
  14. </web-app>

3) 加入 Spring MVC 的配置文件:SpringMVC-servlet.xml
  ① 增加名称空间

  ② 增加配置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
  7. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
  9.  
  10. <!-- 扫描组件,将加上@Controller注解的类作为springMVC的控制层 -->
  11. <context:component-scan base-package="com.spring.test"></context:component-scan>
  12.  
  13. <!--
  14. 配置视图解析器:如何将控制器返回的结果字符串,转换为一个物理的视图文件-
  15. 作用:将prefix + 视图名称 + suffix 确定最终要跳转的页面
  16. /WEB-INF/view/success.jsp
  17. -->
  18. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  19. <property name="prefix" value="/WEB-INF/view/"></property>
  20. <property name="suffix" value=".jsp"></property>
  21. </bean>
  22. </beans>

4) 需要创建一个入口页面,index.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="ISO-8859-1">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <a href="hello">Hello</a>
  11. </body>
  12. </html>

5) 编写处理请求的处理器,并标识为处理器

  1. package com.spring.test;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5.  
  6. @Controller
  7. public class Test {
  8. /**
  9. * 映射请求的名称:用于客户端请求;类似Struts2中action映射配置的action名称
  10. * 1. 使用 @RequestMapping 注解来映射请求的 URL
  11. * 2. 返回值会通过视图解析器解析为实际的物理视图, 对于 InternalResourceViewResolver 视图解析器,
  12. * 会做如下的解析:
  13. * 通过 prefix + returnVal + suffix 这样的方式得到实际的物理视图, 然后做转发操作.
  14. * /WEB-INF/views/hello.jsp
  15. */
  16.  
  17. @RequestMapping(value="hello")
  18. public String hello() {
  19.  
  20. System.out.println("Hello");
  21. return "hello";
  22.  
  23. }
  24. }

6) 编写视图    /WEB-INF/views/hello.jsp

  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  2. pageEncoding="ISO-8859-1"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="ISO-8859-1">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10.  
  11. <h1>SUCCESS</h1>
  12.  
  13. </body>
  14. </html>

7) 部署测试:

http://localhost:8080/SpringMVC/index.jsp

流程分析

基本步骤:
① 客户端请求提交到DispatcherServlet
② 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
③ DispatcherServlet将请求提交到Controller(也称为Handler)
④ Controller调用业务逻辑处理后,返回ModelAndView
⑤ DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
⑥ 视图负责将结果显示到客户端

SpringMVC 概述的更多相关文章

  1. SpringMVC系列(一)SpringMVC概述和搭建SpringMVC的第一个helloWord入门程序

    一.SpringMVC 概述 • Spring为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一 • Spring3.0 后全面超越 Struts2,成为最优秀的 MVC ...

  2. SpringMVC听课笔记(一:SpringMVC概述)

    地址 :https://www.bilibili.com/video/av14907450 版本:4.x 概述: 概要: 一:SpringMVC概述 二:SpringMVC的 HelloWorld 三 ...

  3. SpringMVC——概述

    Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一 Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架 Spring MV ...

  4. SpringMVC(一) SpringMVC概述

    SpringMVC为展现层提供的基于MVC设计理念的优秀的WEB框架,是目前主流的MVC框架之一.Spring 3.0之后,超越Struts2成为最优秀的MVC框架. SpringMVC通过一套MVC ...

  5. SpringMVC概述

    1. SpringMVC是什么 SpringMVC 是 Spring 框架内置的 MVC 的实现.SpringMVC 就是一个 Spring 内置的 MVC 子框架 Spring 子框架:意味着 Sp ...

  6. springmvc概述及框架原理

    一. 前言 MVC不是框架而是一种设计模式. MVC的全名Model View Controller,即模型-视图-控制器的缩写,这是一种设计模式,而非架构.MVC它强制的使用应用程序的输入.处理.和 ...

  7. SpringMVC—概述

    mvc容器的实例化: http://blog.csdn.net/lin_shi_cheng/article/details/50686876 Spring的启动过程: 1: 对于一个web应用,其部署 ...

  8. 1.SpringMVC 概述

    SpringMVC 简介 SpringMVC 也叫 Spring web mvc ,属于表现层的框架.SpringMVC 是 Spring框架的一部分,是在Spring3.0后发布的 第一个Sprin ...

  9. 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_05.入门程序之入门代码编写

    先把默认的index.jsp删掉.默认的index.jsp没有jsp的声明 ok webapp文件夹下new一个 起名叫做index.新建的页面有jsp的头 创建控制器类 java下新建一个class ...

随机推荐

  1. js call与bind和apply的区别

    介绍 在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢. 在说区别之前还是先总结一下三者的相似之处: 1.都是用来改变函数的this对象的指向的. 2.第一个参数都是thi ...

  2. STM32 DMA(UART)

    转载自https://blog.csdn.net/as480133937/article/details/104827639/

  3. Prometheus监控实战应用

    目录 1.Prometheus的主要特征及概述 2.普罗米修斯原理架构图 3.下载安装启动Prometheus 4.web客户端操作 5.默认图像 6.目录解释 7.配置文件 8.监控指标 8.1.监 ...

  4. PPP PPOE详解

    PPP协议是在串行线IP协议SLIP(Serial Line Internet Protocol)的基础上发展起来的.由于SLIP协议具有只支持异步传输方式.无协商过程(尤其不能协商如双方IP地址等网 ...

  5. install dns server on ubuntu

    参考 CSDN/Ubuntu环境下安装和配置DNS服务器 在 Ubuntu 上安裝 DNS server Install BIND 9 on Ubuntu and Configure It for U ...

  6. 「ARC138E」Decreasing Subsequence(n logn 做法)

    考虑一张 \(n\) 个点的图(\(V=\{0,1,\cdots,n\}\)):点 \(i\) 连向 \(a_i-1\),即 \(\text{index}\) 连向 \(\text{value}\). ...

  7. 《Unix 网络编程》13:守护进程和 inetd 超级服务器

    守护进程和 inetd 超级服务器 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...

  8. 高度灵活可定制的PC布局:头部按钮、左边栏、右边栏、状态栏

    什么是自适应布局 CabloyJS提供了一套布局管理器,实现自适应布局 关于自适应布局的概念,强烈建议先阅读以下两篇文章: 自适应布局:pc = mobile + pad 自适应布局:视图尺寸 什么是 ...

  9. flowable如何适配国产数据库达梦

    前言 flowable6.4.1流程引擎官方支持的数据库有:MySQL.hsql.Oracle.DB2 .postgres.SQL Server.H2.对于其他类型的数据库如何支持,尤其是国产数据库的 ...

  10. 倾斜摄影3D模型|手工建模|BIM模型 轻量化处理

    一.什么是大场景? 顾名思义,大场景就是能够从一个鸟瞰的角度看到一个大型场景的全貌,比如一个园区.一座城市.一个国家甚至是整个地球.但过去都以图片记录下大场景,如今我们可以通过建造3D模型来还原大场景 ...