java之cookie保存登錄信息下次登錄時自動填充表單

現在發現寫代碼不是最難的,天下代碼一通抄,看你會抄不會抄。。。


反而找問題纔是最難的,因爲不是所有的問題你都能找到,要麼就是不符合自己的問題需求,


要麼就是根本是錯的。。。好了,吐槽完畢!


------------------------------------------------一道華麗的波浪線-------------------------------------------------------------------


今天花了一早上的時間學習了一下cookie的使用,就是搞不懂各個文件之間的邏輯關係,什麼時候該創建cookie,在哪裏創建?什麼時候該調用cookie,在哪裏調用?


原理:登錄表單(假設是login.jsp,沒有用html文件,因爲要實現數據自動填充我們就需要java代碼,用一個變量保存數據,因此要麼用servlet(而且servlet需要嵌套html~麻煩),要麼用jsp)需要提交給servlert文件(假設是loginservlet.java),那麼就應該在servlet中創建cookie保存用戶信息並返回給瀏覽器:

String uname = request.getParameter("username");
		String key = request.getParameter("key");
		
		
		HttpSession session = request.getSession();//此處是獲取並存儲sessio值,不用管
		session.setAttribute("uname", uname);
		session.setAttribute("key", key);
		
		
		Cookie cookie = new Cookie("uname", uname);// 創建cookie
		response.addCookie(cookie);//添加到瀏覽器
		Cookie cookie2 = new Cookie("key", key);
		response.addCookie(cookie2);


好了,現在瀏覽器裏面存的有cookie了,下面我們要在登錄界面去調用它,判斷是否已經存儲的有相關信息,有的話自動填充到表單的屬性值value中(login.jsp的源代碼):


<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

String username =null;  //該變量就是下面表單中填充數據的值
String key = null;
Cookie[] cookies = request.getCookies(); //先從瀏覽器中取出cookie,沒有就是空
//String[] cookievulue = null;
 Map<String, String> cc = new HashMap<String, String>();  
for(int i=0;i<cookies.length;i++){
	String names = cookies[i].getName();
	String values = cookies[i].getValue();
	cc.put(names, values);
}
username = cc.get("uname");

//key = session.getAttribute("key").toString();
//session 可以直接用???

%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'Login.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
<link href="CSS/login.css" rel="stylesheet" type="text/css"/> <!--  調用css樣式          -->
  </head>
  
  <body>
    <form action="/demo_test/Loginservlet" method="post">
		<div id="Navigate">
		    <div id="Gap"></div>
			<div id="Uname">用戶名:<input type="text" id="text_uname" name="username" value=<%=username%>></div>
			<div id="Checknode">驗證碼:<img src="/demo_test/VlidateCode" id="image"/></div>
			<div id="Key">口令:<input type="text" id="text_key" name="key"></div>
			<div id="Submit"><input type="submit" value="提交"></div>
		</div>

	</form>
  </body>
</html>





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章