码迷,mamicode.com
首页 > Web开发 > 详细

为什么 jsp页面获取到的dataurl会变成unknow

时间:2020-01-17 22:51:39      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:字符串   一点   数据   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作用域 (表示当前页面) ----->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;width:60px;height:60px;">

 

至此,问题已经解决。

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

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

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

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

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

为什么 jsp页面获取到的dataurl会变成unknow

标签:字符串   一点   数据   mic   auth   src   指定   回忆   页面   

原文地址:https://www.cnblogs.com/ABKing/p/12207709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!