调试servlet程序遇到的问题

package com.tsinghua;

import javax.servlet.http.*;

import java.io.*;

import java.sql.*;

public class LoginCL2 extends HttpServlet{
 public void doPost(HttpServletRequest req,HttpServletResponse res){
   Connection conn=null;
   Statement st=null;
   ResultSet rs=null;

   try{
      String uname=req.getParameter("username");
      String upassword=req.getParameter("pw");
     //使用纯Java jdbc连接数据库
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    //得到链接
    conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=spdb","sa","dongaiqin2005");
    //创建statement
    st=conn.createStatement();
    //因为用户名在数据库中是不能重复的,记录是唯一的,
   //所以可以使用select top 1,让服务器如果找到一条对应的记录后,
    //就不再就需查找数据库,因为符合要求的记录最多有一条,如果继续查找数据库
     //也是做无用功,只会使效率降低
    rs= st.executeQuery("select top 1 * from users where  username='" + uname+ "'and passwd='" + upassword + "'" );
    if(rs.next()){
     //如果rs.next()为true,说明查到一条记录
     //将验证成功的信息写入session
     //1.获取session
     HttpSession hs= req.getSession(true);
    //修改session的有效时间,单位是 秒
    hs.setMaxInactiveInterval(20);
    //2.写入信息
    hs.setAttribute("password","true");
    res.sendRedirect("Welcom?UserName=" + uname+"&PassWord="+upassword);
    }else{
         res.sendRedirect("Login2");
    //res.sendRedirect("Login2");中参数是该servlet的访问时用的url
    }
 }catch(Exception e){
      e.printStackTrace();
  }finally{
          try{
                if(rs!=null){
                     rs.close();
                }
                if(st!=null){
                     st.close();
                }
                if(conn!=null){
                    conn.close();
                }
         }catch(Exception e){
              e.printStackTrace();
         }
    }
 }
 
 public void doGet(HttpServletRequest req,HttpServletResponse res){
     this.doPost(req,res);
 }
}

 

注:使用下面的语句,会存在sql注入问题

rs= st.executeQuery("select top 1 * from users where  username='" + uname+ "'and passwd='" + upassword + "'" )


注:在调试上述servlet时,遇到了问题,令我很烦恼,

问题1:字母的大小写

抛出异常

java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SqlServerDriver

解决方法:

发现驱动名写错,

com.microsoft.jdbc.sqlserver.SQLServerDriver

错写为

com.microsoft.jdbc.sqlserver.SqlServerDriver

问题2from语句附近有错误

解决方法:

发现select语句写错,

"select top 1 * from users where  username='" + uname

+ "'and passwd='" + upassword + "'"

错误1select top 1 *    语句中的*没写

而写为select top 1

错误2passwd写错,与数据库中的字段名不符

数据库中的字段名是 passwd

而在LoginCL.java中错写为password

注意:要想不抛出

java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver异常

还需要把sqlserver2000jdbc驱动程序

Msbase.jar,

mssqlserver.jar

msutil.jar

放在webapps/自己的web应用文件夹/WEB-INF/lib下面

或者放在tomcat安装目录/common/lib下面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值