Spring学习笔记_6_Sping MVC 简介

6.1MVC模式概述

Model Ⅰ 和Model Ⅱ

model Ⅰ:jsp
改进的model Ⅰ:jsp文件负责程序的流程控制逻辑和数据显示逻辑任务,JavaBean负责处理业务逻辑任务
model Ⅱ:jsp负责数据显示逻辑任务,servlet负责程序流程控制逻辑任务,JavaBean负责处理业务逻辑任务。
在这里插入图片描述

MVC模式及其优势

MVC思想将一个应用分成三个基本部分:Model(模型),View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性和可维护性。
在这里插入图片描述

6.2Spring MVC概述

Spring MVC是Spring框架中用于Web开发的一个模块,是Spring提供的一个基于MVC设计模式的轻量级Web框架。Spring框架提供了构建Web应用程序的全功能MVC模块。Spring MVC框架本质上相当于servlet,提供了一个DispatcherServlet作为前端控制器来分派请求,同时提供灵活的配置处理程序映射、视图解析、语言环境和主题解析,并支持文件上传暂时先不管这个
在MVC设计模式中,Spring MVC作为控制器(Controller)来建立模型与视图的数据交互, 是一个典型的MVC框架
在这里插入图片描述

  • Spring MVC拥有强大的灵活性、非侵入性(不需要用户代码引入框架代码,直接用就可以了)、可配置性(文件可以通过配置文件来实现)。
  • Spring MVC提供了一个前端控制器DispatcherServlet,开发者无需额外开发控制器对象
  • Spring MVC分工明确,包括控制器、验证器、命令对象、模型对象、处理程序映射视图解析器等等,每一个功能实现由一个专门的对象负责
  • Spring MVC可以自动绑定用户输入,并正确转换数据类型。
  • Spring MVC使用一个名称/值的Map对象实现更加灵活的模型数据类型。
  • Spring MVC内置了常见的校验器,可以检验用户输入,如果校验不同,则重定向回输入表单。输入校验是可选的,并且支持编程方式即声明方式。
  • Spring MVC支持国际化,支持根据用户区域显式多国语言,并且国际化的配置非常简单
  • Spring MVC支持多种视图技术,最常见的有JSP技术以及其他技术,包括Velocity和FreeMarker。
  • Spring MVC提供了一个简单而强大的JSP标签库,支持数据绑定功能,使得编写JSP页面更加容易。
  • 特点很重要的,最好记一下,后面都会讲到。

6.3Spring MVC环境搭建

新建一个web项目
在这里插入图片描述
在这里插入图片描述
添加需要的jar包(16个)
在这里插入图片描述
在web.xml文件中,配置Spring MVC的前端控制器DispatcherServlet
Spring MVC是基于Servlet的框架,DispatcherServlet是整个Spring MVC框架的核心,它负责接收请求并将其分派给相应的处理器处理,关键配置代码如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>springmvc-1</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <!--配置spring MVC的前端控制器DispatcherServlet  -->
  <servlet>
  		<servlet-name>dispatcherServlet</servlet-name>
  		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  		<!--初始化参数,配置Spring MVC配置文件的位置以及名称  -->
  		<init-param>
  			<param-name>contextConfigLocation</param-name>
  			<param-value>classpath:springmvc.xml</param-value>
  		</init-param>
  		<!--表示容器启动时,立即加载 DispatcherServlet -->
  		<load-on-startup>1</load-on-startup>
  </servlet>
  <!--Spring MVC的前端控制器拦截所有的请求  -->
  <servlet-mapping>
  	<servlet-name>dispatcherServlet</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

新建springmvc.xml文件在src目录下
在springmvc.xml文件中,首先要引入beans、aop、context和mvc命名空间;然后主要完成配置处理器映射和配置视图解析器。
① 配置处理器映射器
Spring提供了多种处理器映射(HanderMapping)支持,例如:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
org.springframework.web.servlet.SimpleUrlHandlerMapping
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
可以根据需求选择处理器映射,这里我们选择BeanNameUrlHandlerMapping,若没有明确声明任何处理器映射,Spring会默认使用BeanNameUrlHandlerMapping,即在Spring容器中查找与请求URL同名的Bean,通过声明HelloController业务控制器类,并将其映射到/hello请求。
② 配置视图解析器
处理请求的最后一件事就是解析输出,该任务由视图(这里使用JSP)实现,那么需要确定:指定的请求需要使用哪个视图进行请求结果的解析输出?DispatcherServlet会查找到一个视图解析器,将控制器返回的逻辑视图名称转换解析成结果的实际视图。Spring提供了多种视图解析器,例如:
org.springframework.web.servlet.view.InternalResourceViewResolver
org.springframework.web.servlet.view.ContentNegotiatingViewResolver
在springmvc.xml配置文件中,并没有配置处理器映射和处理器适配器,当用户没有配置这两项时,Spring会使用默认的处理器映射和处理器适配器处理请求。
在这里插入图片描述
创建处理请求的控制器类
在这里插入图片描述
上面程序的HelloController是一个实现Controller接口的控制器,他可以处理一个单一的请求动作,handleRequest是Controller接口必须要实现的方法,该方法必须返回一个包含视图名或视图名和模型的ModelAndView对象(后面会详解),该对象既包含视图信息,也包含模型数据信息。
创建视图页面
在这里插入图片描述
测试运行
在这里插入图片描述
运行tomcat服务器
打开浏览器
在这里插入图片描述

6.4Spring MVC请求流程

当用户发送URL请求http://localhost:8080/springmvc-1/hello时,根据web.xml中对于DispatcherServlet的配置,该请求被DispatcherServlet截获,并根据HandlerMapping找到处理相应请求的Controller控制器(HelloController);Controller处理完成后,返回ModelAndView对象;该对象告诉DispatcherServlet需要通过哪个视图来进行数据模型的展示,DispatcherServlet根据视图解析器把Controller返回的逻辑视图名渲染成真正的视图并输出,呈现给用户。
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值