SpringMVC笔记

 一、SpringMVC 简介

1.1 什么是 MVC 

MVC 是一种软件架构的思想,将软件按照模型、视图、控制器来划分

1.M:Model

模型层,指工程中的 JavaBean ,作用是处理数据

JavaBean 分为两类

  • 实体类Bean:专门存储业务数据的,如 Student、User等
  • 业务处理Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问

2.V:View

视图层,指工程中的html 或 jsp 等页面,作用是与用户进行交互,展示数据

3.C:Controller

控制层,指工程中的 servlet ,作用是接收请求和响应浏览器

4.MVC 的工作流程

用户通过视图层发送请求到服务器,

在服务器中请求被 Controller 接收 ,

Controller 调用相应的 Model 层处理请求,

处理完毕将结果返回 Controller,

Controller 再根据请求处理的结果找到相应的 View 视图,渲染数据后最终响应给浏览器

1.2 什么是 SpringMVC

SpringMVC 是 Spring 的一个后续产品,是 Spring 的一个子项目。

SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust、WebWork、Strust2 等诸多产品的历代更迭之后,目前业界普遍选择了 SpringMVC 作为 Java EE 项目表述层开发的首选方案。

注:三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台 servelt

1.3 SpringMVC 的特点

二、HelloWorld

2.1 开发环境

IDE:idea

构建工具:maven

服务器:tomcat

Spring版本:6.1.4

2.2 创建 maven 工程

1. 添加 web 模块

2.打包方式:war

3.引入依赖

tomcat 自带 ServletAPI和JSPAPI 

视图技术用到的是:Thymeleaf

<dependencies>
        <!-- SpringMVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>6.1.4</version>
        </dependency>

        <!-- 日志 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.4.7</version>
        </dependency>

        <!-- ServletAPI -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- Spring5 和 Thymeleaf整合包-->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.0.10.RELEASE</version>
        </dependency>
    </dependencies>

2.3 配置 web.xml

框架就是:配置文件+jar包

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

注册 SpringMVC 的前端控制器 DispatcherServlet

1. 默认配置方式(位置、名称默认)

此配置作用下,SpringMVC的配置文件默认位于 WEB-INF 下,默认名称为<servlet-name>-servlet.xml,例如,如下配置所对应SpringMVC 的配置文件位于 WEB-INF 下,文件名为 SpringMVC-servlet.xml

<!--配置SpringMVC的前端控制器,对浏览器发送的请求进行统一处理-->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <!--
            设置sprigMVC的核心控制器所能处理的请求请求路径
            /所匹配的的请求可以是/login或.html或.js或.css方式的请求路径
            但是/不能匹配.jsp请求路径的请求

            .jsp本质是servlet,它需要我们服务器里面特定的servlet来进行处理的

            /* 表示所有请求,包括.jsp的请求
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

 

2. 扩展配置方式(⭐用的最多)

Maven工程的所有的Spring配置文件放的位置是:resources

可通过init-param标签设置 SpringMVC 配置 文件的位置和名称,通过load-on-startup 标签设置 SpringMVC 前端控制器 DispatcherServlet 的初始化时间

web.xml

<!--配置SpringMVC的前端控制器,对浏览器发送的请求进行统一处理-->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置SpringMVC配置文件的位置和名称-->
        <!--初始化配置-->
        <init-param>
            <!--contextConfigLocation 为固定值 -->
            <param-name>contextConfigLocation</param-name>
            <!--使用classpath:表示从类路径查找配置文件,例如maven工程中的src/main/resources-->
            <param-value>classpath:springMVC.xml</param-value>
        </init-param>
        <!--
            作为框架的核心组件,在启动过程中有大量的初始化操作要做
            而这些操作放在第一次请求时才执行会严重影响访问速度
            因此需要此标签将启动控制DispatcherServlet的初始化时间提到服务器启动时
        -->
        <!--将SpringMVC的前端控制器 DispatcherServlet初始化时间提前到服务器启动时-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <!--
            设置sprigMVC的核心控制器所能处理的请求请求路径
            /所匹配的的请求可以是/login或.html或.js或.css方式的请求路径
            但是/不能匹配.jsp请求路径的请求

            .jsp本质是servlet,它需要我们服务器里面特定的servlet来进行处理的

            /* 表示所有请求,包括.jsp的请求
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

2.4 创建请求控制器

2.5 创建 SpringMVC的配置文件

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

    <!--扫描组件-->
    <context:component-scan base-package="com.atguigu.mvc.controller"></context:component-scan>
    <!--配置Thymeleaf视图解析器-->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
                <!--视图前缀-->
                <property name="prefix" value="/WEB-INF/templates/"/>

                <!--视图后缀-->
                <property name="suffix" value=".html"/>
                <property name="templateMode" value="HTML5"/>
                <property name="characterEncoding" value="UTF-8"/>
                
            </bean>
        </property>
    </bean>

</beans>

2.6 测试HelloWorld

1. 实现对首页的访问

1.1创建tomcat 服务器

 

2. 通过超链接跳转到指定页面

在主页index.html中设置超链接

2.7 总结

三、@RequestMapping 注解

3.1 @RequestMapping 注解的功能

3.2 @RequestMapping 注解的位置

3.3 @RequestMapping 注解的 value 属性

3.4 @RequestMapping 注解的method 属性

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Visual Studio Code和Visual Studio 2022下配置Clang-Format,格式化成Google C++ Style

项目开发要求好的编写代码格式规范&#xff0c;常用的是根据Google C Style Guide 网上查了很多博文&#xff0c;都不太一样有的也跑不起来&#xff0c;通过尝试之后&#xff0c;自己可算折腾好了&#xff0c;整理一下过程 背景&#xff1a; 编译器主要有三部分&#xff1a;前…

最简单的 UDP-RTP 协议解析程序

最简单的 UDP-RTP 协议解析程序 最简单的 UDP-RTP 协议解析程序原理源程序结果下载链接参考 最简单的 UDP-RTP 协议解析程序 本文介绍网络协议数据的处理程序。网络协议数据在视频播放器中的位置如下所示。 本文中的程序是一个 UDP/RTP 协议流媒体数据解析器。该程序可以分析 …

路由_传递params参数和query参数

传递params参数 传递params参数可以直接在路径后面加上参数&#xff1a; 上述就是在路径变化的时候传过去三个值分别为哈哈、嘿嘿、呵呵的参数 但是这样的话会被认为三个参数是路径的一部分&#xff0c;计算机没有办法区分哪些是路径哪些是参数&#xff0c;所以首先要在这条路…

【新】snapd申请Let‘s Encrypt免费SSL证书、自动化续签证书

简介 之前写过一篇certbot申请SSL证书的文章&#xff1a;SSL证书申请&#xff0c;写得比较详细&#xff0c;但是最近发现使用snapd会更方便。 使用机器&#xff1a;Ubuntu 20.04 简单步骤 1、首先安装必要软件 sudo apt install snapd sudo apt install certbot sudo apt …

数据结构——顺序表基本操作的实现(初始化、取值、查找、插入)

一、线性表与顺序表的概述 线性表的数据元素的逻辑特征是线性的&#xff0c;是一种典型的线性结构。这样的结构可以借鉴数组&#xff0c;如数组a[10]中&#xff0c;a[1]前一定是a[0]&#xff0c;a[1]后一定是a[2]&#xff0c;首结点&#xff08;a[0]&#xff09;前面无元素&am…

基于springboot+vue的致远汽车租赁系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

如何用AI工具提升日常工作效率,帮我们提速增效减负

昨天&#xff0c;coze海外版支持了GPT4o&#xff0c; 立马体验了下&#xff0c;速度杠杠的。 https://www.coze.com 支持chatGP和gemini模型&#xff0c;需要科学上网。国内 https://www.coze.cn支持语雀、KIMI模型。 这里回到正题&#xff0c; 如何用AI工具提升日常工作效率…

对于高速信号完整性,一块聊聊啊(10)

本文包含的主要内容有: 过孔设计概述:从前面的各种基础知识到过孔设计,逐步对信号完整性有了初步了解,在过孔设计这里稍微做一个概述,也是个人的一些理解,算是一个小结。 过孔设计的必要性。 过孔结构的基础知识 实例:过孔设计仿真HFSS实例 过孔设计概述 通过前面…

2024年电工杯A题论文首发+摘要分享+问题一代码分享

问题一论文代码链接&#xff1a;https://pan.baidu.com/s/1kDV0DgSK3E4dv8Y6x7LExA 提取码&#xff1a;sxjm --来自百度网盘超级会员V5的分享 园区微电网风光储协调优化配置 摘要&#xff1a;园区微电网由风光发电和主电网联合为负荷供电&#xff0c;为了尽量提高风光电量的…

C# Sdcb.PaddleInference 中文分词、词性标注

C# Sdcb.PaddleInference 中文分词、词性标注 目录 效果 项目 代码 下载 参考 效果 项目 代码 using Sdcb.PaddleNLP.Lac; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; namespace C__Sdcb.Pad…

文心智能体,零代码构建情感表达大师智能体

前言 随着智能体技术的突飞猛进&#xff0c;各行各业正迎来前所未有的变革与机遇。智能体&#xff0c;作为人工智能领域的重要分支&#xff0c;以其自主性、智能性和适应性&#xff0c;正逐步渗透到我们生活的每一个角落&#xff0c;成为推动社会进步和科技发展的新动力。 为了…

王炸! Coze图像流发布,我用它实现了海马体影楼级形象照(内附喂饭级教程

最近Coze图像流发布&#xff0c;我用它实现了海马体风格照片Bot: 照片魔术师。你可以自定义提供模版&#xff0c;也可以根据你的需求生成模版&#xff01; 这篇文章&#xff0c;全文不废话&#xff0c;只讲干货 二话不说&#xff0c;先来看看帅气的奥特曼怎么生成吧吧&#xff…

海外媒体发稿的关键步骤和投稿策略:如何撰写高质量的新闻稿?国外软文发布平台有哪些?

发布国外新闻稿件是一个涉及多步骤的过程&#xff0c;旨在确保您的新闻稿能够有效覆盖目标受众。以下是一些关键步骤和实用的技巧&#xff0c;帮助你实现海外媒体发稿。 1. 明确目标和受众 首先&#xff0c;明确您发布新闻稿的目标&#xff0c;是为了增加品牌曝光、推出新产品…

低利率之后如何选择?以日本养老金为例

天风证券认为&#xff0c;日本养老金资产配置行为具备的关键特征包括&#xff1a;海外资产占比上升、日元境内资产占比下降&#xff1b;权益类&#xff08;包括境内和境外&#xff09;占比上升&#xff0c;等等。 日本从1990年代开始陷入低增长、低通胀的局面&#xff0c;我们以…

十五、Python模块(入门一定看!!!)「长期更新Python简单入门到适用」

首先什么是模块&#xff1f; 小伙伴们经常看我写的教程不难发现&#xff0c;前面我们用过几次模块就是sys的那个&#xff0c;其实python不仅标准库中包含了大量的模块&#xff08;也被称之为准模块&#xff09;&#xff0c;还有大量的第三方模块&#xff0c;开发者也可以自己发…

如何成为成功的AI产品经理

本文目录 1 AI产品经理的角色和职责 2 AI产品经理的必备知识技能 3 案例分析 4 总结一下 随着ChatGPT的大热&#xff0c;也带动今年的AI火了一把&#xff0c;很多公司都开始进行相关部署&#xff0c;自然产生了很多岗位需求。 来源&#xff1a;BOSS直聘 那么&#xff0c;要想当…

Go语言的内存泄漏如何检测和避免?

文章目录 Go语言内存泄漏的检测与避免一、内存泄漏的检测1. 使用性能分析工具2. 使用内存泄漏检测工具3. 代码审查与测试 二、内存泄漏的避免1. 使用defer关键字2. 使用垃圾回收机制3. 避免循环引用4. 使用缓冲池 Go语言内存泄漏的检测与避免 在Go语言开发中&#xff0c;内存泄…

React useState修改对象

在 React 中&#xff0c;useState 是一个 Hook&#xff0c;它可以让函数组件拥有状态。当想要改变一个对象类型的状态时&#xff0c;我们需要使用展开运算符&#xff08;...&#xff09;或者 Object.assign 来确保状态是正确地更新。 以下是一个使用 useState 来更新对象的例子…

ssm139选课排课系统的设计与开发+vue

选课排课系统的设计与开发vue 摘 要 互联网的普及&#xff0c;改变了人们正常的生活学习及消费习惯&#xff0c;而且也大大的节省了人们的时间&#xff0c;由于各种管理系统都再不断的增加&#xff0c;更方便了用户&#xff0c;也改良了很多的用户习惯。对于选课排课系统查询…

公司废弃的2014年群晖 DS215J 被我打包回家了,试玩一下

文章目录 简介安装查看存储、cpu、内存等信息DMS 学习video station 简介 群晖DS215J https://www.datastoreworks.com/DS215j.asp 下载&#xff1a;chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/https://global.download.synology.com/download/Document/Hardware/…