JavaWeb ( 十 ) SpringMVC

news2025/1/9 14:42:02

4.Spring MVC

Spring MVC是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。
三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台servlet

4.1.Spring MVC优点:

① 基于原生的Servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理

② 表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案

③ 代码清新简洁,大幅度提升开发效率

④ 内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可

⑤ 性能卓著,尤其适合现代大型、超大型互联网项目要求

4.2.配置

4.2.1.web.xml

(1)默认配置方式:此配置作用下,SpringMVC的配置文件默认位于WEB-INF下,默认名称为< servlet-name >-servlet.xml;

  <servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

(2)扩展配置方式:可通过init-param标签设置SpringMVC配置文件的位置和名称,通过load-on-startup标签设置SpringMVC前端控制器DispatcherServlet的初始化时间;(推荐)

  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <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>springMVC</servlet-name>
    <url-pattern>*.mvc</url-pattern>
  </servlet-mapping>

4.2.2.SpringMVC配置文件

(1) test-servlet.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:p="http://www.springframework.org/schema/p" 
	xmlns:context="http://www.springframework.org/schema/context"
	
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-4.1.xsd ">

   	<context:annotation-config />   
	<!-- 把标记了@Controller注解的类转换为bean -->
	<context:component-scan base-package="com.yuzo" />

	<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" ></bean>

	<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
	<!-- 跳转页面的设置 -->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.UrlBasedViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
		<property name="prefix" value="/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>
</beans>

(2)springMVC.xml

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

xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-4.1.xsd 
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">

   	<context:annotation-config />   
	<!-- 把标记了@Controller注解的类转换为bean -->
	<context:component-scan base-package="com.yuzo" />

	<mvc:annotation-driven></mvc:annotation-driven>

	<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver"
		p:prefix="/WEB-INF/jsp/"   
		p:suffix=".jsp" />

</beans>

4.2.3.视图解析器解析的是前缀 + 视图名 + 后缀

4.3.Spring MVC的工作原理

在这里插入图片描述

  1. 用户通过客户端向服务器发送请求,请求被前端控制器DispatcherServlet所拦截;

  2. DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器

    ​ 处理器映射器根据请求URL找到具体的处理器,

    ​ 生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;

  3. DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器)

  4. HandlerAdapter会调用Handler(处理器),这里的处理器指的就是程序中编写的Controller类,也被称为后端控制器;

  5. Controller类 调用Model模型层中 Service 业务处理类的业务操作方法

  6. Model模型层 与数据库进行持久化操作

  7. Model模型层返回封装过的数据

  8. Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名;

  9. HandlerAdapter将ModelAndView对象返回给DispatcherServlet;

  10. DispatcherServlet会将ModelAndView对象选择一个合适的VIewResolver(视图解析器)

  11. ViewResolver解析后,会向DispatcherServlet中返回具体的View(视图);

  12. DispatcherServlet对View进行渲染(即将模型数据填充至视图中);

  13. 返回 静态页面

  14. 视图渲染结果会返回给返回给客户端浏览器显示。

简单模型

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/567831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10 款最常用的Sketch在线插件!

Sketch 是一款高效、小巧的界面设计工具&#xff0c;在设计领域广受设计团队喜爱&#xff0c;帮助设计师创造了许多令人惊叹的作品。在使用 Sketch 时&#xff0c;辅助使用一些插件可以更高效地完成设计任务。Windows 也能用的「协作版 Sketch」即时设计&#xff0c;可作为网页…

三、Go的常用命令以及Go的执行原理

Go的执行原理以及Go的命令 一、Go的源码文件 Go 的源码文件分类&#xff1a; 如上图&#xff0c;分为三类&#xff1a; 1、命令源码文件&#xff1a; 声明自己属于 main 代码包、包含无参数声明和结果声明的 main 函数。 命令源码文件被安装以后&#xff0c;GOPATH 如果…

1032 Sharing(35行代码+超详细注释+测试点4分析)

分数 25 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the same sublist if they share the same suffix. For …

弘博创新2023读书会|“读”赢成长,“书”立未来

读万卷书&#xff0c;行万里路&#xff0c;以书会友&#xff0c;提升自我。 为了让大家在繁忙的工作中抽时间静下心来读书&#xff0c;与志同道合的人交流和分享自己的想法&#xff0c;弘博创新于5月21日举办了线下读书会活动&#xff0c;学友们都积极参加本次读书会。 参加读书…

JUC-JMM模型、CAS、AQS

JMM&#xff08;Java内存模型&#xff09;&#xff0c;主要描述了一组规则&#xff0c;主要定义了程序执行过程中变量的访问方式来保证单线程、多线程下的正常执行。JVM运行的实体是线程&#xff0c;每个线程运行时&#xff0c;都会创建一个工作内存【栈空间&#xff08;栈帧&a…

接口测试的测试要点

接口测试的测试要点&#xff0c;你知道都有哪些吗&#xff1f; 接口测试是软件测试中的重要组成部分&#xff0c;它的目的是评估接口的质量和可靠性&#xff0c;以保证系统的正常运行。在进行接口测试时&#xff0c;必须要考虑到以下几个方面&#xff1a; 测试用例的编写 测试…

安科瑞电力监控系统在虹科创新改造项目的应用

摘要&#xff1a;随着电力系统正向着高可靠性、高自动化、高信息化水平方向迅猛发展&#xff0c;对电网的监控已成为国内外高度重视的关键问题&#xff0c;特别是监控系统在电力系统中起着控制和监测等重要作用。本文针对开闭所供配电系统特点及供配电系统高可靠性的要求&#…

基于springboot+vue+elementui的健身房会员管理系统的

为了帮助用户更好的了解和理解程序的开发流程与相关内容&#xff0c;本文将通过六个章节进行内容阐述。 第一章&#xff1a;描述了程序的开发背景&#xff0c;程序运用于现实生活的目的与意义&#xff0c;以及程序文档的结构安排信息&#xff1b; 第二章&#xff1a;描述了程序…

可以在商场内部使用的导航地图?商场导览图怎么画?

可以在商场内部使用的导航地图&#xff1f;随着商业的发展&#xff0c;商场和商业综合体的规模越来越大&#xff0c;在注重消费者购物体验的时代&#xff0c;消费者想方便地找到心仪的品牌或美食&#xff0c;商场内具有“导示”作用的标志很重要。导示系统具有引导、说明、指示…

1. Ansible介绍,什么是Ansible?Ansible能用来做什么?

什么是Ansible&#xff1f;Ansible能用来做什么&#xff1f; 如果您是系统工程师或IT管理员,或者只是在IT部门工作的任何人,您可能会在环境中执行大量重复性任务, 无论是每天调整大小和创建新主机或虚拟机&#xff64; 在其上应用配置&#xff64; 修补数百台服务器&#xff6…

Nginx基础概念

一.nginx简介 1.什么是nginx&#xff1f; Nginx 是高性能的 HTTP 和反向代理的web服务器&#xff0c;处理高并发能力是十分强大的&#xff0c;能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。 其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上n…

「实在RPA·烟草数字员工」助力烟草行业数字化转型加速度

烟草行业作为烟草产业链上重要一环&#xff0c;外部连接烟草工业企业、零售客户、消费者&#xff0c;内部包含营销、专卖、烟叶、物流等诸多业务&#xff0c;信息系统众多&#xff0c;企业数据量庞大。因此&#xff0c;清楚地了解自身存在的痛点&#xff0c;找到适合自身业务需…

Vmware虚拟机多开技巧

多年前&#xff0c;由于工作关系&#xff0c;在台式机上使用VMware虚拟多个操作系统进行微软AD实验。那时候电脑内存大概是4--8Gb&#xff0c;开3个也毫无压力。后来我的笔记本都16Gb内存了运行3个虚拟机竟然因为内存不足报错。 然后经过分析和查找&#xff0c;找到原因了。这里…

VR全景虚拟史记馆互动体验生动还原了历史画面

历史展览馆线上VR全景展示是一种新型的历史文化展示方式&#xff0c;它通过VR虚拟现实技术将历史事件、文化背景等内容呈现给观众。相比传统的实体历史展览馆&#xff0c;线上VR全景展示具有以下几个方面的突破&#xff1a; 实现更大范围、更多样化的内容展示 由于传统的历史展…

拉货搬家货运APP开发分析和功能列表

作为国家经济发展的重要基础设施&#xff0c;物流行业正在面对转型升级的风口。巨大的市场体量&#xff0c;也迎来了激烈的市场竞争。为了从同质化的服务中脱颖而出&#xff0c;开拓更大的市场&#xff0c;并且解决线下司机的载货痛点&#xff0c;货运APP的开发必不可少。 开发…

GO语言并发编程入门:Goroutine、Channel、Context、并发安全、GMP调度模型

GO语言并发编程入门&#xff1a;Goroutine、Channel、Context、并发安全、GMP调度模型 1.GO并发介绍 并发&#xff1a;多线程程序在一个核的cpu上运行。 并行&#xff1a;多线程程序在多个核的cpu上运行。 由上可知并发不是并行&#xff0c;并行是直接利用多核实现多线程的运…

C语言_数据类型[详细分析]

接上一篇&#xff1a;C语言_关键字_标识符简介 本次来分享C语言的数据类型&#xff0c;是博主的一些学习笔记的和心得的总结&#xff0c;话不多说&#xff0c;开始上菜&#xff1a; 此博主在CSDN发布的文章目录&#xff1a;我的CSDN目录&#xff0c;作为博主在CSDN上发布的文章…

如何零基础快速搭建一个后台管理系统

真在的大师&#xff0c;都永远怀着一颗学徒的心&#xff01;&#xff01;&#xff01; 大家好&#xff0c;我是为你们操碎了心的小编&#xff0c;今天我又带来了一款轻量级的saas后台管理框架&#xff0c;让你零基础也可快速搭建一个功能强大的后台管理系统。 niucloud-admin采…

什么是AOP,如何实现?(有落地代码)

AOP 的核心思想是将横切关注点抽象为一个独立的模块&#xff08;称之为“切面”&#xff09;&#xff0c;然后在需要应用它的地方进行调用。比如&#xff0c;在需要记录日志的方法中&#xff0c;我们可以定义一个切面来负责日志记录&#xff0c;这样所有调用该方法的地方都会被…

hugging face开源的transformers模型可快速搭建图片分类任务

2017年,谷歌团队在论文「Attention Is All You Need」提出了创新模型,其应用于NLP领域架构Transformer模型。从模型发布至今,transformer模型风靡微软、谷歌、Meta等大型科技公司。且目前有模型大一统的趋势,现在transformer 模型不仅风靡整个NLP领域,且随着VIT SWIN等变体…