Spring06

news/2025/3/6 1:50:37/

一、SpirngMvc的基本概念

        Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet

        MVC(Model View Controller),一种用于设计创建Web应用程序的开发模式

        Model(模型):数据模型,用于数据处理,包括(service和dao)

        View(视图):页面视图,用于展示数据

        Controller(控制器):处理用户发送的请求,调用model完成数据处理,并对view视图进行响应

        Controller接收浏览器发送的请求后,调用 Model(service和dao)处理完数据后,将响应结果返回给View(视图)

二、SpringBoot访问静态资源的特点 

        当我们在类上只加上@Controller注解,而在方法上没有加上@ResponseBody注解时,此时会进行页面跳转

    后端代码:

package com.itheima.cotroller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class CustomerController {@RequestMapping("/hello2")public String hello2() {System.out.println("hello springmvc2");return "success.html";}}

页面发送请求并得到返回结果:

后端代码中:

return "success.html";

SpringBoot程序就会默认以下路径去寻找:success.html这个页面

src/main/resources/static/ 下找有没有 success.html

src/main/resources/public/ 下找有没有 success.html

src/main/resources/resources/ 下找有没有 success.html

src/main/resources/META-INF/resources/ 下找有没有 success.html

三、通过jar包运行程序 

        SpringBoot程序默认打jar包,当然也可以打war包,官方推荐打jar包。SpringBoot程序jar包中内置了web服务器可以直接运行jar包并访问程序

        命令:java  -jar  jar 包的名称

3.1、将程序打成jar包

        

3.2、cmd进入jar包所在文件夹的命令行 

3.3、输入命令: java  -jar  jar springmvc_01.jar

可以看到此时spring项目就启动了,我们一样可以通过postman或者页面访问到这个spring程序。

需要注意的是SpringBoot项目中Maven依赖里面如果没有加上下面插件的依赖,项目就会报错

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin>

 出现报错

四、Springmvc响应字符串或者JSON

 4.1、配置文件中改变虚拟路径、端口号

server.servlet.context-path=/springmvc_02
server.port=8080

加上虚拟路径之前的访问路径:

http://localhost:8080/hello2

此时访问路径就会变成:

http://localhost:8080/springmvc_02/hello2

4.2、 Springmvc不进行页面跳转

        4.2.1、返回字符串给前端页面

        如果Controller中方法不想进行页面跳转,在类或者方法上使用@ResponseBody注解,表示该方法不进行页面跳转,将返回值通过响应体响应给客户端

        后端代码:

package com.itheima.cotroller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@ResponseBody
public class CustomerController {@RequestMapping("/hello1")public String hello1() {System.out.println("hello springmvc1");return "你好, springmvc";}}

页面发送请求并得到返回结果:返回给页面的是字符串

 4.2.2、返回JAVA对象给前端页面

后端代码:

package com.itheima.cotroller;import com.itheima.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.Date;@Controller
@ResponseBody
public class CustomerController {@RequestMapping("/hello3")public User hello3() {System.out.println("hello springmvc3");return new User("卢本伟",20,new Date());}}

 

 页面发送请求并得到返回结果:返回给页面的是JSON数据

说明:

Springmvc底层集成了jackson工具,能够自动将java对象转换成json响应给客户端

4.2.3、@RestController注解

        直接使用@RestController注解,同样能完成返回数据,而不进行页面跳转。@RestController 是一个组合注解,同时含有 @Controller@ResponseBody功能 

 

 

五、postman的使用 

5.1、使用postman发送get请求

        点击右上角的params可以输入传入的参数:

        

        例如上面输入:

        key                                                value

        name                                            张益达

        age                                                22

        

        就会在请求行中自动拼接传入的参数, 因为GET请求的请求参数是从请求行传输的,也可以直接在请求行中输入?name=张益达&age=22       

         

5.2、使用postman发送post请求

        Body中的请求体选raw,最右边选JSON

六、过滤器和拦截器之间的区别

1、归属不同: Filter属于Servlet技术,Interceptor属于SpringMVC技术

2、拦截内容不同: Filter拦截请求响应的,Interceptor拦截访问Controller中的方法。

3、执行顺序不同:先执行过滤器,后执行拦截器

过滤器拦截页面的请求和响应,拦截器拦截Java内部访问Controller中的方法。 

 

过滤器详见csdn上自己总结的内容

JavaWeb(十二)-CSDN博客

 

七、SpringMvc的执行流程 

 

 

Restful风格以及其他接收前端参数的方式详见:

 常见接收前端参数的方式_怎么接收前端传过来的参数-CSDN博客

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

相关文章

字符串不可变性以及StringBuilder和StringBuffer在字符串拼接中的作用和扩容机制

java字符串的不可变性 在jdk1.8及以前&#xff0c;字符串底层存储用的是一个字符&#xff08;char&#xff09;类型的数组&#xff0c;jdk1.9之后用的是整型中的字节型&#xff08;byte&#xff09;数组来存储字符串。以下下主要以jdk1.8为例子展开。 private final char value…

css实现动态水波纹效果

效果如下&#xff1a; 外层容器 (shop_wrap)&#xff1a; 设置外边距 (padding) 提供一些间距和边距 圆形容器 (TheCircle)&#xff1a; 使用相对定位 (position: relative)&#xff0c;宽度和高度均为 180px&#xff0c;形成一个圆形按钮圆角半径 (border-radius) 设置为 50%&…

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题三 理论题

竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 1.第一阶段&#xff1a;模块一 网络平台搭建与设备安全防护&#xff08;180 分钟&#xff0c;300 分&#xff09;。 2.第二阶段&#xff1a;模块二…

JavaWeb:Request Response

文章目录 1、Request和Response的概述2、Request继承体系3、Request获取请求数据3.1、获取请求行数据3.2、获取请求头3.3、获取请求体 4、Request通用方式请求参数5、POST请求参数乱码解决6、Request请求转发7、Response的响应状态码和响应头8、Response重定向9、Response响应字…

LeetCode讲解篇之78. 子集

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个start变量记录当前从哪里开始遍历搜索nums 搜索过程的数字组合加入结果集 然后从start下标开始遍历nums&#xff0c;更新start&#xff0c;递归搜索 直到搜索完毕&#xff0c;返回结果集 题解代码 class …

YoloV5改进策略:BAM瓶颈注意力模块|BAM详解以及代码注释|CBAM姊妹篇|有效涨点

论文:《BAM:瓶颈注意力模块》 https://arxiv.org/pdf/1807.06514.pdf 近期深度神经网络的进展主要通过架构搜索来增强其表示能力。在这项工作中,我们专注于注意力在一般深度神经网络中的作用。我们提出了一种简单而有效的注意力模块,名为瓶颈注意力模块(BAM),可以与任何…

SPI传感器接口设计与优化:基于STM32的实践

SPI&#xff08;串行外设接口&#xff09;是一种常用的串行通信协议&#xff0c;用于在微控制器和外部设备之间进行全双工的高速数据传输。在本文中&#xff0c;我们将探讨如何基于STM32微控制器设计和优化SPI传感器接口&#xff0c;并提供相应的代码示例。 1. SPI传感器接口设…

Excel学习

文章目录 学习链接Excel1. Excel的两种形式2. 常见excel操作工具3.POI1. POI的概述2. POI的应用场景3. 使用1.使用POI创建excel2.创建单元格写入内容3.单元格样式处理4.插入图片5.读取excel并解析图解POI 4. 基于模板输出POI报表5. 自定义POI导出工具类ExcelAttributeExcelExpo…