Java 查漏补缺

news2025/1/16 15:46:35

文章目录

  • 1. Rest风格
    • # 传统访问
    • # Rest风格
    • # Restful开发中的注解介绍
  • 2. controller中路径参数
  • 3. 约束Controller中方法的请求类型
  • 4. 视图跳转
  • 5. java.sql.Date 和 java.util.Date 的联系和区别
  • 6. 使用 @Slf4j 日志
  • 7.定时任务
  • 8


1. Rest风格

Rest也叫做范文资源的形式,书写简化,隐藏访问真实目的。无法通过地址知道目的

Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP 协议里面四个表示操作方式的动词如下:

请求方式请求目的
GET用于获取资源
POST用于新建资源
PUT用于更新资源
DELETE用于删除资源
例如:
	* /users/1 GET : 得到 id = 1 的 user
	* /users/1 DELETE: 删除 id = 1 的 user
	* /users/1 PUT: 更新 id = 1 的 user
	* /users POST: 新增 user

# 传统访问

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gu1L17WU-1668603358222)(../images/image-20221101120136794.png)]

# Rest风格

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pYSC1jIz-1668603358223)(../images/image-20221101120150609.png)]

  • 资源:互联网所有的事物都可以被抽象为资源
  • 资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。
    分别对应 添加、 删除、修改、查询。

# Restful开发中的注解介绍

  • 名称:@PathVariable
  • 类型:形参注解
  • 位置:SpringMVC控制器方法形参定义前面
  • 作用:绑定路径参数与处理器方法形参间的关系,要求路径名与形参名一一对应
  • 范例:
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
    @ResponseBody
    public String findById(@PathVariable Integer id){
        System.out.println("findById running......" + id);
        return "findById";
    }
  • 名称:@RestController
  • 类型:类注解
  • 位置:基于SpringMVCESTful来发控制器类定义上方
  • 作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解的组合功能。
  • 范例:
@RestController
public class UserController{

}
  • 名称:@GetMapping @PostMapping @PutMapping @DeleteMapping
  • 类型:方法注解
  • 位置:基于SpringMVCESTful来发控制器方法定义上方
  • 作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求
  • 属性:value(默认):请求访问路径
  • 范例:
@RestController
@RequestMapping("/users")
public class UserController {
    @GetMapping("/{id}")
    public String findById(@PathVariable Integer id){
        System.out.println("findById running......" + id);
        return "findById";
    }
}

2. controller中路径参数

@Controller
public class RestFulController {    

    @RequestMapping(value = "/add/{a}/{b}")
    public String test1(@PathVariable int a,@PathVariable int b, Model model){
        int res = a + b;
        model.addAttribute("msg","结果为:"+ res);
        return "test";
    }    
}

3. 约束Controller中方法的请求类型

//我们使用浏览器地址栏进行访问默认是Get请求,如果报错405: 改回Get就好了。这里还是post
@RequestMapping(value = "add",method = RequestMethod.POST)
public String test2(Model model){
    model.addAttribute("msg","Hello!");
    return "test";
}

所有的地址栏请求默认都会是 HTTP GET 类型的。
方法级别的注解变体有如下几个:组合注解

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

@GetMapping 是一个组合注解,平时使用的会比较多!
它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式。

4. 视图跳转

//只要实现类Controller接口的类,,说明这就是哟个控制器了
public class ControllerText1 implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

        ModelAndView mv = new ModelAndView();
        mv.addObject("msg","ControllerText01");
        mv.setViewName("test");

        return mv;
    }
}

5. java.sql.Date 和 java.util.Date 的联系和区别

  • java.sql.Date 是 java.util.Date 的子类,是一个包装了毫秒值的瘦包装器,允许JDBC将毫秒值标识为 SQL DATE值。

  • java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分,格式是”yyyy-、MM-dd”.

  • java.util.Date是在除了SQL语句的情况下面使用的.

# 构建Date时间对象,构建SimpleDateFormat对象,使用SimpleDateFormat对象格式化时间。
Date date = new java.util.Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String nowDate = format.format(date.getTime());

6. 使用 @Slf4j 日志

  1. 添加pom依赖
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
    </dependency>
  
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.22</version>
    </dependency>

  1. 在类上添加 @Slf4j 注解
  2. 使用log.info(打印);
@Slf4j
@RestController
@RequestMapping("/book")
public class BookControler {

    @GetMapping
    public String getTime(){
        log.info("开始使用BookController类中的getTime方法");
        Date date=new Date();
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        String nowDate = format1.format(date.getTime());
        return nowDate;
    }
}

7.定时任务

@RequestMapping("/test2")
@ResponseBody
public String fun2(@RequestParam(value = "str1",defaultValue = "hello") String str1){


    // 定义一个任务
    TimerTask timerTask = new TimerTask() {
        @Override
        public void run() {
            System.out.println("打印当前时间:" + new Date());
        }
    };
    // 计时器
    Timer timer = new Timer();
    // 开始执行任务 (延迟1000毫秒执行,每3000毫秒执行一次)
    timer.schedule(timerTask, 2000, 1000);
    return "定时任务已触发";



}

8

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

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

相关文章

最简单的git图解(系列一)

git clone: 这个命令用于将远程代码仓库克隆到本地&#xff0c;这是对任何项目进行开发前的第一步。 比如你本地本来并没有某个项目的代码仓库&#xff0c;此时随便找一个文件目录并进入cmd命令窗口&#xff0c;执行命令git clone [remote address]&#xff0c;[remote addres…

SQL 50 题(MySQL 版,包括建库建表、插入数据等完整过程,适合复习 SQL 知识点)

目录1.建库建表2.插入数据3.SQL 50 题3.1.SQL 01——查询"01"课程比"02"课程成绩高的学生的信息及课程分数3.2.SQL 02——查询"01"课程比"02"课程成绩低的学生的信息及课程分数3.3.SQL 03——查询平均成绩大于等于 60 分的同学的学生编…

SMP多核启动(一):spin-table

前言 看这篇文章&#xff0c;你必备的一些前置知识有如下 1、ATF启动流程 2、PSCI电源管理的概念 3、设备树 如果没有&#xff0c;可以去我的专栏目录下逛逛&#xff0c;会有所收获。 1、SMP是什么&#xff1f; SMP 英文为Symmetric Multi-Processing &#xff0c;是对称多…

Vscode环境下的PyQt

一、环境配置 ①在Conda控制台下执行以下两条命令&#xff0c;添加开发环境 pip install PyQt5 pip install PyQt5-Tools ②找到designer.exe并运行 文件在哪网上说法千奇百怪&#xff0c;我建议还不如装个everything直接在C盘做全局搜索来得快&#xff0c;实在不想装的话可以…

C轮累积融资1亿美金 禾多科技如何靠自我造血能力赢得资本青睐?

自动驾驶当前在全球范围内受到广泛关注&#xff0c;是汽车行业正在集中力量攻克的新领域。据英特尔预计&#xff0c;2050年仅自动驾驶汽车的市场规模将达到7万亿美元。引得资本和科技巨头们纷纷“下注”。 近日&#xff0c;全栈自动驾驶科技公司禾多科技宣布&#xff0c;已完成…

Redis主从结构数据同步分析

Redis主从结构有两种部署方式&#xff0c;如下&#xff1a; 一主多从的模式是使用最多的模式&#xff0c;通常搭建哨兵或者集群都采用这种方式&#xff0c;但是这种方式主节点复制压力较大&#xff0c;尤其是全量同步的时候。 级联结构使用情况相对较少&#xff0c;这种结构中间…

前端AST详解,手写babel插件

&#x1f431;个人主页&#xff1a;不叫猫先生 &#x1f64b;‍♂️作者简介&#xff1a;专注于前端领域各种技术&#xff0c;热衷分享&#xff0c;关注我会给你带来一些不一样的认知和成长。 &#x1f4dd;个人签名&#xff1a;不破不立 &#x1f36c;本文目录&#x1f959;一…

C++课堂整理--第二章内容

提前声明&#xff1a; 本文内容为华北水利水电大学研究生C课程&#xff0c;如有 侵权请告知&#xff0c;作者会予以删除 1程序控制结构 语句是程序的基本语法成分。程序设计语言的语句按功能可以分成三类&#xff1a;声明语句 指示编译器分配内存&#xff0c;或者提供程序…

Windows服务器配置证书

以windows server 2012为列 1.打开服务器管理器 2.添加角色和功能 3.点击下一步 4.继续下一步 5.继续下一步 6.选择证书服务 7.添加该功能 8.继续下一步 9.继续下一步 10.继续下一步 11.添加证书颁发机构和证书颁发机构web注册 &#xff0c;然后点击下一步 12.点击安装 13.再次…

Linux|centos二进制方式安装系统和网络监控神器prometheus+grafana(装逼神器它来了)

Prometheus简单介绍&#xff1a; Prometheus使用Go语言开发&#xff0c;是Google BorgMon监控系统的开源版本&#xff0c;怎么产生的就不在这讨论了&#xff0c;反正就是香&#xff0c;简单易用。 2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing F…

apache-atlas-hive-hook-源码分析

Atlas Hook类图 Hive 元数据变更有2种实现&#xff1a; 1)基于 Hook 函数实现&#xff0c;实现类为 HiveHook 2)基于MetaStoreEventListener 实现&#xff0c; 实现类为HiveMetastoreHookImpl 所以提供2 种配置&#xff0c;即配置钩子函数或监听器&#xff0c;我们目前采用的是…

nvm包管理工具下载安装

1&#xff0c;去github官网&#xff0c;输入nvm-windows&#xff0c;点击第一个nvm项目&#xff0c;在右侧点击releases,选择箭头指向的安装包 2&#xff0c;下载很快&#xff0c;但是安装前&#xff0c;得先卸载本机的nodejs,并且为nvm的包创建一个英文文件夹&#xff0c;…

Java---Map双列集合

目录 一、双列集合的介绍 二、Map的使用 1&#xff1a;Map中常见的API &#xff08;1&#xff09;put方法 &#xff08;2&#xff09;remove方法 2&#xff1a;Map的遍历 &#xff08;1&#xff09;通过键找值的方式遍历 &#xff08;2&#xff09;通过键值对对象遍历 &…

FRNet代码

代码目录简简单单&#xff0c;令人心旷神怡。 模型框架&#xff1a; 数据增强包括; 接着看一下数据集&#xff1a; import os from PIL import Image import numpy as np from sklearn.model_selection import train_test_splitimport torch import torch.utils.data as da…

Tomcat+Maven+Servlet安装与部署

文章目录前言一、Tomcat8下载安装二、MavenServlet部署1.创键Maven项目&#xff08;idea2021community&#xff09;2.pom.xml下引入servlet依赖3.main下创建webapp/WEB-INF/web.xml4.验证HttpServlet是否导入&#xff08;配置WebServlet路径&#xff09;5.手动打包web项目6.浏览…

DAMA-CDGA/CDGP数据治理认证包括哪几个方面?

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

【夯实Kafka知识体系及基本功】分析一下消费者(Consumer)实现原理分析「原理篇」

Consumer消费者 消费者可以从broker中读取数据。 一个消费者可以消费多个topic中的数据&#xff08;其中一个partion&#xff09;。 Consumer Group&#xff08;消费组&#xff09; 每个Consumer属于一个特定的Consumer Group。 可为每个Consumer指定group name&#xff0c…

自动驾驶--定位技术

[整理自百度技术培训中心课程](https://bit.baidu.com/products?id70) 为什么无人车需要精确的定位系统 在地下车库实现自动泊车的一个非常关键的技术是什么呢&#xff1f;那就是定位技术。 为什么无人车需要一个精确的定位系统。为什么无人车需要精确的定位系统&#xff…

网络线缆连接器和线槽

一、信息插座 1、信息插座简介 信息插座是终端(工作站)与水平干线子系统连接的接口,在水平干线子系统中双绞线的两 端是直接压接到配线架和信息插座中的,不需要跳线。 2、信息插座的配置 综合布线系统的设计,应该根据实际情况确定 所需信息插座个数和分布位置,也就决…

计算机的另一半

本篇先介绍了计算机中数字编码&#xff0c;地址的概念。然后介绍了组成计算机的另外一半内容&#xff0c;也就是CPU&#xff0c;和前面的计算机一半合起来就可以组成一个简易版的计算机了。至此终于大概看到了计算机的全貌。 数字编码系统 这里我们简单说一下计算机里数字编码…