SpringMVC内容

news/2024/12/21 20:49:09/文章来源:https://www.cnblogs.com/gzyhrc/p/18442310

SpringMVC简介

SpringMVC(Model  View  Controller) 是以Servlet API为基础的 Web 框架并可以部署到 Servlet容器(比如:Tomcat),是控制层框架,主要负责与前端交互,接收前端的参数,在服务层进行交互,并把结果返回会前端页面。

SpringMVC工作原理

当发送请求的时候,DispatcherServlet(中调度器)接受请求发送给 HandlerMapping(映射处理器)如果 HandlerMapping(映射处理器)发现存在对应的 Handler方法时,会返回 Handler(包含HandlerExecutionChain(包含多个拦截器))给总调度器,如果没有会抛出错误总调度器接收到 Handler后,会发送 Handler给 HandlerAdaptor(适配处理器),HandlerAdaptor会找到对应的 ControllerController会真正处理相应业务,返回 ModelAndView给 HandlerAdaptor适配处理器,HandlerAdaptor(适配处理器)会将 ModelAndView返回给 DispatcherServlet(总调度器),DispatcherServlet(总调度器)会将 ModelAndView给到 ViewResolver(视图解析器),ViewResolver(视图解析器)会将View返回给 DispatcherServlet(总调度器) Model域数据放入 Request域中交给视图渲染视图渲染后返回 JSP页面给 DispatcherServlet(总调度器),DispatcherServlet(总调度器)会返回页面给用户。

实现过程

如何使用idea,编写 SpringMVC项目(以idea 2020.1.4版本为例)

1. 创建项目:

 

如何判断工程创建是否成功?

当出现蓝点时,说明项目创建成功。

 2. 引入jar包

<!--spring 核心包--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><properties><!--版本号配置--><spring.version>5.3.25</spring.version></properties> <groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><!--spring webmvc jar--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!-- servlet-api包 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency><!--jstl包--><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>
<!--    lombok依赖包--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.32</version></dependency>

 

3. 配置前端控制器

在 web.xml 文件中配置(是 web 项目的入口文件,tomcat启动时,首先会加载这个配置)

但是:一般新建的项目 web.xml 是1.0版本需要更新。

更新的 web.xml文件头:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><display-name>Archetype Created Web Application</display-name></web-app>

 4. web.xml详细配置

<!--配置前端调度器 开始--><servlet><!--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:spring-mvc.xml,classpath:config/spring-mvc1.xml</param-value>--><param-value>classpath:spring-mvc.xml</param-value></init-param></servlet><servlet-mapping><!--servlet名字--><servlet-name>springmvc</servlet-name><!--/ 过滤所有请求--><url-pattern>/</url-pattern></servlet-mapping><!--配置前端调度器 结束-->

注意 :这段代码是指明 spring的bean配置文件

   <!--<param-value>classpath:spring-mvc.xml,classpath:config/spring-mvc1.xml</param-value>--><param-value>classpath:spring-mvc.xml</param-value>

所以需要添加 spring-mvc配置文件,文件的路径:

 文件的内容:

<?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"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"><!--开启包扫描  扫描包的位置--><context:component-scan base-package="com.hrc"></context:component-scan><!--开启springmvc注解启动  后面有@RequestBody @ResponseBody等 都靠该注解进行支持--><mvc:annotation-driven></mvc:annotation-driven><!--配置视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--视图解析器,文件的前端--><property name="prefix" value="/WEB-INF/jsp/"></property><!--视图解析器,文件的后缀--><property name="suffix" value=".jsp"></property></bean>
</beans>

5. 编写一个简单的jsp文件

6. 编写Controller层

7. 配置tomcat启动

 

 8. 结果

参数传递

再写一份企业实战的写法,模拟部门的添加和列表

使用对象传递参数

使用基本属性传递参数

Controller的返回值

1.  返回 ModelAndView类型

2. 返回 String 类型

常用注解

@RequestMapping 请求径路映射

@RequestParam用法

用法:传递的参数名称与形参名称不一致导致无法映射的问题。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统安装Pycharm专业版【附破解方法】

​写在前面 本教程适用于 Pycharm 2022.2.3 以下所有版本 一、版本信息 虚拟机产品:VMware Workstation 17 Pro 虚拟机版本:17.0.0 build-20800274 ISO映像文件:ubuntukylin-22.04-pro-amd64.iso Pycharm版本:PyCharm 2022.3.3 (Professional Edition) 资源链接:https:/…

谷歌收录批量查询,谷歌收录批量查询的方法步骤

谷歌收录批量查询是网站管理员和SEO专家常用的一种方法,用于同时查询多个页面或网站在谷歌搜索引擎中的收录情况。以下是几种常见的谷歌收录批量查询方法及其步骤: 一、使用Google Search Console(谷歌搜索控制台) 虽然Google Search Console主要面向单个网站的监控和管理,…

怎么查看网站是否被谷歌收录,查看网站是否被谷歌收录的快速检测方法

查看网站是否被谷歌收录,有多种快速检测方法可供选择。以下是一些常用的方法: 一、使用“site:”指令 打开谷歌搜索引擎:在浏览器中打开Google.com,确保使用的是谷歌的官方搜索引擎。 输入查询指令:在搜索框中输入“site:”加上你的网站域名(注意使用英文状态下的冒号,并…

10 月 4 日 S 组 风 雨 大 作

智障行为+2T1 T2 T3 T40 0 0 0好吧至少下一次不会考更低了 T1 你有个 n 个点 m 条边的无向图,每条边都有红蓝两种颜色中的一种,保证红色的边形成了这个图的一个生成树。 你希望给这些边赋上边权,保证边权是 1 ∼ m 的排列,使得红色的边是最小生成树。 希望这些边权形成的序…

南沙C++信奥赛陈老师解一本通题: 1828:【02NOIP提高组】均分纸牌

​【题目描述】有n堆纸牌,编号分别为 1,2,…,n。每堆上有若干张,但纸牌总数必为nn的倍数。可以在任一堆上取若干张纸牌,然后移动。 移牌规则为:在编号为1的堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 n 的堆上取的纸牌,只能移到编号为n−1的堆上;其他堆上取的纸…

反射容斥

好久没写了呃呃呃……反射容斥恋のうた あとどれくらいの距離を 月へ歩いたら あとどれくらいの 寒い夜を重ねたら あとどれくらいの さよならを流したら まぶたの奥の泉が枯れ果てるとか 千年後もきっと続くだろう そう思ってた空洞を 満たしてあふれてしまうほどの この気持ち…

快乐数学5虚数

5 虚数 虚数总是让我感到困惑:这是一个数学抽象概念,方程是可处理它。 大学才会用到它。我们将用我们最喜欢的工具来攻克这个课题:关注关系,而非机械公式。 将复数视为数字系统的升级,就像零、小数和负数一样。 使用直观的图表,而不仅仅是文字,来理解概念。5.1 真正理解负…

Cisco Secure Firewall 3100 Series FTD Software 7.6.0 ASA Software 9.22.1

Cisco Secure Firewall 3100 Series FTD Software 7.6.0 & ASA Software 9.22.1Cisco Secure Firewall 3100 Series FTD Software 7.6.0 & ASA Software 9.22.1 Firepower Threat Defense (FTD) Software - 思科防火墙系统软件 请访问原文链接:https://sysin.org/blog…

冲刺 CSP 联训模拟 2

T1 挤压 概率期望,二进制拆位 看到异或想到拆位算贡献 \[\begin{aligned} ans&=\sum_xx^2P(x)\\ &=\sum_x(b_1+b_2+...+b_{30})^2P(x)\ \ \ (b_i表示\ x\ 二进制下\ i\ 位的值)\\ &=\sum_x(b_1b_1+b_1b_2+. . .b_{30}b_{29}+b_{30}b_{30})P(x)\\ &=\sum_i^{30…

智慧园区管理原型

智慧园区管理系统的构建是一个复杂而系统的工程,它融合了信息化、AI、物联网等多种先进技术,旨在提升园区的管理效率、服务质量以及企业运营效率。 一、明确系统目标和需求 需求收集与分析:首先,需要对园区的实际需求进行全面分析,包括园区类型(如产业园区、办公园区、住…

读数据湖仓07描述性数据

读数据湖仓07描述性数据1. 描述性数据 1.1. 基础数据中包含不同类型的数据,而不同类型数据的描述性数据也存在显著的差异 1.2. 尽管这些描述性数据存在根本性的差异,但通过描述性数据,我们可以全面了解基础数据中的数据 1.3. 通过分析基础设施中提供的描述性数据可以获得更详…

探索JVM的堆内存分布:官方图片展示

序章 截取Java官方的 堆内存分布相关图片 到本文。Java Platform, Standard Edition HotSpot Virtual Machine Garbage Collection Tuning Guide Java 21 https://docs.oracle.com/en/java/javase/21/gctuning/preface.html下载为 pdf,搜索 Figure,截取其中的 堆内存分布相关…