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+' 问下如何解决?
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+' 问下如何解决?
psmt.setString(1,username);
psmt.setString(2,password);
这个语句你能通过?
("select * from userInfo where username= '"+username+"' and password='"+password+"'");
根据你的语句先这样写了
第一种方法:
"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.*; )
代码思路:先使用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"))
ResultSet sqlRst= ;
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() )
又该如何啊?
去找mysql的1个jar文件放在tomcat的common\lib目录下ps:应该先去百度一下问题