首页 > 编程语言 >Day05-Java开发所需的前端技术

Day05-Java开发所需的前端技术

时间:2023-11-10 17:32:54浏览次数:28  
标签:Java name 前端 Day05 Host session pass return String

session原理(适用于单体的身份效验)

Http 无状态,有会话

  • 无状态是指,请求之间相互独立,第一次请求的数据,第二次请求不能重用
  • 有会话是指,客户端和服务端都有相应的技术,可以暂存数据,让数据在请求见共享

服务端使用了session技术来暂存数据

GET /s1?name=zhang HTTP/1.1
Host: localhost

GET /s2 HTTP/1.1
Host: localhost
Cookie: JSESSIONID=BF219FEFB6FF6960ODA2537CDDED6C393
    @RequestMapping("/s1")
    @ResponseBody
    public String s1(HttpSession session, String name) {
        session.setAttribute("name", name);
        return "数据已存储";
    }

    @RequestMapping("/s2")
    @ResponseBody
    public String s2(HttpSession session) {
        return "取出数据" + session.getAttribute("name");
    }

jwt原理(适用于分布式的登录校验)

生成token

GET /j1?name=zhang&pass=123 HTTP/1.1
Host: 1ocaThost

校验token

GET /j2 HTTP/1.1
Host: localhost
Authorization:
eyjhbGcioiJIuzIlNij9.eyJzdwIioijhzGlpbij9.G4Xp74sX4dEC-KIwhK2kRmj1w157nSAROOBMspQ-1o8
    @RequestMapping("/j1")
    @ResponseBody
    public String j1(String name, String pass) {
        Calendar instance = Calendar.getInstance();
        //令牌过期时间 20s
        instance.add(Calendar.SECOND,20);
        if ("zhang".equals(name) && "123".equals(pass)) {
            String token = JWT.create()
                    .withClaim("name", name)
                    .withClaim("pass", pass)
                    .withExpiresAt(instance.getTime())
                    .sign(Algorithm.HMAC256("BUTU"));
            return "验证身份通过"+token;
        }else {
            return "验证身份失败";
        }
    }

    @RequestMapping("/j1")
    @ResponseBody
    public String j2(@RequestHeader String authorization) {
        //通过签名生成验证对象
        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("BUTU")).build();
        DecodedJWT verify = jwtVerifier.verify(authorization);
        return "name:"+verify.getClaim("name")+"\n"+"pass:"+verify.getClaim("pass");

    }

标签:Java,name,前端,Day05,Host,session,pass,return,String
From: https://blog.51cto.com/u_15806490/8305434

相关文章

  • 纯前端操作文件?
    事情是这样的我发现vscode在线版居然可以打开文件目录和文件,还能保存文件。兼容性一般目前谷歌edgeOpera支持其他均不支持vscode.dev/查了一下MDN发现增加新的API了developer.mozilla.org/zh-CN/docs/…showDirectoryPicker这是一项实验性技术未来版本可能会发生变化作用......
  • JAVA分布式详解
    分布式系统是由多个独立的计算机(或计算节点)通过网络连接组成的系统,这些计算机共同工作以完成某个任务。在Java中,有许多工具和框架可以帮助开发者构建分布式系统。以下是一些与Java分布式系统相关的重要概念、技术和框架:JavaRMI(RemoteMethodInvocation):JavaRMI是一种用于创建分......
  • 设计模式 - Immutable 模式(Java不变集合类 vs Google Guava不变集合类)
    总结JDK中的unmodifiableList的构造函数是对原始集合的浅拷贝,而Guava.ImmutableList.copyOf是对原始集合的深拷贝 publicclassImmutableDemo{publicstaticvoidmain(String[]args){List<String>originalList=newArrayList<>();originalList.add("a"......
  • JAVA应用OOM OutOfMemoryError排查方法分享
    JAVA应用OOMOutOfMemoryError排查方法分享本地IDE场景如果OOM能在本地IDE复现,那对于调试来说是再方便不过了.添加jvm参数,帮助排查问题#限制内存不要给太大,使得有问题的代码容易暴露并调试。#HeapDumpOnOutOfMemoryError的意义为发生oom的时候,导出一份堆内存的快照。根......
  • JavaScript--定时器案例
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title><......
  • java的double、float类型的比较
    在java中,针对double、float类型的运算和比较都最好不要直接进行,可以依靠BigDecimal来进行一、比较大小转换成long再比较,(这是long是基本类型,而不是Long对象,对象比较不要用==)Double.doubleToLongBits(0.042421d)==Double.doubleToLongBits(0.2342401d)Double.doubleToL......
  • 北京前端五年经验问些什么?
    这一天,我瘫坐在办公室的椅子上,回想这五年的一事无成,钱也没赚到,技术也没学到,最近投了简历去面试,我一定要把握住,这是我此生仅有的机会了。穿好格子衫,带上假发,出发了。路上的植发广告格外亮眼,玩了会儿手机终于到了。某大型互联网公司,跟前台说了一下是面试的,然后让我填个表,填完去一个小......
  • 深入学习JavaScript ES8函数式编程:特性与实践指南
    ......
  • 前端存储:localStorage、sessionStorage
    IDE:HBuilderX3.8.12-- 序章前端存储数据的方式有以下几种:JavaScriptCookieWeb存储localStoragesessionStorageHTML5WebSQL数据库IndexedDB 本文测试其中的Web存储:localStorage、sessionStorage。添加数据查看数据普通数据JSON数据删除数据清......
  • 秦疆的Java课程:24 基础 数据类型扩展及面试题讲解
    1、整数扩展进制二进制数:0b开头八进制数:0开头十六进制数:0x开头publicclassDEMO1{publicstaticvoidmain(String[]args){//整数扩展:进制intA=10;intB=0b10;//二进制intC=010;//八进制intD......