Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

求救:为什么jsp里用不了if else

0 views
Skip to first unread message

熊狗

unread,
Jan 31, 2006, 3:32:11 AM1/31/06
to
程序的代码如下,是调用javabean执行一个简单的多条件查询
问题处在用//标出的if-else选择语句
没有这个语句的话运行是OK的,但是加了就出现如下错误:
[javac] symbol : variable b
[javac] location: class org.apache.jsp.select_info_jsp
[javac] String sql="select * from STU_INFO_TAB where "+a+b;
相当于这段if程序根本没有执行,很费解,向大虾求救!!


<%@ page contentType="text/html;charset=gb2312"%>
<%@ page language="java" import="java.sql.*" import="test.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>查询</title>
</head>
<body>
<jsp:useBean id="Bean_id" scope="page" class="test.MyJavabean"/>
<%
String name1=new String(request.getParameter("name1").getBytes("8859_1"));
String select1=new
String(request.getParameter("select1").getBytes("8859_1"));
String value1=new String(request.getParameter("value1").getBytes("8859_1"));
String name2=new String(request.getParameter("name2").getBytes("8859_1"));
String select2=new
String(request.getParameter("select2").getBytes("8859_1"));
String value2=new String(request.getParameter("value2").getBytes("8859_1"));
String logic2=new String(request.getParameter("logic2").getBytes("8859_1"));

String a=name1+select1+"'"+value1+"'";
//if (name2!=""){
String b=" "+logic2+" "+name2+select2+"'"+value2+"'";
//}
//else{
//String b="";
//}
String sql="select * from STU_INFO_TAB where "+a+b;

Bean_id.rsetQ=Bean_id.InQuery(sql);
%>
<tr>
<td width="158">&nbsp;</td>
<td width="558"><font color="#0000FF" face="隶书" size="5">查询结果</font></t
d>
</tr>
<table width="100%" align="center" class="test" border="1" cellspacing="1"
cellpadding="2">
<tr>
<td><div align="center"><b>学号</b></div></td>
<td><div align="center"><b>姓名</b></div></td>
<td><div align="center"><b>民族</b></div></td>
</tr>
<%
while(Bean_id.rsetQ.next())
{
%>
<tr>
<td><div align="center"><%=Bean_id.rsetQ.getInt("STUDENT_ID")
%></div></td>
<td><div align="center"><%=Bean_id.rsetQ.getString("NAME") %></div></td>
<td><div
align="center"><%=Bean_id.rsetQ.getString("NATIONALITY")%></div></td>
</tr>
<%
}
%>
</table>
<%
Bean_id.closeAll();
%>
</jsp:useBean>
</body>
</html>
--

[m [1;32m※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 60.26.46.31] [m

如何更加有效

unread,
Jan 31, 2006, 9:26:02 AM1/31/06
to

1. 注意你的b的声明范围.
2. String对象用equals方法进行比较.
3. 根本没有必要new String(...)

【 在 dogbare (熊狗) 的大作中提到: 】
: 程序的代码如下,是调用javabean执行一个简单的多条件查询


: 问题处在用//标出的if-else选择语句
: 没有这个语句的话运行是OK的,但是加了就出现如下错误:
: [javac] symbol : variable b
: [javac] location: class org.apache.jsp.select_info_jsp
: [javac] String sql="select * from STU_INFO_TAB where "+a+b;
: 相当于这段if程序根本没有执行,很费解,向大虾求救!!
: <%@ page contentType="text/html;charset=gb2312"%>
: <%@ page language="java" import="java.sql.*" import="test.*"%>
: <html>

: .................(以下省略)

--

还是wordpress好用啊
http:///cloudor.blogthing.com/

[m [1;35m※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 61.49.197.37] [m

恒星/好人好梦

unread,
Jan 31, 2006, 10:59:02 AM1/31/06
to
我是新手不是很懂,再问一下哈

现在问题是,除去带//的行,代码运行是没有问题得
但是只要用了if else,就报错了。
比如用

int c=3;
if(c>0){
b=……………………;
}
else
{
b="";
}
就会报同样的错误了,觉得奇怪就是为什么if,else用不了。
谢谢了!!!!!


【 在 cloudor (如何更加有效) 的大作中提到: 】
: 1. 注意你的b的声明范围.


: 2. String对象用equals方法进行比较.
: 3. 根本没有必要new String(...)
: 【 在 dogbare (熊狗) 的大作中提到: 】
: : 程序的代码如下,是调用javabean执行一个简单的多条件查询
: : 问题处在用//标出的if-else选择语句
: : 没有这个语句的话运行是OK的,但是加了就出现如下错误:
: : [javac] symbol : variable b
: : [javac] location: class org.apache.jsp.select_info_jsp
: : [javac] String sql="select * from STU_INFO_TAB where "+a+b;

: .................(以下省略)
--

[m [1;32m※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 221.198.31.50] [m

书中自有田馥甄

unread,
Feb 1, 2006, 1:07:38 AM2/1/06
to
b的生命周期在一对{}之后就结束了
【 在 frogwang (恒星/好人好梦) 的大作中提到: 】
我是新手不是很懂,再问一下哈

--
发信人: quanwei (冰~*~情歸齊魯), 信区: Qilu
标 题: Re: 2005.10.1 全家福
发信站: 饮水思源 (2005年10月01日21:15:57 星期六), 站内信件

hug~
[1;33m【 在 heartinsnow (离开,人离了心不开;等待,等成迫不及待) 的大作中提到: 】 [0;37m [m

[m [1;34m※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 61.152.202.34] [m

cometear

unread,
Feb 1, 2006, 1:24:31 AM2/1/06
to
"书中自有田馥甄" <heartin...@bbs.sjtu.edu.cn> 写入消息新闻:4MP3QS$9...@bbs.sjtu.edu.cn...
> b的生命周期在一对{}之后就结束了

您可能理解的是楼主只在条件语句的一个分支里定义了b,但当执行另一个分支的时候这个b就不在生命期里了,我同意. 但其实定义b的那个分枝根本没执行,也就是b根本就没定义.

另外关于变量在{}中定义,那么出了{}生命周期就结束了,在C++的语法中确实这样,
我一直也以为JSP是这样的,但是后来发现不知道为什么JSP的不是???而好像是在整个页面,

我也是最近才发现,没读过JAVA语法,具体也不太清楚什么情况.也许我看错了,找时间试验一下。

但是像楼主这样写:


if (name2!=""){
String b=" "+logic2+" "+name2+select2+"'"+value2+"'";
}

else
{
String b="";
}
编译器肯定是检查有问题的,虽然理论上这个b不会被重定义,但编译器不会考虑这么复杂,它不允许定义两次.
我想最好还是在if的上面定义变量b.


恒星/好人好梦

unread,
Feb 2, 2006, 4:09:11 AM2/2/06
to
能不能问一下,怎么修改生命周期呢?
谢谢谢谢!
【 在 heartinsnow (书中自有田馥甄) 的大作中提到: 】
: b的生命周期在一对{}之后就结束了
: 【 在 frogwang (恒星/好人好梦) 的大作中提到: 】
: 我是新手不是很懂,再问一下哈
: 现在问题是,除去带//的行,代码运行是没有问题得
: 但是只要用了if else,就报错了。
: 比如用
: int c=3;
: if(c>0){
: b=……………………;
: }
: .................(以下省略)
--

[m [1;32m※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 60.26.42.137] [m

cometear

unread,
Feb 3, 2006, 12:49:51 AM2/3/06
to
我想我错了,
JSP在{}中定义的变量,出了{}也就出了作用域了


cometear

unread,
Feb 3, 2006, 12:52:26 AM2/3/06
to
在条件语句之前定义变量.
我还没见过在分支语句之中定义同一个变量的


0 new messages