读书人

jsp有关问题,菜鸟求救

发布时间: 2011-11-27 21:54:21 作者: rapoo

jsp问题,菜鸟求救!
最近在做毕业设计,一个B/S结构jsp程序.在我的一个页面a.jsp
<%@ page contentType= "text/html;charset=gb2312 " %>
<%@ include file= "../importbao.jsp "%>
<%@ include file= "mysession.jsp "%>
<%
int id =(null==request.getParameterValues( "id ")?1:(Integer.parseInt(request.getParameter( "id "))));
String sql= "select * from t ";
sqlBean my = new sqlBean();
my.setConnection();
my.setQuerystatement(sql);
ResultSet Rst=my.getResult();
Rst.first();
Rst.previous();
%>
<script Language= "JavaScript ">
<!--
function check_input(frm)
{
...
}
//-->
</script>
该页面有一个表单
<tabale>
<form action= "b.jsp?id= <%=id%> " name= "frm " onsubmit= "return check_input(this) " method= "POST ">
表单里面有如下控件:

...
<select name= "cmd "> //自动从数据库获取选项
<%
while(Rst.next())
{
out.print( " <option value= ' ");
out.print(Rst.getString( "cname "));
out.print( " '> ");
out.print(Rst.getString( "cname "));
out.print( " </option> ");
}

%>
</select>
...
<input type= "checkbox " name= "chkb1~chkb12 " value= "1 "> 12个复选框,想实现选中为1,没选为0.
...
<input type= "submit " name= "Submit " value= "授权 ">
<input type= "reset " name= "Submit2 " value= "重置 ">
</tabale>

数据库中有一个t表,有一个cid(编号) int 4,cname(名称) varchar 20,还有crow1-crow12十二个tinyint型的字段,初始值我都给的0.

在b.jsp
<%@ page contentType= "text/html;charset=gb2312 " %>
<%@ include file= "../importbao.jsp "%>
<%@ include file= "mysession.jsp "%>
<%try{
String cmd = new String(request.getParameter( "cmd ").getBytes( "ISO8859_1 "), "GBK ");
int chkb1 = java.lang.Integer.parseInt(request.getParameter( "chkb1 "));
int chkb2 = java.lang.Integer.parseInt(request.getParameter( "chkb2 "));
...
int chkb12 = java.lang.Integer.parseInt(request.getParameter( "chkb12 "));
int id = Integer.parseInt(request.getParameter( "id "));

String sql= "update t set crow1= "+chkb1+ "set "+

"crow2= "+chkb2+ ",...crow12= "+chkb12+ " where cname= ' "+cmd+ " ' ";
sqlBean myUpdate = new sqlBean();
myUpdate.setConnection();
myUpdate.setQuerystatement(sql);
myUpdate.updateRecord();


%>
<html>
<head> </head>
<body> <table> 更新成功
<% out.print(cmd);
out.print(chkb1);
out.print(chkb2);
out.print(id);
%>
</table>
<%
}
catch(Exception e){
out.println( "出错: "+e.getMessage());

}%>


现在问题是:
问题一:

如果我没有全部勾选12个复选框就会显示异常: "出错 null "(通过测试知道应该是没有选中的话其值为null,被捕获了异常),于是我在function check_input(frm)中加入:
if(frm.chkb1.checked=false)
frm.chkb1.value= "1 "或1
if(frm.chkb1.value == 1或 "1 ")
{ alert( "检测 "); return (false);}
按提交测试时弹出了 "检测 "的对话框,我在if(frm.chkb1.checked=false)后加上{ alert( "检测 "); return (false);}注销掉后面的语句,在测试也弹出了同样的对话框,进一步证实了我的猜测,于是我第一复选框不选,用检测来复值 "0或1 ",其他都勾选,可还是 "显示出错 null "可见chkb1的值还是为空,可之前在a.jsp检测到赋予是给chkb1.value= "1 "或1时,弹出了对话框,chkb1= "0 "或0时也显示 "出错 null ",这个空值问题在这中方法下几乎无解了!急啊!

问题二:

我估计是id号这些东西没搞清,如果sql变为String sql= "select * from t where cid= "+id+ " ";是下拉菜单框不能弹出选项,框里只显示了第一项值比如 "房子 ",变量值是通过request.getparameter()得到的.
如果在a.jsp全部勾选复选框后,提交后则显示 "更新成功 ",并且显示了 "汽车 111(分别代表选中的菜单项值,chkb1,chkb2,id三个值) ",可是到数据库表中看,相应的那条记录并未被修改!这是怎么回事!真是屋漏偏逢连夜雨啊!眼见不久就要叫设计了,我的论文还没写,这只是系统中的一个小问题,还有好多要做的,心凉啊,请各为救急!

[解决办法]
大哥啊!这样太乱了啊!全都在JSP里写啊?最起码也得用JSP+JAVA BEAN+SERVLET啊?你这样的程序太乱了啊!完全没有层次,和ASP程序差不多了啊!
[解决办法]
问题一:
你的function check_input(frm)在什么地方触发执行的,我建议你改一下这个地方,而是将判断放到这里
=========================================================================
int chkb1 = java.lang.Integer.parseInt(request.getParameter( "chkb1 "));
int chkb2 = java.lang.Integer.parseInt(request.getParameter( "chkb2 "));
...
int chkb12 = java.lang.Integer.parseInt(request.getParameter( "chkb12 "));
int id = Integer.parseInt(request.getParameter( "id "));
============================================================================
或者你的submit 按钮这样写onclick = check_input(frm);,然后在函数function check_input(frm)中加上form.submit;

问题二::
这个建议你将你组好的sql用控制台打一下,然后考到查询分析器中跑一下,看看sql的执行结果


[解决办法]
LZ 你的update语句
update table_name set table_column1=value1,table_column2=value2……
[解决办法]
yun 把业务逻辑也写到页面了 ,。 不看了 好乱 。。
[解决办法]
我仔细看看,代码还是蛮多的!!

读书人网 >Java Web开发

热点推荐