首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

jsp有关问题,菜鸟求救

2011-11-27 
jsp问题,菜鸟求救!最近在做毕业设计,一个B/S结构jsp程序.在我的一个页面a.jsp%@pagecontentType text/h

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 把业务逻辑也写到页面了 ,。 不看了 好乱 。。
[解决办法]
我仔细看看,代码还是蛮多的!!

热点排行