jsp中equals()方法比较字符串出错

ME_YOU 2010-03-18 08:49:06
请教一下各位,最近碰到一个问题,我在jsp中用equals()方法判断字符串是否相等总是出错,请大家帮忙看一下。
代码:
<%
request.setCharacterEncoding("gb2312");
String b=request.getParameter("hiddenField");
if(b.equals("sub")){
String s=request.getParameter("select");
String sql="";
if(s.equals("身份证")) {
sql="select * from UserInf where Identification='"+request.getParameter("num")+"'";
}
else sql="select * from UserInf where CardNum='"+request.getParameter("num")+"'";
try{
User u=User.getUser(sql);
session.setAttribute("user",u);
}
catch(UserNotFoundException e){
e.printStackTrace();
}
}

%>


color=#FF0000]错误:[[/color]
exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/CardLost.jsp at line 55

52: <%
53: request.setCharacterEncoding("gb2312");
54: String b=request.getParameter("hiddenField");
55: if(b.equals("sub")){
56: String s=request.getParameter("select");
57: String sql="";
58: if(s.equals("身份证")) {


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

java.lang.NullPointerException

...全文
2170 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
tizll521 2010-06-22
  • 打赏
  • 举报
回复
学习了 我说怎么用"".equals()怎么老出错 看来以后写的时候得改过来了
ME_YOU 2010-03-21
  • 打赏
  • 举报
回复
谢谢大家的帮忙!
luweiyuan01 2010-03-19
  • 打赏
  • 举报
回复 1
b.equals("sub")改"sub".equals(b)
s.equals("身份证")改"身份证".equals(s)

调用equals方法是一般用常量放在前面,变量放在后,反之容易出现空指针异常
ourswe 2010-03-19
  • 打赏
  • 举报
回复
一上回答都是正确的。
super_sealOne 2010-03-19
  • 打赏
  • 举报
回复
1楼正解!
longlikema 2010-03-19
  • 打赏
  • 举报
回复
很明显,空指针异常
在编程中多考虑空指针的问题
尽量避免出现类似错误
b!= null && "sss".equals(b)
xnbb9622 2010-03-19
  • 打赏
  • 举报
回复
要不换过来也可以,把if(s.equals("身份证"))这句改成if(!"".equals(s)&&s!=null&&s.equals("身份证"))也可以,原理一样,防止空指针
myylmyas1 2010-03-19
  • 打赏
  • 举报
回复
学习了,学的时候知道,但平时用时却没注意过!
VirusFu 2010-03-19
  • 打赏
  • 举报
回复
学习了 平时经常没有考虑到这个问题
zhouxuegangjava163 2010-03-19
  • 打赏
  • 举报
回复
你好,楼主!
很多时候都得注意空值的引用这个错误!
sun403 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wzju64676266 的回复:]
b.equals("sub")改"sub".equals(b)
s.equals("身份证")改"身份证".equals(s)
[/Quote]
支持一楼
要是判断空的话b!=null要作为第一个条件
liulu525800 2010-03-19
  • 打赏
  • 举报
回复
编程就要养成好的习惯,会减少很多麻烦
zyus1987 2010-03-19
  • 打赏
  • 举报
回复
调用equals方法是一般用常量放在前面,变量放在后,反之容易出现空指针异常
养成好习惯,这点比较重要~!
小竹林2014 2010-03-19
  • 打赏
  • 举报
回复
学习学习,有时候也遇到过
Angelhaoweiguang 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dong723232 的回复:]
引用 3 楼 me_you 的回复:
引用 1 楼 wzju64676266 的回复:
b.equals("sub")改"sub".equals(b)
s.equals("身份证")改"身份证".equals(s)


可以了,谢谢!可是请问一下,为什么不能反过来用呢?

这样能够防止出现空指针异常。因为b 和 s 有可能为null,而 "sub" 和"身份证" 永远不为null.……
[/Quote]

因为有可能你的b,s变量是null,这样null调用equals方法就会出错,而("sub")和("身份证")都永远不为空,就不会出错误,如果你非要反过来,就得加上判断,判断是否为null,主要是因为它是null,在内存中没有开辟空间,既然连空间都没有,你说它还能干什么?我没办营业执照,还卖黄色光盘,你说我会不会触犯法律?一样的道理
dom72 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 me_you 的回复:]
引用 1 楼 wzju64676266 的回复:
b.equals("sub")改"sub".equals(b)
s.equals("身份证")改"身份证".equals(s)


可以了,谢谢!可是请问一下,为什么不能反过来用呢?
[/Quote]
这样能够防止出现空指针异常。因为b 和 s 有可能为null,而 "sub" 和"身份证" 永远不为null.
xusheng1018 2010-03-18
  • 打赏
  • 举报
回复
String b=request.getParameter("hiddenField");
b为null吧?
ME_YOU 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wzju64676266 的回复:]
b.equals("sub")改"sub".equals(b)
s.equals("身份证")改"身份证".equals(s)
[/Quote]

可以了,谢谢!可是请问一下,为什么不能反过来用呢?
tanwan 2010-03-18
  • 打赏
  • 举报
回复
判断s和b是否取得内容...
wzju64676266 2010-03-18
  • 打赏
  • 举报
回复
b.equals("sub")改"sub".equals(b)
s.equals("身份证")改"身份证".equals(s)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧