登录网站访问数据库的过程中……Serevlet 代码如下package ser;import impl.AccountImpl;
import it.shopping.dao.IAccount;
import it.shopping.pojo.Account;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class AccountSer extends HttpServlet
{
   
 
   private IAccount accountImpl = new AccountImpl();
   
   private static final long serialVersionUID = -3708568559174453120L;
   
   public AccountSer()
   {
   super();
   }
 
public void destroy()
{
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{ this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException


String status = request.getParameter("status");
if(status.equals("login"))
{

Account account = new Account();
account.setAlogin(request.getParameter("alogin"));
account.setApass(request.getParameter("apass"));
 

 account =accountImpl.queryAccount(account);



if(account == null)
{
request.setAttribute("error", "登录失败");
request.getRequestDispatcher("/alogin.jsp").forward(request, response);
System.out.println("doPost is invoked");
}

else
{

          request.getSession().setAttribute("account", account);
          response.sendRedirect("/t31/admin/index.jsp");
          

}
}
}

 
public void init() throws ServletException
{
// Put your code here
System.out.println("init is invoked");
}}
访问数据库:
package impl;import java.sql.Connection;import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import utils.JdbcUtils;import it.shopping.dao.IAccount;
import it.shopping.pojo.Account;
public class AccountImpl implements IAccount
{ @Override
public Account queryAccount(Account account) 
{


 Account temp = null;
 Connection conn = null;
 PreparedStatement pre = null;
 String sql = "SELECT * FROM students WHERE alogin=? AND apass=?"; 
 ResultSet rs = null;
 
   try
   { 
 
conn = JdbcUtils.getConnection();
pre= conn.prepareStatement(sql); pre.setObject(1,"alogin");
pre.setObject(2,"apass");
System.out.println("pre is invoked");
rs = pre.executeQuery();
System.out.println(rs.getString(1));


 

 
if(rs.next())
{
 
 temp = new Account();
 temp.setAid(rs.getInt("aid"));
 temp.setAlogin(rs.getString("alogin"));
 temp.setApass(rs.getString("apass"));


}


    } catch (SQLException e){

e.printStackTrace();
}  finally{
JdbcUtils.free( rs,pre,conn); 
}  return temp;
}}
数据库工具类
package utils;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;/**
 * 
 * 2008-12-6
 * 
 * @author <a href="mailto:[email protected]">����</a>
 * 
 */
public final class JdbcUtils {
private static String url = "jdbc:mysql://localhost:3306/shopping";
private static String user = "root";
private static String password = "593295570dr"; private JdbcUtils() {
} static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
} public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
} public static void free(ResultSet rs, Statement pre, Connection conn) {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (pre != null)
pre.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
package it.shopping.pojo;public class Account
{ private int aid;
private String alogin;
private String apass;
public int getAid()
{
return aid;
}
public void setAid(int aid)
{
this.aid = aid;
}
public String getAlogin()
{
return alogin;
}
public void setAlogin(String alogin)
{
this.alogin = alogin;
}
public String getApass()
{
return apass;
}
public void setApass(String apass)
{
this.apass = apass;
}



}
package it.shopping.dao;import it.shopping.pojo.Account;public interface IAccount
{
 public Account queryAccount(Account account);
}

解决方案 »

  1.   


     public Account queryAccount(Account account) 
        {
            
        
             Account temp = null;
             Connection conn = null;
             PreparedStatement pre = null;
             String sql = "SELECT * FROM students WHERE alogin=? AND apass=?"; 
             ResultSet rs = null;
             
           try
           { 
             
            conn = JdbcUtils.getConnection();
            pre= conn.prepareStatement(sql);
     // 你的用户名和密码不是都放在account里的吗,怎么下面直接写死了?
            pre.setObject(1,"alogin");    // 是否是pre.setString(1,account.getAlogin());?
            pre.setObject(2,"apass");     // pre.setString(1,account.getApass());
      

  2.   


    System.out.println(rs.getString(1));这句删了!还是本来没有的,调试时加的,贴上来时忘删了?? 汗。
      

  3.   

    你传过来的是个对象,直接用它的属性怎么行呢,应该这样account.getAlogin());就行了