<input type="text">中的value为null或"",有何区别
来源:互联网 发布:淘宝管控记录是干吗的 编辑:程序博客网 时间:2024/06/08 01:11
本人最近在亚信数据实习,有问题可以给我留言,随时交流
问什么突然查这个问题,因为在项目中遇到了,两个相差不多的模块,一个传的是null,而另一个传的是“”,而null是可以插入进数据库的,而“”是不可以的。所以有点迷惑,只有百度君来帮我下。
同时通过这个问题,也体会到了代码健壮性的重要
一般情况下我们是通过输入框来输入参数的。如果我们什么也没有输入,后面获取的就是null值。但是这个时候有一个问题,我们做软件不能认为用户总会按照我们认为正确的方式如乖乖的从文本框输入。我们的系统在发布的时候是不会知道用户是谁的,可能是一个什么也不知道的计算机文盲,也可能是黑客。如果是后者,他就会利用任何可能潜在的BUG来攻击我们的WEB。例如在URL里面传参。这个时候你也可能会说,如果我们定义成POST方式不就可以避免了吗?恩,这个时候我们的确可以避免URL传参,但我们并不能避免其他的方式。比如写一个伪页,向我们的后台提交请求。这个时候就是考验我们代码健壮性的时候了。他就可能会给我们的参数赋值一个“”而不是一个null。
再有一种可能就是我们在页面需要处理一些中间数据,这个时候我们可能会设置Text的值为“”,而不是让它是null。这样以来如果我们如果把这个提交到后台的话就会产生不可预知的错误。
总归一句话,这样做检查,就是为了让我们的代码更健壮。稳定性更强。
假设你接受的参数名为 str,他和 str = null 和str = "" 是两个概念。
1. str = null 的内存空间开辟过程如下:
开辟内存空间A, 存放参数名str, 其中它的指向为空,也就是说它没有指向任何内存空间。
2. str = ""的内存空间开辟过程如下:
开辟内存空间A,存放参数名str, 开辟内存空间B,将B得地址存放到A里面,也就是说str有了指向,且其指向为内存空间B. 但是B空间里面的值为空。也就是说是个空字符串。
综上两点的意思是
一个开辟了对象STRING, 但是没有任何值。str = ""
一个没有开辟对象STRING。str = null
以上了解以后我们就可以区分为什么要同时检测者两种情况了。
如果str为null,则说明该对象未创建,这个时候调用其方法(如str.length())的时候就会抛出空指针错误。
如果str为"",说明我们创建了对象,只是其值为空,这个时候调用其length方法就不会抛出异常。
为了应对上述可能出现的空指针异常,我们就需要同时判断上述的两种可能。
转自:https://zhidao.baidu.com/question/103108769.html
阅读全文
0 0
- <input type="text">中的value为null或"",有何区别
- <input type="text" value="">实现输入提示
- html中类似 <input type=“text” name="username[]" value="1">中的方括号的含义
- <input type="text" 鼠标移动去清空默认value onclick=javascript:this.value=''
- <asp:TextBox..>与<input type=text..>区别
- 获取表单中的所有Type为text的input,判断是否为空!
- 使用<input type="text" value=<%=str%>>出现取值不全的问题
- JS获取页面所有input type=“text”的ID和value
- JS获取jQuery获取当前<input type="text" />的value--通过测试了
- input type="submit" 和"button"有什么区别?
- input type="submit" 和"button"有什么区别
- input type="submit" 和"button"有什么区别?
- input type="submit" 和"button"有什么区别?
- input type="checkbox",选中或取消,将value存入隐藏域
- html中去掉文本框(input type="text")的边框或只显示下边框
- html中去掉文本框(input type="text")的边框或只显示下边框
- html中去掉文本框(input type="text")的边框或只显示下边框
- css style(about input type="text")
- WebSoket 全双工通信的应用协议理解和实例
- 【deeplearning.ai】Neural Networks and Deep Learning——浅层神经网络
- mysql事务的简单理解
- 手机号码界面输入数字查看手机信息
- 吴恩达深度学习课程笔记 1.2什么是神经网络?
- <input type="text">中的value为null或"",有何区别
- 什么是过拟合?
- kaggle常用笔记
- 虎嗅网数据爬取(Scrapy Splash)
- 段错误查找
- Struts2知识点回顾(总结)学习思维导图
- redis 主从配置
- Codeforces Round #430 (Div. 2) B. Gleb And Pizza
- 【工作感悟】Android 开发者,如何提升自己的职场竞争力?