调试Business项目心得

一、SQLServer2000出现了问题:在数据库-附加数据库时候出现了“未能找到存储过程master.dbo.xp_dirtree”的错误。

解决方法如下:

分析原因:通过安全工具,为了数据库安全,把一些不常用的存储过程给删除了。

通过搜索查询到下面的解决方法


解决方法:
把恢复数据库需要用到的存储过程个恢复,打开MSSQL查询分析器,分别运行下面的两条数据库语句即可.
EXEC sp_addextendedproc xp_dirtree ,@dllname ='xpstar.dll'
EXEC sp_addextendedproc xp_fileexist ,@dllname ='xpstar.dll'

二、Web项目调试

1、修改连接数据库的语句:包括驱动的修改,连接语句的修改等。分别在com.bwm.db中,针对两个类进行了修改。

2、我用一个账号,登陆了进去,进行购买商品,却提示商品不存在。

这时发现了问题的症结就是:出现了冗余的中文乱码处理的代码:

//String temp=chr.toChinese(request.getParameter("buy1"));
 //System.out.println("buy1=:"+request.getParameter("buy1"));
 //System.out.println("temp=:"+temp);
 String temp =request.getParameter("buy1");

 

经过测试发现,问题得到了解决。

3、但是控制台仍然弹出报错信息:“java.sql.SQLException: Io 异常: Socket closed”,这时我还是耐心去检查连接数据库的那个类,也就是 Condb.java

public void close(){
  try{
   if(rs!=null)
    rs.close();
  }catch(Exception e){
   System.out.println(e);
  }
  System.out.println("调整了关闭顺序!。。。。");
  try{
   if(con!=null)
    con.close();
  }catch(Exception e){
   System.out.print(e);
  }
  
 }

原文中,先是关闭了con,后来关闭的rs,因此不断地出现  socket closed的错误。

调整了关闭顺序之后问题得到了解决。

4、问题又发现了一个就是 在购物车的处理存在“商品名称”、“商品价格”显示为空的问题:这个需要再进一步测试,发现其中的问题所在。

问题原因仍然是,对中文乱码进行了冗余处理。

(usr/add.jsp)

//String pn=chr.toChinese(request.getParameter("pname"));
 String pn= request.getParameter("pname");
 //System.out.println("pname=:"+request.getParameter("pname"));

修改后问题得到了解决。

5、程序重新发布出现了这样的报错信息。

警告: Cannot serialize session attribute shop for session 5AF10B93507AFA5ADA66A543AE8D9C05
java.io.NotSerializableException: com.bwm.cart.buyList

 

public class buyList implements Serializable ,做了一个实现Serializable接口,问题得到了解决。

6、严重的问题如下:使用管理员账号admin/1登陆后台进行管理发现:

在处理订单的处理的时候出现了如下问题

第一行的商品点击了对勾以后,所有的此订单下面的商品与这个订单,在订单信息管理下就不能够看到了。这显然是不符合逻辑的。订购的商品肯定要一条条来处理。

(1.)、修改保存订购商品信息得表:tb_Shop表的结构,增加一个int型的字段flag。0表示没有被处理,1表示已经被处理了。

(2)在所有涉及到tb_Shop表的所有jsp页面中,注意进行修改,特别是sub/manage.jsp修改增加单据的代码信息”

String str="insert into tb_Shop(Subid,Warename,Price,Wsum,Wcount)values('"+subid+"','"+warename+"','"+price+"','"+number+"','"+number*price+"',0,)";

(3)admin/shop.jsp中增加代码如下:

<title>订单显示页<%request.setCharacterEncoding("GB2312");%></title>

用于处理中文乱码

另外增加传递的参数:

<%String warename=rs.getString(2);
    System.out.println("warename:="+warename);
   // request.setAttribute("warename",warename);
     %>

 

<input type="hidden" name="warename" value="<%=warename%>">  在admin/execu.jsp可以接受到此参数。

 

(4)admin/execu.jsp增加相应的处理逻辑,在一个订单里面的所有商品都处理完成后,增加对此订单标记的修改为1,这样此订单,在订单信息管理页面也就是(admin/spif.jsp)中就可以没有此信息。:

 

if(execu==null){
  sql="update tb_Sub set Spif='"+0+"' where Subid='"+number+"'";
 }else if(execu.equals("on")){
  sql="update tb_Shop set flag="+1+" where Subid='"+number+"' and Warename='"+warename+"'";
  //sql1="select * from tb_Sub where  "
     System.out.println("sql=:"+sql);
 }
 int temp=con.executeUpdate(sql);
 
 if(temp>0){
 sql1="select * from tb_Shop where Subid='"+number+"' and  flag=0";
 ResultSet rs=con.executeQuery(sql1);
 if(!rs.next())
 {sql="update tb_Sub set Spif='"+1+"' where Sub='"+number+"'";
  con.executeUpdate(sql);
 }

 

仍然存在着问题,下面的不起作用,需要关于checkbox的代码进行研究。

在ShoppingBook项目里面正好有个类似的功能的实现,参照实现代码:如下:

在 shop.jsp中修改:

function check(){
   
     var sends = document.getElementsByName("execu");
   
   var warename;
   //alert(sends.length);
   for(var i = 0;i<sends.length;i++) {
    if(sends[i].checked) {
    
    warename= sends[i].value;
    
    break;
    }
    
   }
  
  //var oform = document.getElementsByTagName("form")[0];
  //document.write(oform.name);
  //oform.aciton="execu.jsp?warename="+warename;
  //oform.submit();
  document.form1.action="execu.jsp?warename="+warename;
  document.form1.submit();
 }

 

实现了此功能,并且还配合做了其他修改。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值