javaSE web開發 登陸思路代碼

準備工做:html

1.在WebContent  WEB-INF   lib下添加c3p0-0.9.5.2.jar     mchange-common-java-0.2.11.jar   ojdbc6.jarjava

2.java Resources中的src平級的添加c3p0-config.xmlweb

 

 

Java Resourcessql

src數據庫

三個包session

com.hanqi.dao       數據庫有關jsp

BankCard.java實體類    屬性 getter setter toString 有參構造 無參構造 ide

BankCardDAO.java   功能類  數據庫增刪改查工具

DBHelper.java      單例的數據庫工具類  返回數據鏈接   鏈接池 post

com.hanqi.service

BankCardService.java  業務邏輯類

com.hanqi.web      

CheckLoginServlet.java  

MyFilter.java        過濾器

 

WebContent

Login.jsp 登陸界面

Main.jsp 主頁面

 

Login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>


<form action="CheckLoginServlet" method="POST">

卡號:<input type="text" name="cardid" value=""><br>
密碼:<input type="password" name="password"><br>

<input type="submit" value="登陸">

</form>

</body>
</html>

CheckLoginServlet.java

package com.hanqi.web;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.hanqi.dao.BankCard;
import com.hanqi.service.BankCardService;

/**
 * Servlet implementation class CheckLoginServlet
 */
public class CheckLoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CheckLoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 接收參數
        String cardid = request.getParameter("cardid");
        String password = request.getParameter("password");    
        
        // 對get,post同時有效
        //cardid = new String(cardid.getBytes("ISO-8859-1"), "UTF-8");
            
        // 檢查參數
        if (cardid == null || password == null
                || cardid.trim().equals("") 
                || password.trim().equals(""))
        {
            response.getWriter().println("請正確登陸");
            
            response.setHeader("refresh", "3;url=Login.jsp");
        }
        else
        {            
            // 驗證參數
            // 調用Service層
            BankCard bc = new BankCardService().checkLogin(cardid, password);
            
            if (bc != null)
            {                
                // 建立session
                HttpSession hs = request.getSession();
                
                hs.setAttribute("bankcard", bc);
                
                // 跳轉
                response.sendRedirect("Main.jsp");
            }
            else
            {
                response.getWriter().println("卡號或密碼錯誤" + " cardid = " + cardid);
                
                response.setHeader("refresh", "3;url=Login.jsp");
            }            
        }
        
        
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

BankCard.java

package com.hanqi.dao;

import java.util.Date;

// 實體類
public class BankCard {
    
    private String cardID;
    private String userID;
    private String userName;
    private String password;
    private double balance;
    private String state;
    private Date createTime;
    public String getCardID() {
        return cardID;
    }
    public void setCardID(String cardID) {
        this.cardID = cardID;
    }
    public String getUserID() {
        return userID;
    }
    public void setUserID(String userID) {
        this.userID = userID;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public double getBalance() {
        return balance;
    }
    public void setBalance(double balance) {
        this.balance = balance;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public BankCard(String userID, String userName, String password) {
        super();
        this.userID = userID;
        this.userName = userName;
        this.password = password;
    }
    public BankCard() {
        super();
    }
    @Override
    public String toString() {
        return "BankCard [cardID=" + cardID + ", userID=" + userID + ", userName=" + userName + ", password=" + password
                + ", balance=" + balance + ", state=" + state + ", createTime=" + createTime + "]";
    }

    
}

BankCardDAO.java

package com.hanqi.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

// 數據庫操做類
public class BankCardDAO {
    
    //// 單條查詢
    public BankCard getBankCard(String cardid)
    {
        BankCard rtn = null;
        
        // 查詢
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        
        try {
            conn = DBHelper.getDBHelper().getConnection();
            
            String sql = "select * from t_bankcard where card_id = ?";
            
            ps = conn.prepareStatement(sql);
            
            ps.setString(1, cardid);
            
            rs = ps.executeQuery();
            
            if (rs.next())
            {
                rtn = new BankCard();
                
                rtn.setCardID(cardid);
                rtn.setBalance(rs.getDouble("Balance"));
                rtn.setCreateTime(rs.getDate("create_time"));
                rtn.setPassword(rs.getString("password"));
                rtn.setState(rs.getString("state"));
                rtn.setUserID(rs.getString("user_id"));
                rtn.setUserName(rs.getString("user_name"));
            }            
            
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally {
            
            try {
                rs.close();
            } catch (SQLException e2) {
            }
            
            try {
                ps.close();
            } catch (SQLException e1) {
            }
            
            try {
                conn.close();
            } catch (SQLException e) {
            }
            
        }        
        
        return rtn;
    }
    
    //////

}

DBHelper.java

package com.hanqi.dao;

import java.sql.Connection;
import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;

// 單例模式的數據庫工具類
// 返回數據庫鏈接
public class DBHelper {
    
    // 1 隱藏默認構造方法
    private DBHelper()
    {
        
    }
    
    // 2 靜態實例
    private static DBHelper dh;
    
    // 3 返回實例的靜態方法
    public static DBHelper getDBHelper()
    {
        if (dh == null)
        {
            dh = new DBHelper();
        }
        
        return dh;
    }
    
    private ComboPooledDataSource cpds = new ComboPooledDataSource("helloc3p0");
    
    // 返回鏈接的方法
    public Connection getConnection() throws SQLException
    {
        return cpds.getConnection();
    }
    
}

MyFilter.java

package com.hanqi.web;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
 * Servlet Filter implementation class MyFilter
 */
public class MyFilter implements Filter {

    /**
     * Default constructor. 
     */
    public MyFilter() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @see Filter#destroy()
     */
    public void destroy() {
        // TODO Auto-generated method stub
    }

    /**
     * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
     */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        // 設置編碼
        request.setCharacterEncoding("UTF-8");
        
        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");
        
        chain.doFilter(request, response);
    }

    /**
     * @see Filter#init(FilterConfig)
     */
    public void init(FilterConfig fConfig) throws ServletException {
        // TODO Auto-generated method stub
    }

}

BankCardService.java

package com.hanqi.service;

import com.hanqi.dao.BankCard;
import com.hanqi.dao.BankCardDAO;

// 業務邏輯類
public class BankCardService {
    
    // 驗證登陸方法
    public BankCard checkLogin(String cardid, String password)
    {
        BankCard rtn = null;
        
        // 獲得卡信息
        BankCard bc = new BankCardDAO().getBankCard(cardid);
        
        if (bc != null)
        {
            // 驗證數據有效性
            if (bc.getState().equals("1") 
                    && bc.getPassword().equals(password))
            {
                rtn = bc;
            }
        }        
        
        return rtn;
    }

}

Main.jsp

<%@page import="com.hanqi.dao.BankCard"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

主頁面  
<br>
<%

Object obj = session.getAttribute("bankcard");

if (obj == null)
{
    out.print("會話超時或未登陸");
    
    response.setHeader("refresh", "3;url=Login.jsp");
}
else
{
    BankCard bc = (BankCard)obj;
    
    out.print("歡迎登陸!" + bc.getUserName());
}

%>


</body>
</html>
相關文章
相關標籤/搜索