SpringBoot(静态资源访问+Rest风格请求)

文章目录

    • 1.静态资源访问
        • 1.基本介绍
        • 2.快速入门
          • 1.新建一个maven项目
          • 2.引入依赖 pom.xml
          • 3.创建文件目录
          • 4.Application.java
          • 5.创建四个可以存放静态资源的文件夹
          • 6.通过浏览器访问(这四个都可以访问)
        • 3.注意事项和细节
          • 1.关于静态资源的访问管理
          • 2.修改静态资源的访问前缀
            • 1.创建配置文件 resources/application.yml 修改静态资源的访问前缀,此时通过 根路径/sun/文件名 访问
            • 2.结果展示
          • 3.修改静态资源的默认存放文件夹为类路径下的sun111/
            • 1.application.yaml
            • 2.一旦自己设置了默认存放文件夹在,则默认的那四个文件夹就会被覆盖
          • 4.关于静态资源的访问路径和存放路径
    • 2.Rest风格请求处理
        • 1.应用实例
          • 1.需求分析
          • 2.MonsterController.java
          • 3.postman测试
        • 2.使用表单进行Rest风格的请求
          • 1.基本介绍
          • 2.application.yml 配置隐藏方式过滤器
          • 3.restRqeuest.html
          • 4.浏览器测试
        • 3.关于不同注解标识的类中的方法中return的处理
          • 1.@RestController标识的类
          • 2.@Controller标识的类
        • 4.@Controller标识的类return的实例
          • 1.编写一个由Controller注解标识的类
          • 2.测试
          • 3.配置一个视图解析器 application.yml
          • 4.测试
        • 5.@Controller标识的类return的总结
          • 1.如果没有配置视图解析器
          • 2.如果配置了视图解析器
          • 3.关于SpringBoot的 `/`

1.静态资源访问

1.基本介绍

image-20240314082509360

image-20240314084424993

2.快速入门
1.新建一个maven项目

image-20240314082645795

2.引入依赖 pom.xml
  <!--导入springboot父工程--><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.5.3</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
3.创建文件目录

image-20240314083331337

4.Application.java
package com.sun.springboot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author 孙显圣* @version 1.0*/
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
5.创建四个可以存放静态资源的文件夹

image-20240314084509273

6.通过浏览器访问(这四个都可以访问)

3.注意事项和细节
1.关于静态资源的访问管理

image-20240314085711613

2.修改静态资源的访问前缀
1.创建配置文件 resources/application.yml 修改静态资源的访问前缀,此时通过 根路径/sun/文件名 访问
spring:mvc:static-path-pattern: /sun/**
2.结果展示

image-20240314090110090

3.修改静态资源的默认存放文件夹为类路径下的sun111/
1.application.yaml
spring:web:resources:static-locations: [classpath:/sun111/]
2.一旦自己设置了默认存放文件夹在,则默认的那四个文件夹就会被覆盖
4.关于静态资源的访问路径和存放路径
  • 静态资源的存放路径默认有四个,可以进行修改,但是修改之后就会覆盖原来的存放路径
  • 静态资源的访问路径,默认是根路径,也是可以修改
  • 存放路径就是存放静态资源的路径,而访问资源只需要关注访问路径即可,不需要关心静态资源放在哪里

2.Rest风格请求处理

1.应用实例
1.需求分析

image-20240314092512794

2.MonsterController.java
package com.sun.springboot.controller;import org.springframework.web.bind.annotation.*;/*** @author 孙显圣* @version 1.0*/
@RestController //作为Controller注入容器,并将返回值转化为json字符串返回
public class MonsterController {@GetMapping("/get")public String getMonster() {return "getMonster";}@PostMapping("/post")public String postMoster() {return "postMoster";}@PutMapping("/put")public String putMonster() {return "putMonster";}@DeleteMapping("/delete")public String deleteMonster() {return "deleteMonster";}
}
3.postman测试

image-20240314093708822

image-20240314093720630

2.使用表单进行Rest风格的请求
1.基本介绍

2.application.yml 配置隐藏方式过滤器
spring:mvc:hiddenmethod:filter:enabled: true
3.restRqeuest.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<!--1.如果是put或者delete,method必须是post-->
<form action="/put" method="post"><!--2.如果是put或者delete,使用隐藏域来传递rest请求类型--><input type="hidden" name="_method" value="put"><input type="submit" value="submit">
</form>
</body>
</html>
4.浏览器测试

image-20240314095906621

3.关于不同注解标识的类中的方法中return的处理
1.@RestController标识的类
  • 如果是这个注解标识的类,则表示将返回的结果转换成json字符串然后返回到浏览器
  • 并不会返回到视图解析器
2.@Controller标识的类
  • 如果是这个注解标识的类
    • 首先查看是否有对应的Controller处理,比如return hello,则找 /hello 的Controller
    • 如果没有则交给视图解析器处理
  • 如果视图解析器没办法处理就会报错404
4.@Controller标识的类return的实例
1.编写一个由Controller注解标识的类
package com.sun.springboot.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;/*** @author 孙显圣* @version 1.0* 演示将结果返回到视图解析器*/
@Controller
public class MonsterController {@GetMapping("/go")public String goView() {System.out.println("跳转到视图解析器");return "hello"; //如果没有配置视图解析器,会查找是否有/hello的Controller,注意,这里的/hello是上下文路径}//使用一个测试的hello@GetMapping("/hello")@ResponseBody //将结果以json的形式返回到浏览器public String hello() {return "没有配置视图解析器时会找到我这个Controller";}
}
2.测试
  • 可以看到访问的go,但是找到了/hello的Controller(因为没有配置视图解析器)

image-20240314113142029

3.配置一个视图解析器 application.yml
  • 这里配置的视图解析器会查找/xxx.html,这里的/指的是根目录
spring:mvc:view: #配置了视图解析器suffix: .html #后缀prefix: / #前缀
4.测试
  • 可以看到一旦配置了视图解析器,不会再去找Controller

image-20240314113246098

5.@Controller标识的类return的总结
1.如果没有配置视图解析器
  • 会根据返回的字符串并在前面拼接/,来查找对应的Controller
  • 此时的/是上下文路径
2.如果配置了视图解析器
  • 不会再去匹配Controller
  • 会根据视图解析器的前缀和后缀去拼接返回的字符串
  • 根据静态资源的访问路径去查找到对应的静态资源
3.关于SpringBoot的 /
  • 只有在Controller中的/才是上下文路径
  • 其余的/全指的是服务器根目录http:localhost:8080/

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

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

相关文章

小迪安全40WEB 攻防-通用漏洞CSRFSSRF代码审计同源策略加载函数

#知识点&#xff1a; 逻辑漏洞 1、CSRF-原理&危害&探针&利用等 2、SSRF-原理&危害&探针&利用等 3、CSRF&SSRF-黑盒下漏洞探针点 #详细点&#xff1a; CSRF 全称&#xff1a;Cross-site request forgery&#xff0c;即&#xff0c;跨站请求…

Python AI 之Stable-Diffusion-WebUI

Stable-Diffusion-WebUI简介 通过Gradio库&#xff0c;实现Stable Diffusion web 管理接口 Windows 11 安装Stable-Diffusion-WebUI 个人认为Stable-Diffusion-WebUI 官网提供的代码安装手册/自动安装不适合新手安装&#xff0c;我这边将一步步讲述我是如何搭建Python Conda…

【linux本地安装tinycudann包教程】

【linux本地安装tinycudann包教程】 tiny-cuda-nn官网链接 如果你是windows 10系统的,想要安装tiny-cuda-nn可以参考我的文章——windows 10安装tiny-cuda-n包 根据官网要求:C++要求对应14,其实这样就已经告诉我们linux系统中的gcc版本不能高于9,同时下面又告诉我们gcc版…

【面试精讲】深克隆和浅克隆的实现方式?深克隆和浅克隆有什么区别?

【面试精讲】深克隆和浅克隆的实现方式&#xff1f;深克隆和浅克隆有什么区别&#xff1f; 目录 本文导读 一、浅克隆&#xff08;Shallow Clone&#xff09; 二、深克隆&#xff08;Deep Clone&#xff09; 1、递归使用clone()方法实现深克隆 2、使用序列化实现深克隆 …

接收服务端请求,WebSocket 并非唯一选择!(含:ChatGPT 流推送原理解析)

前端训练营&#xff1a;1v1私教&#xff0c;终身辅导计划&#xff0c;帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello&#xff0c;大家好&#xff0c;我是 Sunday。 说到推送数据&#xff0c;大家可能首先想到的是 WebSocket。 事实上&…

vue右键自定义样式

<!-- eslint-disable vue/no-dupe-keys --> <template><div><div class"search-box"><div class"search"><el-input placeholder"搜索" prefix-icon"el-icon-search" v-model"input2">…

论文阅读——BLIP

BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation &#xff08;1&#xff09;单模态编码器&#xff0c;它分别对图像和文本进行编码。图像编码器用ViT&#xff0c;并使用附加的 [CLS] 标记来表示全局图像特征。文本…

基础---nginx 启动不了,跟 Apache2 服务冲突

文章目录 查看 nginx 服务状态nginx 启动后 访问页面 127.0.0.1停止 nginx 服务&#xff0c;访问不了页面停止/启动 Apache2 服务&#xff0c;启动 Apache2 页面访问显示正确nginx 莫名启动不了卸载 Apache2 服务器 启动 nginx &#xff0c;但是总是不能实现反向代理&#xff0…

【C++ 学习】内存管理

1. new / delete 和 malloc / free 的区别? malloc / free 和 new / delete 的共同点&#xff1a;都是从堆上申请空间&#xff0c;并且需要用户手动释放。不同的地方是&#xff1a; malloc 和 free 是函数&#xff0c;new 和 delete 是操作符&#xff1b; malloc 申请的空间不…

如何使用vue定义组件之——父组件调用子组件

首先&#xff0c;我们需要创建两个组件模板template&#xff1a; <template id"father"><div><h3>我是父组件</h3><h3>访问自己的数据:</h3><h3>{{ msg }}</h3></div></template><template id"…

数据结构和算法:栈与队列

栈 栈 &#xff08;stack&#xff09;是一种遵循先入后出逻辑的线性数据结构 把堆叠元素的顶部称为“栈顶”&#xff0c;底部称为“栈底”。 将把元素添加到栈顶的操作叫作“入栈”&#xff0c;删除栈顶元素的操作叫作“出栈”。 栈的常用操作 /* 初始化栈 */ stack<int&g…

HelpLook AI 升级!一键生成SEO设置关键要素

| 现代SEO营销为何选择与AI同行 众多企业面临SEO优化日趋复杂的挑战&#xff0c;投入的时间和资源不断攀升。然而&#xff0c;HelpLook利用AI技术&#xff0c;一键完成SEO关键词和描述的生成&#xff0c;无需额外付费或繁琐操作&#xff0c;轻松提升网站曝光和点击率&#xff…