• Java 查漏补缺



    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    # 传统访问

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 名称:@RestController
    • 类型:类注解
    • 位置:基于SpringMVCESTful来发控制器类定义上方
    • 作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解的组合功能。
    • 范例:
    @RestController
    public class UserController{
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 名称:@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";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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";
        }    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

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

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

    @GetMapping
    @PostMapping
    @PutMapping
    @DeleteMapping
    @PatchMapping
    
    • 1
    • 2
    • 3
    • 4
    • 5

    @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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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());
    
    • 1
    • 2
    • 3
    • 4

    6. 使用 @Slf4j 日志

    1. 添加pom依赖
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
            <version>1.7.25version>
        dependency>
      
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.18.22version>
        dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    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, 1000, 3000);
        return "定时任务已触发";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    8. SimpleDateFormat

    Date date=new Date();
    //Date时间
    System.out.println(date);
    //getTime
    System.out.println(date.getTime());
    //规范化
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    //Date -> String
    System.out.println(simpleDateFormat.format(date));
    //String -> Date (String必须符合simpleDateFormat的格式)
    System.out.println(simpleDateFormat.parse("1111年11月11日 11时11分11秒").toString());
    ---------------------------------
    Mon Nov 28 14:41:30 CST 2022
    1669617690850
    20221128144130Sat Nov 11 11:11:11 CST 1111
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    9. json

    看之前的笔记
    https://blog.csdn.net/qq_44627608/article/details/109214221
    其他大佬笔记
    https://blog.csdn.net/chuojiandi3387/article/details/100979365
    https://blog.csdn.net/cold___play/article/details/124525519

    10. Docker简单部署jar

    https://blog.csdn.net/yueyue763184/article/details/127761071

  • 相关阅读:
    【linux】shell 编程之流程控制语句详解
    flinksql读oracle写入mysql
    Element Plus 快速开始
    6.2 事件的创建,修改和删除
    有关git commit --amend的用法及若干个问题
    Vue/Nuxt框架开发的PC端网站兼容平板设备的
    httprunner3.x总结24 - hrun3常见的测试前置、测试后置处理
    基于单片机设计的气压与海拔高度检测计(采用MPL3115A2芯片实现)
    Java│蓝桥杯省赛真题星期一问题
    初阶数据结构学习记录——일곱 队列
  • 原文地址:https://blog.csdn.net/qq_44627608/article/details/127893154