标签:字符串 一点 数据 mic auth src 指定 回忆 页面
我的一个项目中,是把图片以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;width:60px;height:60px;">
貌似看起来挺正常。。。。
突然,我的脑子里回忆起著名的程序员 ABKing 曾经说过,jsp有四大作用域
如果我没有限定作用域的话,会自动从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;width:60px;height:60px;">
至此,问题已经解决。
那么,我想知道,通过构造方法传递的user对象,到底处于什么作用域中
--------------------------------------------
验证的方法很简单,在登陆页面传入的参数多增加一个img即可,参数值赋为123
在主页面中,作用域依次改为pageScope和requestScope
最终发现,它的作用域为requestScope!
标签:字符串 一点 数据 mic auth src 指定 回忆 页面
原文地址:https://www.cnblogs.com/ABKing/p/12207709.html