【发布时间】:2016-04-23 19:50:29
【问题描述】:
我面临一个问题,我不知道它发生了什么.. 我在 JSP 页面中制作了一个小 scriptlet 来检查一个简单的条件,如果有会话,那么它会做一些事情,如果没有,它应该只是重定向页面。 但发生了什么我无法真正解释...... if 条件正在做一些非常奇怪的事情!
这是一个示例代码:
<%
boolean err = false;
if(session.getAttribute("id") != null)
{
cus_id = session.getAttribute("id").toString();
err=false;
}else err=true;
out.println(err);
if (err) out.println("<br>There is no session<br>");
//if(!err) ############ where it goes completely wrong.##############
if(1==2)
{
statement = "SELECT * FROM flight WHERE fl_code = '"+fco+"'";
flight = getData(statement);
statement = "SELECT * FROM tickets WHERE tik_cus_id ='"+cus_id+"' AND tik_fl_id ='"+flight[0][0]+"'";
ticket = getData(statement);
if(ticket.length == 0)
{
statement = "INSERT INTO tickets VALUES(null,'"+ session.getAttribute("id")+
"','"+flight[0][0]+
"','"+cls+"','"+seat+
"','"+adul+"','"+chil+
"','"+infa+"','"+pric+"','N')";
lastId = insertData(statement);
}
if(ticket.length==4) //if error occurs
{
out.println("<br><br>"+ticket[0]+"<hr>");
out.println(ticket[1]+"<br>");
out.println(ticket[2]+"<br>");
out.println(ticket[3]+"<br>");
}
response.sendRedirect("../../confirm.jsp?fco="+flight[0][0]);
} else out.println("no session");//else response.sendRedirect("../../login.jsp");
%>
当我指向的位置附近的条件是if(!err) 我得到这个错误
`rg.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 50 in the jsp file: /scripts/jsp/confirm.jsp
The local variable cus_id may not have been initialized
47: statement = "SELECT * FROM flight WHERE fl_code = '"+fco+"'";
48: flight = getData(statement);
49:
50: statement = "SELECT * FROM tickets WHERE tik_cus_id ='"+cus_id+"' AND tik_fl_id ='"+flight[0][0]+"'";
51: ticket = getData(statement);
52:
53: if(ticket.length == 0)`
这很明显,因为没有会话,并且cus_id 来自会话。
但是当我设置条件if(1==2) 时,输出如下:
true
There is no session
no session
如您所见,没有会话.. 我 100% 确定我没有会话,但是当条件为 if(!err) 时(所以当 err 为假时,没有会话时会触发错误)它会得到在里面,但是它清楚地输出存在错误,但它进入条件内部以尝试执行代码..但是当我输入if(1==2) 显然是错误的条件时它没有..
我尝试使用整数、字符串、字符,甚至双精度和浮点数,但每当一个变量进入条件时,它只是将其传递为真,而不是..但它会将if(1==2) 或其他类似条件识别为假。
这里发生了什么?这完全没有意义 我正在使用 Tomcat7 服务器,我已经玩了几个小时的代码,但从我的想法来看,它没有任何意义.. 我所有的尝试都是徒劳的
请帮忙
【问题讨论】: