package com.servlet; 
import java.io.*; 
import java.sql.*; 
import java.net.*; 
import javax.servlet.*; 
import javax.servlet.http.*; public class Login extends HttpServlet 

public void doGet(HttpServletRequest request,HttpServletResponse response) 
throws IOException,ServletException 

response.setContentType("text/html;charset=gb2312"); 
PrintWriter out = response.getWriter(); 
String username = request.getParameter("username"); 
String password = request.getParameter("password"); 
Cookie cookie=null; 
Cookie[] cookies=request.getCookies(); try{ 
Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
conn=java.sql.DriverManager.getConnection ("jdbc:mysql://localhost:3306/userdatabase","root",""); 
sqlStmt=conn.createStatement (java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); 
//String str1=sqlStmt.getString("username"); 
//String str2=sqlStmt.getString("password"); //在userdatabase数据库的userInfo表中输出用户名. 
sqlRst=sqlStmt.executeQuery("select * from userInfo where username="'+username+'"and password="'+password+'""); 
if(sqlRst.next()){ 
if(cookies!=null){ 
for(int i=0;i<cookies.length;i++){ 
if(cookies[i].getName().equals("username")){ 
System.out.println("你已经登陆!"); 

cookie=cookies[i]; 
}//for结束 

if((cookies==null)||(!cookie.getName().equals("username"))){ 
int maxAge=3600; //1小时(3600秒)cookie存活期 
cookie=new Cookie("username","username"); 
cookie.setMaxAge(maxAge); 
response.addCookie(cookie); 

response.sendRedirect("../../../userInfo/index.jsp"); 

else{ 
response.sendRedirect("../../../userInfo/login.html"); 
} }catch(java.sql.SQLException e){ 
out.println(e.toString()); 
} } 
public void doPost(HttpServletRequest request,HttpServletResponse response) 
throws IOException,ServletException 
{ doGet(request,response); 
} } //Login.java结束 错误提示:Invalid character constant(无效的字符常量),出错的地方为:sqlRst=sqlStmt.executeQuery("select * from userInfo where username=" '+username+' "and password=" '+password+' "");中的 '+username+' 问下如何解决?

解决方案 »

  1.   

    "select * from userInfo where username = '" + username + "' and password = '" + password + "'"或者使用PreparedStatement psmt = conn.prepareStatement("select * from userInfo where username = ? and password = ?");
    psmt.setString(1,username);
    psmt.setString(2,password);
      

  2.   

    ("select * from userInfo where username=" '+username+' "and password=" '+password+' "");
    这个语句你能通过?
    ("select * from userInfo where username= '"+username+"' and password='"+password+"'");
    根据你的语句先这样写了
      

  3.   

    楼上的,你说的第一种方法的单引号和双引号是这样标吗?如下:
    第一种方法:
    "select * from userInfo where username = '  " + username + "  '  and password = '   " + password +  "  '  " 
    怎么提示的错误还是一样的啊?第二种方法:
    按照你的方法改动了,改动部分为(如下所示):try{
    Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    conn=java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/userdatabase","root","");
    PreparedStatement psmt = conn.prepareStatement("select * from userInfo where username = ? and password = ?"); 
    psmt.setString(1,username); 
    psmt.setString(2,password);
    //String str1=sqlStmt.getString("username"); 
    //String str2=sqlStmt.getString("password"); //在userdatabase数据库的userInfo表中输出用户名.
    sqlRst=psmt.executeQuery();问题更多了,列表如下:
    conn cannot be resolved          Login.java(代码段:conn=java.sql.DriverManager.getConnection  
                                                     ("jdbc:mysql://localhost:3306/userdatabase","root","");) 
    conn cannot be resolved          Login.java(代码段:conn.prepareStatement("select * from userInfo where username = ? and 
                                                      password = ?"); ) 
    sqlRst cannot be resolved        Login.java(代码段:sqlRst=psmt.executeQuery();)
    sqlRst cannot be resolved        Login.java(代码段: if(sqlRst.next())  )
    The import java.net is never used    Login.java(代码段:import java.net.*; )
      
      

  4.   

    帮忙看下我完整的代码是否正确,可能是其他地方引起的问题也说不定~
    代码思路:先使用if(sqlRst.next())结果集验证登陆页面login.html中表单提交的用户名和密码是否存在于数据库中,存在则继续判断用户名是否写入cookie,不存在则重新跳转到原登陆界面login.html;
    <1>if(sqlRst.next())为true的情况:(两种情况)
        (1)用户名cookie不为空且用户名存在在cookie中:
                  提示"你已经登陆"并跳转到index.jsp页面;
        (2)cookie为空或cookie不为空但用户名不存在在cookie中: 
                  写入cookie并跳转到index.jsp;
    <2>if(sqlRst.next())为false的情况:直接跳到login.html页面;(("../../../userInfo/login.html"))
      

  5.   

    conn 是不是 应该声明一下 Connection conn=.......
      

  6.   

    谢谢~加了Connection,解决了conn cannot be resolved的问题,那么其他的三个呢?(第二种改法)          
      

  7.   

    import java.net.*; 去掉
    ResultSet  sqlRst= ;
      

  8.   

    import java.net.*; 去掉 
    ResultSet  sqlRst=这样处理以后,新的问题出现了,看下面:
    Unhandle exception type ClassNotFoundException  (错误处:Class.forName("org.gjt.mm.mysql.Driver")  )
    Unhandle exception type IllegalAccessException  (错误处:Class.forName("org.gjt.mm.mysql.Driver").newInstance() )
    Unhandle exception type InstantiationException  (错误处:Class.forName("org.gjt.mm.mysql.Driver").newInstance() )
    又该如何啊?
      

  9.   


    去找mysql的1个jar文件放在tomcat的common\lib目录下ps:应该先去百度一下问题
      

  10.   

    - -,我用的工具不是tomcat啊~是lomboz.3m7;放什么jar文件?要百度什么啊?
      

  11.   

    我用的服务器是JBoss3.08,使用JDBC连接数据库的驱动是mysql-connector-java-3.0.11-stable-bin.jar,我把这个.jar放到JBoss_Home\\server\all\lib目录下,异常提示还存在,还会是什么原因呢?