一个空格引起的血案,记在servlet和mysql使用字符串的一次经验

      昨天使用数据库中的一段字段在jsp一个下拉列表<select></select>,然后选中该列表中某个项后,再去Servlet中去数据库查找相对应的数据进行表格显示,并将Servlet中获取到的刚刚选中项作为<select>列表中的缺省选中项刷新jsp页面。后来发现有时候下拉列表中会把选中的项作为缺省默认选中项,有时候不行,最开始怀疑是否是因为我在jstl中使用==来进行字符串判断的问题,后来发现不是,原来是最开始选中项的值与后来经过Servlet放回的值差个空格,从而导致==两边不一致,导致刚刚那个问题。

 后来想想原因大概是这样的,

 在Servlet中使用request.getParameter是自动将空格过滤掉,而在数据库mysql中空格是被忽略掉的,也就是你使用name="aa"和name="aa  "是一样的,查询出来的结果也是一样的。

 因此,以后在将数据存入数据库中,最好是要将前后空格都去掉,避免发生刚刚这种莫名其妙的问题。

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

刚刚又去测试了一下,发现上面的原因描述有点小问题,如果你使用form表单的post, action进行提交带有空格的值时,使用request.getParameter获取到的值,依然可以有空格,此时是可以的。

如果你使用的是window.location.href这种方式提交请求的时候,该空格会自动被去掉的。也就是request.getParameter获取到的值是没有空格的。

各位如果有时间可以运行下下面这段代码,就能立即明白:

first.jsp


<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.util.*" %>
<html>
<body>
<%
String name = request.getParameter("name");
if (name != null) {
%>
<%=name%>aaa
<%
}
%>
<form action="first.jsp" method="get">
<input type="text" name="name" value="123    " />
<input type="submit" name="submit" />
<input type="button" onclick="mysubmit('123   ')" value="getTest">
</form>
<script>
function mysubmit(name) {
alert(name+"aa");
window.location.href='first.jsp?name='+name;
}
</script>


</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值