[jsp]常用範例-登入及檢查與登出

ConnectionPool.java

主要負責管理所有的資料庫連結,在DBInitServlet執行後會把DataSource給init完畢,之後只需要取用它就可以了。

package db;

import java.sql.SQLException;
import java.sql.Connection;
import javax.sql.DataSource;

public class ConnectionPool {
  private DataSource ds;
  private static ConnectionPool mySelf;

  private ConnectionPool(DataSource ds) {
  this.ds = ds;
  }

  public static void init(DataSource ds) {
  mySelf = new ConnectionPool(ds);
  }

  public static ConnectionPool getIstance() {
  if (mySelf == null) {
  throw new IllegalStateException("Pool not initialized.");
  }
  return mySelf;
  }

  public Connection getConnection() throws SQLException {
   
  return ds.getConnection();
  }
 
 
 
 
}

Prof.java

使用者資訊的類別檔,每一個登入成功的使用者,都會實體化一個class,然後加入Session裡

package user;

public class Prof {
  private String userid = "";
  public String getId()
  {
    return userid;
  }
  public void setId(String id)
  {
    this.userid = id;
  }
  
}

checkLogin部份程式碼

從登入Form接收輸入的帳號及密碼,並查詢資料庫是否存在,如果存在則new一個Prof物件,並把它存入session裡暫存。

String id = String.valueOf(request.getParameter("userID"));
  String passwd =
String.valueOf(request.getParameter("passWD"));
    if(id==null || passwd == null)
    {
      response.sendRedirect("index.jsp");
      return;
    }
    String sql =
"select id from user where id =? and passwd = ?";
    Connection con =
db.ConnectionPool.getIstance().getConnection();
    PreparedStatement ps = con.prepareStatement(sql);
    int i = 0 ;
    ps.setString(++i,id);
    ps.setString(++i,passwd);
  
    ResultSet rs = ps.executeQuery();
    if(rs.next())
    {
      Prof user = new Prof();
      user.setId(rs.getString(1));
      session.setAttribute("user",user);
    }
    else
    {
      response.sendRedirect("index.jsp");
      return;
    }

isLogin.jsp部份程式碼

取出session裡的Prof物件,如果取不到,則是未登入,如果不為null則是已登入成功狀態。

user.Prof user = (user.Prof)session.getAttribute("user");
  if(user == null )
    out.println("<h3>沒有登入!</h3>");
  else
    out.println("<h3>登入帳號是"+user.getId()+"!</h3>");

testLogin.jsp部份程式碼

跟前一個程式一樣,只是上一個是輸出告知狀況是登入或未登入,而此程式則是直接把使用者導向其它頁面。

user.Prof user = (user.Prof)session.getAttribute("user");
    if(user == null )
    {
      response.sendRedirect("index.jsp");
    return;
    }

資料庫的連線設定需更改\webapps\LoginDemo\WEB-INF\classes裡的 database.properties(用記事本開就可以了)

原始碼下載:

3 thoughts to “[jsp]常用範例-登入及檢查與登出”

  1. 版大你好
    看了這篇文章我感觸良多
    也想開始改寫看看
    請問 如果我要 INSERT 一筆資料 要怎麼做??

發表迴響