《Cookie案例3》——————使用Cookie記錄登錄的用戶名,並用Session獲取到用戶名

 1.依舊是準備工作,導包,工具類

2.實體類

package com.offcn.bean;

public class User {
	
	private int id;
	private String username;
	private String password;
	
	public User(){
		
	}
	
	public User(int id, String username, String password) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	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;
	}
	
	

}

2.查詢數據庫

package com.offcn.dao;

import com.offcn.bean.User;

public interface UserDao {
	
	public User login(String username,String password);

}
package com.offcn.dao.impl;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import com.offcn.bean.User;
import com.offcn.dao.UserDao;
import com.offcn.utils.C3P0Utils;

public class UserDaoImpl implements UserDao {

	
	public User login(String username, String password) {
		
		User user = null;
		
		QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
		
		String sql = "select * from user where username=? and password=?";
		
		try {
			user = qr.query(sql, new BeanHandler<>(User.class),username,password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return user;
	}

}

 

3.主程序

package com.offcn.servlet;

import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.offcn.bean.User;
import com.offcn.dao.UserDao;
import com.offcn.dao.impl.UserDaoImpl;

public class LoginServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.doPost(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("utf-8");
		
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String record = request.getParameter("record");
		
		UserDao dao = new UserDaoImpl();
		User user = dao.login(username, password);
		
		if(user!=null){ //登錄成功
			
			HttpSession session = request.getSession();
			
			session.setAttribute("user", user);
			
			
			int num = Integer.parseInt(record);
			
			if(num!=0){  // 要記錄用戶名
				
				//中文字符不能存在Cookie,使用URLEncoder的encode方法進行格式化
				username = URLEncoder.encode(username, "UTF-8");
				Cookie c = new Cookie("username",username);
				c.setMaxAge(num*24*60*60);
				response.addCookie(c);
				
			}
			
			response.sendRedirect("index.jsp");
		}else{
			response.sendRedirect("login.jsp?msg=loginerror");
		}
		
	}

}

4.登錄頁面

<%@page import="java.net.URLDecoder"%>
<%@page import="com.offcn.utils.CookieUtils"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>
<%
      Cookie[] cs = request.getCookies();
      Cookie c = CookieUtils.findCookieByName(cs,"username");
   
      String username = "";
      if(c!=null){
    	  username = c.getValue();
    	  
    	  // 解碼
    	  username = URLDecoder.decode(username, "UTF-8");
    	  
      }
   %> 



   <div style="color:red">
      <c:if test="${param.msg=='loginerror' }">
                         用戶名或密碼錯誤
      </c:if>
      
      <c:if test="${param.msg=='pleaselogin' }">
                             請登錄
      </c:if>
      
   </div>


   <form action="${pageContext.request.contextPath }/LoginServlet" method="post">
      用戶名:<input type="text" name="username" value="<%=username %>" /><br/> 
     <%--用戶名: <input type="text" name="username" value="${cookie.username.value }" /><br/> --%>
      密碼: <input type="password" name="password" /><br/>
     記錄用戶名: <select name="record">
              <option value="0">不記錄</option>
              <option value="7">記錄7天</option>
              <option value="30">記錄30天</option>
          </select><br/>
     <input type="submit" value=" 登錄 " />     
   </form>
</body>
</html>

5.登錄成功跳轉頁面

<%@ 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>
  <h1>主頁,歡迎,${sessionScope.user.username }</h1>
</body>
</html>

 

發佈了156 篇原創文章 · 獲贊 13 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章