当前位置: 首页 > news >正文

SpringWeb项目核心功能总结

SpringWeb项目核心功能总结

文章目录

  • SpringWeb项目核心功能总结
    • 1.浏览器与Java程序的连接(个人偏好使用@RequestMapping)
    • 2.参数的传入
    • 3.结果的返回
    • 请求转发和请求重定向的区别

核心功能用到的注解:

  • @RestController=@Controller+@ResponseBody
  • RequestMapping【GetMapping,PostMapping…】
  • @Data
  • @RequestParam
  • @RequestPart
  • @CookieValue
  • @SessionAttribute

注解的详细用法在这:

MVC常用注解详解

这里是进一步简化和总结,建议先看上边,再看这个

1.浏览器与Java程序的连接(个人偏好使用@RequestMapping)

首先注册一级路由,指定返回的页面不是静态页面,以及加上类注解

然后注册二级路由,写具体的代码,返回相应的结果

@RestController
@RequestMapping("/user")
public class UserController {@RequestMapping("/sayhi")//二级路由注册public String sayHi(){return "hi";}@RequestMapping(value = "/sayhi2",method = RequestMethod.POST)public String sayHi2(){return "hi";}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ggbpWnb-1691464124543)(F:\typora插图\image-20230808093135322.png)]

2.参数的传入

传普通单个参数|多个参数(前后端参数名相同和不同(含参数类型的影响))|cookie|session|文件|JSON对象|header

spring这里传参数和之前是一样的,不传的话会得到默认值

package com.example.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/user")
public class UserController {@RequestMapping("/gp")public String getParam(String name){return name;}@RequestMapping("/gp3")public String getParam(HttpServletRequest request,HttpServletResponse response) throws IOException {response.sendRedirect("http://www.javacn.site");return "hi";}@RequestMapping("/gp4")public String getParam(String name,String password) {return name+":"+password;}@RequestMapping("/gp5")public String getParam5(@RequestParam("username") String name) {return name;}//获取对象@RequestMapping("/reg")public Object getParam9(UserInfo userInfo){return userInfo;}//获取JSON对象@RequestMapping("/reg2")public Object reg2(@RequestBody UserInfo userInfo){return userInfo;}//从url的path获取参数@RequestMapping("/reg3/{name}/{pwd}")public Object reg3(@PathVariable String name,@PathVariable(required = false,name = "pwd") String password){return name+":"+password;}//获取上传文件(可以上生产线的代码)@RequestMapping("/myupload2")public Object upload2(@RequestPart("test")MultipartFile file){String fileName= UUID.randomUUID()+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));File saveFile=new File("F://test//"+fileName);try {file.transferTo(saveFile);return true;} catch (IOException e) {e.printStackTrace();}return false;}//获取cookie@RequestMapping("/getck")public Object getck(@CookieValue(value = "java",required = false)String java){return java;}//获取Header@RequestMapping("gethd")public Object getHeader(@RequestHeader("Host")String ht){return ht;}//获取Session(更为方便的,原来的比这个麻烦一点)@RequestMapping("getsess")public Object getSession(@SessionAttribute(SESSION_KEY)String name){return "session:"+name;}
}
  1. 传入单个参数(不传,非基础数据)

  2. 隐藏参数(request,response)

  3. 多参数按照的名称而不是顺序

  4. 前后端参数名不同,用@RequestParam进行映射(参数重命名)

  5. 表单/用户对象的获取(spring web自动实现参数映射(拦截器,统一处理),保证属性名同)

    package com.example.demo.entity;import lombok.Data;@Data
    public class UserInfo {private int id;private String name;private String password;private int age;
    }			
    
  6. ​ JSON对象数据获取(和之前不同)(需要使用@RequestBody注解声明)

    注意:JSON对象的模拟发送(postman的发送)

    即通过请求体获取对象

  7. 从普通的url的path获取参数(还比较常用)(使用@PathVariable这个注解实现)【详情页也是使用的一个经典场景】

    参数可传可不传,需要设置required属性

    路由里边的花括号是对参数名敏感的意思

    好处:1.搜索引擎抓取关键字权重会比较高 2.参数比较少的情况下,url更加简洁

  8. 获取上传文件,@RequestPart注解【保存在数据库中使用varchar】

    必须使用指定类型接收,才能把具体文件流转化(图片,文档…)

    注意:使用Postman模拟前端图片上传(file)

    有的传到自己服务器(项目不多的话),有的传到OSS上边的(腾讯或阿里专门提供的)

  9. 获取cookie(请求体)使用@CookieValue注解

  10. 获取header使用@RequestHeader注解

  11. 获取session使用@SessionAttribute注解

3.结果的返回

静态页面的返回|非静态页面的返回|跳转链接的返回

//加斜杠是从根目录返回,不加斜杠是从当前页面找静态页面package com.example.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
@RequestMapping("test")
public class TestController {//返回静态界面@RequestMapping("/index")public Object getIndex(){return "/index.html";}//返回json对象@RequestMapping("/reg2")public Object reg2(@RequestBody UserInfo userInfo){return userInfo;}//请求重定向@RequestMapping("index1")public String index1(){return "redirect:/index1.html";}//请求转发@RequestMapping("index2")public String index2(){return "forward:/index2.html";}
}
  1. 返回静态页面(使用比较少,因为前后端分离)

  2. 返回非静态页面(JSON,HTML…框架会自动适配)

  3. 返回跳转【请求重定向和请求转发(实现方式有很多)】(使用比较少,因为前后端分离,但是有时也会有的)

    还可以通过reponse对象的sendRedirect方法…

请求转发和请求重定向的区别

(字越少事越大)

请求转发字比较少,需要客户端执行跳转,而请求重定向什么也不干,只是告诉客户端去哪访问。

相关文章:

SpringWeb项目核心功能总结

SpringWeb项目核心功能总结 文章目录 SpringWeb项目核心功能总结1.浏览器与Java程序的连接(个人偏好使用RequestMapping)2.参数的传入3.结果的返回请求转发和请求重定向的区别 核心功能用到的注解: RestControllerControllerResponseBodyRequ…...

Django------信号

Django 框架包含了一个信号机制,它允许若干个发送者(sender)通知一组接收者(receiver)某些特定操作或事件(events)已经发生了, 接收者收到指令信号(signals)后再去执行特定的操作。本文主要讲解Django信号(…...

HTML5 中新增了哪些表单元素?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ HTML5 中新增了的表单元素⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚…...

[考研机试] KY20 完数VS盈数 清华大学复试上机题 C++实现

描述 一个数如果恰好等于它的各因子(该数本身除外)子和,如:6321。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。 求出2到60之间所有“完数”和“盈数”。 输入描述: 题目没有任何输入。 输出描述&#…...

re学习(30)攻防世界-hackme(代码复原2)

思路: 1.输出成功,v26不为0,说明关系式:v21((unsigned __int8)v24 ^ v20) →2.在汇编代码第37行,输入v16v20,所以求的值为v20 →3.根据关系式,求的值v20v21^v24 →4.v21在第汇编代码第36行也可以提取出来…...

Go Windows下开发环境配置(图文)

Go Windows下开发环境配置 下载 安装 点击下载的安装包进行安装。安装路径可以选择到自己的目录。 环境变量配置 GOROOT:(指定到安装目录下) GOPATH:(是工作空间) path:在安装时已经添加了…...

【人工智能概述】python妙用 __str__()

【人工智能概述】python妙用 str() 文章目录 【人工智能概述】python妙用 __str__()一.python内置函数__str__() 一.python内置函数__str__() 通过自定义__str__()函数可以打印对象中相关的内容。 class Person(object):def __init__(self, name tom, age 10):self.name n…...

android kernel移植5-RK3568

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1.添加开发板默认配置文件2.添加开发板默认设备树2.1复制设备树2.2指定设备树前言 前面我们已经学会了移植uboot,其实就是把瑞芯微的关于uboot的一些文件的名字和编译指定的文件改为自己定义…...

C++——string类介绍

我们知道在C语言里,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数, 但是这些库函数与字符串是分离开的,而且底层空间需要用户自己管理,可 能还会越界访问。 但是在C…...

教雅川学缠论07-中枢实战众泰汽车000980

本文实战众泰汽车 下面是2023年11月14-2023年8月8众泰汽车日K图 先画日K 接下来处理包含,就变成下面这个样子 下面在套上缠论的理论,未来股价的走势应该是红色椭圆形虚线里面的样子 好了,文章就到这里,如果众泰最终不是这个走势…...

REDIS主从配置

目录 前言 一、概述 二、作用 三、缺点 四、redis主从复制的流程 五、搭建redis主从复制 总结 前言 Redis的主从配置是指在Redis集群中,将一个Redis节点配置为主节点(master),其他节点配置为从节点(slave)…...

【测试】软件测试工具JMeter简单用法

简明扼要,点到为止。 1. JMeter介绍 JMeter的全称是Apache JMeter,是一款用于软件测试的工具软件,其是开源免费的,由Apache基金会运营。 官网:Apache JMeter - Apache JMeter™ 2. 下载安装及运行 2.1 安装 Java8…...

五个授权关键,为智能驾驶量产赋能

站在风口浪尖的智能驾驶行业? 智能汽车是指通过搭载先进传感器等装置,运用人工智能等新技术,具有自动驾驶功能,逐步成为智能移动空间和应用终端的新一代汽车。集中运用了计算机、现代传感、信息融合、通讯、人工智能及自动控制等技…...

【代码随想录-Leetcode第三题:977. 有序数组的平方】

题目 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组…...

[运维|中间件] Apache APISIX Dashboard部署(持续踩坑更新。。。)

参考文献 Apache APISIX v2.6 官方文档 APISIX、APISIX Dashboard搭建、路由配置及插件使用 安装apisix和apisix-dashboard,访问方式,测试路由转发,反向代理等 文档地址 Dashboard Doc 下载地址 Apache APISIX Dashboard下载地址 部署 …...

Vue中watch监听属性新旧值相同问题解决方案

侦听器 _watch: 作用:可以侦听data和computed中数据的变化. 语法 watch: { "被侦听的属性名" (newVal, oldVal){ } } 监听简单数据类型时可以直接使用,而监听复杂数据类型时,例如当我们只需要监听data或者computed中对象的某个属性时,可以使用字符串的形式进行监听…...

awk案例练习

目录 一、awk练习 1.1筛选ip地址 1.2字段去重 1.3次数统计 1.4统计TCP连接状态 1.5处理字段缺失的数据 1.6筛选给定时间范围内的日志 一、awk练习 1.1筛选ip地址 ifconfig命令查看IP 利用awk进行筛选 ifconfig | awk BEGIN{RS""}NR2{print $6} RS指定输入记…...

Debian 12.1 正式发布

导读Debian 12.1 现已发布,这是对稳定发行版 Debian 12(代号 Bookworm )的首次更新。本次发布主要增加了安全问题的修正,并对严重问题进行了一些调整。 一些更新内容包括: 妥善处理系统用户的创建;修复 eq…...

neo4j清空数据库

清空所有Person、 Movie节点及其所有关系 MATCH (a:Person), (m:Movie) OPTIONAL MATCH (a)-[r1]-(), (m)-[r2]-() DELETE a,r1,m,r2 查询任意数据 MATCH (n) RETURN n 如果没有, 就说明已经删除成功了 这段代码是用Cypher查询语言编写的,用于清空…...

SpringBoot整合Mybatis-Plus

文章目录 前言一、Mybatis-Plus简介二、框架结构三、SpringBoot整合Mybatis-Plus1.依赖2.配置文件设置 四、前期准备4.1数据库信息4.2dao类4.3pojo类 五、常用注解5.1 TableName(value "")5.2 TableId(value"",type IdType.XXX)5.3 TableField("&qu…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘&#xf…...

LangFlow技术架构分析

🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...