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方法…

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

(字越少事越大)

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

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

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

相关文章

前端主题切换方案——CSS变量

前言 主题切换是前端开发中老生常谈的问题,本文将介绍主流的前端主题切换实现方案——CSS变量 CSS变量 简介 编写CSS样式时,为了避免代码冗余,降低维护成本,一些CSS预编译工具(Sass/Less/Stylus)等都支…

AP2915DC-DC降压恒流驱动IC LED电源驱动芯片 汽车摩托电动车灯

AP2915 是一款可以一路灯串切换两路灯串的降压 恒流驱动器,高效率、外围简单、内置功率管,适用于 5-80V 输入的高精度降压 LED 恒流驱动芯片。内置功 率管输出功率可达 12W,电流 1.2A。 AP2915 一路灯亮切换两路灯亮,其中一路灯亮可 以全亮&a…

YOLOv5、YOLOv8改进:添加ShuffleAttention注意力机制

广泛应用的注意力机制主要有空间注意力机制和通道注意力机制,其目的分别是捕捉像素级的成对关系和通道依赖关系。虽然将两种机制融合在一起可以获得比单独更好的性能,但计算开销不可避免。因而,本文提出Shuffle Attetion,即SA&…

标准化归一化 batch norm, layer norm, group norm, instance norm

Layer Normalization - EXPLAINED (in Transformer Neural Networks) Layer Normalization - EXPLAINED (in Transformer Neural Networks) 0~4min:什么是multi-head attention 5~7min:layer norm图示 7~9min:公式举例layer norm 9:54-end:layer norm的代码示例 group n…

atx2环境搭建

1. 卸载python3.11.4版本 $sudo rm -rf /Library/Frameworks/Python.framework/Versions/3.11/ $sudo rm -rf /Applications/Python\ 3.11/ 第三步:删除指向python的链接 cd /usr/local/bin/ ls -l /usr/local/bin | grep /Library/Frameworks/Python.framework/…

详解使用SSH远程连接Ubuntu服务器系统

演示环境: 1.Windows10系统 2.VMware Workstation Pro虚拟机 2.Ubuntu16.04.6(以上版本通用) 回归正题 一、在Ubuntu端: 1.首先需要安装SSH服务器,在ubuntu终端输入以下指令 sudo apt-get install ssh2.输入你的ubu…

pytest 常用命令参数

-x 用例一旦失败或错误时就立即停止执行 共两条用例,运行第一条报错失败或报错,第二条就不会执行 pytest -vs -x test_pytest_study.py::TestCommon1 共2条用例,当执行到第一条失败时候,第二条不执行 --maxfailnum …

碳中和与碳达峰对卫星遥感的现实需求,遥感技术在生态系统碳储量、碳收支、碳排放、碳循环以及人为源排放反演等领域的技术发展

卫星遥感具有客观、连续、稳定、大范围、重复观测的优点,已成为监测全球碳盘查不可或缺的技术手段,卫星遥感也正在成为新一代 、国际认可的全球碳核查方法。本教程的目的就是梳理碳中和与碳达峰对卫星遥感的现实需求,系统总结遥感技术在生态系…

C++复习笔记——primer第五版

文章目录 一、引用和指针1.引用2.指针2.1利用指针访问对象2.2指针的值或指针所指对象的值的改变 3.赋值和指针4.指向指针的引用 二、String1.初始化String对象的方式2. string对象上的操作3.使用getline读取一整行4.字面值和字符串相加5.使用for循环改变字符串中的字符 三、Vec…

Ctfshow web入门 SSTI 模板注入篇 web361-web372 详细题解 全

CTFshow SSTI web361 笔记分享 一、代码块 变量块 {{}} 用于将表达式打印到模板输出 注释块 {##} 注释 控制块 {%%} 可以声明变量,也可以执行语句 {% for i in .__class__.__mro__[1].__subclasses__() %}{% if i.__name___wrap_close %}{% print i.__init__.…

WinServer2016 DHCPv6部署

Windows Server 2016 部署 DHCPv6 应用场景:如果服务器的 idrac 地址配置之后忘记了,又无法不能重启服务器,可以通过 DHCPv6 来解决。因为服务器 idrac 的 ipv6 自动获取是默认开启的,那么可以用笔记本装个 windwos server 的系统…

vue3多页面配置你一定会遇到的问题,踩坑指南

vue3实现多页面打包容易,关键是如何实现本地的开发和调试?我们接下来解决如下几个问题: 1 多页面项目的项目结构是怎样的? --public--src---App.vue---main.js---page1. ---App.vue---main.js----home.vue----list.vue---page2.…

【UE4 RTS】09-Day and Night

前言 本篇博客实现的效果是太阳和天空会随着游戏时间的变化而变化。 效果 步骤 1. 设置“LightSource”为可移动的 2. 新建一个文件夹,命名为“Lighting” 3. 打开游戏状态“RTS_GameState_BP”,添加一个函数命名为“GetGameSpeed” 添加一个浮点类型…

安卓:UDP通信

目录 一、介绍 网络通信的三要素: (1)、IP地址: IPv4: IPv6: IP地址形式: IP常用命令: IP地址操作类: (2)、端口: (3)、协议: UDP协…

【计算机视觉|生成对抗】条件生成对抗网络(CGAN)

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:Conditional Generative Adversarial Nets 链接:[1411.1784] Conditional Generative Adversarial Nets (arxiv.org) 摘要 生成对抗网络(Generative Adversarial…

力扣:59. 螺旋矩阵 II(Python3)

题目: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - 全…

兰州https证书申请

https证书是由CA认证机构颁发的数字证书,可以为域名网站或者公网IP网站提供信息加密服务,正规CA认证机构签发的https证书可以兼容99%的主流浏览器和IOS、Windows系统,同样,现在流行的小程序也需要https证书。那么,该怎…

云原生是什么

目录 1. 云原生是什么1.1. 微服务1.2. DevOps1.3. 持续交付1.4. 容器化 2. 什么是云原生2.1. 云原生的诞生2.2. 云原生基金会2.3. 主要区别: 云原生与传统企业应用 1. 云原生是什么 云原生是面向"云"而设计的应用, 因此技术部分依赖于传统云计算的 3 层概念, 基础设…

YOLOv5、YOLOv8改进:SEAttention 通道注意力机制

基于通道的注意力机制 源自于 CVPR2018: Squeeze-and-Excitation Networks 官方代码:GitHub - hujie-frank/SENet: Squeeze-and-Excitation Networks 如图所示,其实就是将不同的通道赋予相关的权重。Attention机制用到这里用朴素的话说就是,…

在线状态监测如何使冷却塔维保管理受益

工业冷却塔作为关键的热交换装置,在许多生产流程中发挥着重要作用。为了保持其高效稳定的运行,实施连续的冷却塔状态监测变得至关重要。本文将以PreMaint设备数字化平台为例,探讨为什么建议采用远程冷却塔状态监测,以及如何借助振…