SpringWeb项目核心功能总结

news2024/10/7 14:23:50

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.coloradmin.cn/o/848434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vr禁毒宣传展厅展馆为观众带来了沉浸式的真实体验

毒品是当今社会的一大毒瘤,给人们的生命和家庭带来了极大的伤害,禁毒教育一直是我们必须重视的一项工作。为了更好地宣传禁毒知识,我们不断地探索新的教育方式,其中,VR禁毒体验已经成为了一股新潮流。 三维网上展厅以数…

从《封神》中看动作捕捉对影视制作的作用

在电影《封神》中的角色雷震子不同于往常由真人演员化妆扮演,而是采用了动作捕捉技术,通过真人演员穿戴动作捕捉设备,实时动作捕捉数字角色进行演绎,让数字角色雷震子在电影中呈现出动作流畅、自然、形象逼真的精致画面效果&#…

果粉装机必备软件有哪些

作为一名从Windows全面切换到Mac的果粉,在一开始的时候确实感到诸多不便,比如文件管理器操作别扭,鼠标移动不够跟手等等。 后来才发现,除了游戏,大多数问题都能用软件来解决。Mac虽然小众,但是用户群体有很…

VScode : 过程试图写入的管道不存在

前言 由于这个问题比较常见,所以想记录一下。以下记录的问题都是我自己遇到的比较多的问题以及解决方案。 常见问题和解决方案 问题1.网段不一样 解决方案:通常服务器的网段是内网,自己如果远程连接,需要挂v,p&…

Azure Kinect DK使用教程

作者: Herman Ye Galbot Auromix 版本: V1.0 测试环境: Ubuntu20.04 更新日期: 2023/08/08 注1: 本文内容中的硬件由 Galbot 提供支持。 注2: Auromix 是一个机器人爱好者开源组织。 注3: 本文在…

安全防御(3)

1.总结当堂NAT与双机热备原理,形成思维导图 2.完成课堂nat与双机热备试验 引用IDS是指入侵检测系统,它可以在网络中检测和防御入侵行为。IDS的签名是指根据已知入侵行为的特征制定的规则,用于检测和警告可能存在的入侵行为。签名过滤器可以根…

怎么理解linux内核栈?

内核栈有不同含义。一是内核线程使用的栈,比如初始化线程,idle,kthread,这些仅在内核空间运行,只有内核栈,没有用户态以及用户空间栈。还有就是用户线程发生中断,系统调用进入内核态时候使用的栈…

linux下.run安装脚本制作

1、安装文件(install.sh) PS: .run安装包内部执行脚本文件 2、资源文件(test.zip) PS: 待安装程序源文件 3、制作.run脚本(install.run) cat install.sh test.zip > install.run chmod ax install.run

【单片机】DS2431英文手册,中文手册,翻译

DS2431是一款1024位的1-Wire EEPROM芯片,以每个256位的四个内存页面组织。数据被写入8字节的暂存区,经过验证,然后复制到EEPROM存储器中。作为一个特殊功能,四个内存页面可以单独地被写保护,或者被置于EPROM仿真模式&a…

ETHERCAT转CANOPEN协议网关canopen分类

1.产品功能 JM-ECT-COP是自主研发的一款 ETHERCAT 从站功能的通讯网关。该产品主要功能是将 ETHERCAT 网络和 CANOPEN 网络连接起来。 本网关连接到 ETHERCAT 总线中做为从站使用,连接到 CANOPEN 总线中做为主站使用。 3.技术参数 ETHERCAT 技术参数 网关做为 E…

【论文阅读】基于深度学习的时序异常检测——TransAD

系列文章链接 数据基础:多维时序数据集简介 论文一:2022 Anomaly Transformer:异常分数预测 论文二:2022 TransAD:异常分数预测 论文链接:TransAD.pdf 代码库链接:https://github.com/imperial…

openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA

文章目录 openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA34.1 语法格式34.2 参数说明34.3 示例 openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA SCHEMA又称作模式。通过管理SCHEMA,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象…

1706. 球会落何处;875. 爱吃香蕉的珂珂;1914. 循环轮转矩阵

1706. 球会落何处 核心思想:判断什么时候球会被卡住,1,当球在最左边的时候,挡板是向左的。2,当球在最右边的时候,挡板是向右的。3,当球当前的挡板是向左的,但是同一行的另一个挡板是…

模仿火星科技 基于cesium+ 贴地测量+可编辑

当您进入Cesium的编辑贴地测量世界,下面是一个详细的操作过程,帮助您顺利使用这些功能: 1. 创建提示窗: 启动Cesium应用,地图场景将打开,欢迎您进入编辑模式。在屏幕的一角,一个友好的提示窗将…

MongoDB:Unrecognized option: storage

MongoDB一直显示 Unrecognized option: storage try ‘mongod --help’ for more information 意思是我们配置的config文件出了问题。 说明:MongoDB采用的是YAML格式,所以我们只需要稍微改改就好。 在storage前面:没有空格 下面两行最前面…

以肠道微生物群为新视角的研究和治疗癫痫

谷禾健康 在漫长的历史中,一种神秘而令人不安的疾病一直困扰着人类,那就是癫痫。 癫痫是最常见的神经系统疾病之一,影响着全世界近7000万人。它会导致突发性的、不可控制的、反复发作的痉挛和意识丧失。 突如其来的发病行为,不仅让…

Simulink仿真模块 - Rate Transition

Rate Transition处理以不同速率运行的模块之间的数据传输 在仿真库中的位置为:Simulink / Signal Attributes模型为: 双击模型打开参数设置界面为: 参数设置 Initial conditions:初始条件设置 此参数仅适用于慢速到快速转移。它指定当连接到 Rate Transition 模…

【Kubernetes】Kubernetes之kubectl详解

kubectl 一、陈述式资源管理1. 陈述式资源管理方法2. 基本信息查看3. 项目周期管理3.1 创建 kubectl create 命令3.2 发布 kubectl expose命令3.3 更新 kubectl set3.4 回滚 kubectl rollout3.5 删除 kubectl delete 4. kubectl 的发布策略4.1 蓝绿发布4.2 红黑发布4.3 灰度发布…

生态系统服务(InVEST模型)供给与需求、价值核算技术及人类活动、重大工程项目、自然保护区、碳中和等领域中实际案例分析

对接工作实际项目及论文写作,解决参会者关注的重点及实际项目过程问题,采取逐步延伸的逻辑,不论您是小白亦或是已经能够成功运行InVEST模型生成结果,您可以自由选择课程内容,如果您是小白老师手把手教您,如…

自媒体行业如何使用ChatGPT提高效率?

文章目录 自媒体公司如何充分利用ChatGPT提高效率自媒体公司使用ChatGPT提高效率的具体案例训练ChatGPT,让它更懂你 ✍创作者:全栈弄潮儿 🏡 个人主页: 全栈弄潮儿的个人主页 🏙️ 个人社区,欢迎你的加入&a…