zoukankan      html  css  js  c++  java
  • 为什么 jsp页面获取到的dataurl会变成unknow

    我的一个项目中,是把图片以dataurl的方式存入数据库中的,用户登录后,通过读取数据库中的信息来显示头像等相关信息。

    可是,发现一个比较奇特的现象,那就是dataurl会变成unknow

    如下图:

    src后面直接显示了unknow

    首先得明白一点,unknow的意思就是 空 ,也就是说,这里并没有获取到值

    可是经过我的debug调试,发现添加入session中的user是有img属性值的!

    也就是说,问题绝对出现在jsp页面里

    在我的jsp页面中,获取img的写法是这样的:

    1 <img class="layui-upload-img" id="picture" src="${user.img}" style="border-radius: 30px;60px;height:60px;">

    貌似看起来挺正常。。。。

    突然,我的脑子里回忆起著名的程序员 ABKing 曾经说过,jsp有四大作用域

    • page作用域 (表示当前页面) ----->pageScope (属性范围在EL中的名称)
    • request作用域 (表示一次客户端请求) ----->requestScope (属性范围在EL中的名称)
    • session作用域 (表示一次会话) ----->sessionScope (属性范围在EL中的名称)
    • application作用域 (表示整个Web应用的全局变量) ----->applicationScope (属性范围在EL中的名称)

    如果我没有限定作用域的话,会自动从page开始查找,依次向后。。。

    按理说,它应该会自动找到session作用域才对。。。问题到底出在哪里?

    一番查找,我发现在Controller层中,对于传入的参数,我直接使用了User

    1     @PostMapping("auth")
    2     public String auth(HttpSession session, User user){
    3           .......
    4         .......                         
    5     }

    也就是说,从登陆页面传入的username和password两个字符串,经过User类的构造方法,自动创建了一个user对象

    并且!这个对象在session域之前,也就是page作用域或request作用域中

    所以!当我没有指定session作用域时,系统从page域开始查找,已经查找到了user!而此时,img为空!

    如何解决这个问题呢?加上作用域即可:

    1 <img class="layui-upload-img" id="picture" src="${sessionScope.user.img}" style="border-radius: 30px;60px;height:60px;">

    至此,问题已经解决。

    那么,我想知道,通过构造方法传递的user对象,到底处于什么作用域中

    --------------------------------------------

    验证的方法很简单,在登陆页面传入的参数多增加一个img即可,参数值赋为123

    在主页面中,作用域依次改为pageScope和requestScope

    最终发现,它的作用域为requestScope!

    金麟岂是池中物,一遇风云便化龙!
  • 相关阅读:
    day02【Collection、泛型】
    day11 【final、权限、内部类、引用类型】
    day10 【接口、多态】
    day09 【继承、super、this、抽象类】
    day08 【String类、static关键字、Arrays类、Math类】
    Java基本运算符
    Java非访问修饰符
    2020学习Java开发有前途吗?看看资深程序员怎么说
    两年Java后端开发,面试了几十家公司的面试分享
    五种方法创建java对象,你知道几种呢?
  • 原文地址:https://www.cnblogs.com/ABKing/p/12207709.html
Copyright © 2011-2022 走看看