jsp中cookie
阿新 • • 發佈:2018-12-01
請求重定向,可以跳轉到工程外部資源,url發生改變
Cookie:
儲存cookie
Cookie c1 = new Cookie("uname", lname);
Cookie c2 = new Cookie("upass", lpass);
response.addCookie(c1);//向客戶端儲存cookie
response.addCookie(c2);//向客戶端儲存cookie
c1.setMaxAge(9999);//儲存cookie需要設定存活時間,不設定時間無法儲存
讀取cookie
讀取本網站客戶端中所有cookie資訊:
Cookie[] cs = request.getCookies(); for(Cookie item : cs ) { if(item.getName().equals("uname")){ uname = item.getValue(); } if(item.getName().equals("upass")){ upass = item.getValue(); } }
.getName() 讀取某個cookie的name值
.getValue() 讀取某個cookie的value值
所有網頁內容如下:
index.html:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> 請登入:<a href="login.jsp">登入</a> </body> </html>
login.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String uname = ""; String upass = ""; //讀取cookie Cookie[] cs = request.getCookies(); for(Cookie item : cs ) { if(item.getName().equals("uname")){ uname = item.getValue(); } if(item.getName().equals("upass")){ upass = item.getValue(); } } %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="/20181130/LoginServlet" method="post"> 使用者名稱:<input type="text" name="lname" value="<%=uname %>"><br> 密碼:<input type="password" name="lpass" value="<%=upass %>"><br> <input type="checkbox" name="rem">記住我 <input type="submit" value="登入"> </form> </body> </html>
LoginServlet:
package com.neuedu.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("tuf-8");
String lname = request.getParameter("lname");
String lpass = request.getParameter("lpass");
request.setAttribute("lname", lname);
if(lname.equals("admin")&&lpass.equals("123"))
{
//獲得rem是否勾選
String rem = request.getParameter("rem");
System.out.println(rem);
if(rem != null)
{
//如果rem不等於null,說面選中了記住,儲存cookie
Cookie c1 = new Cookie("uname", lname);
Cookie c2 = new Cookie("upass", lpass);
response.addCookie(c1);//向客戶端儲存cookie
response.addCookie(c2);//向客戶端儲存cookie
c1.setMaxAge(9999);
}
request.getRequestDispatcher("/welcome.jsp").forward(request, response);
}
else{
//請求重定向
response.sendRedirect("/login.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
welcome.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String lname = (String)request.getParameter("lname");
%>
<!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>
<div>
welcome,<%=lname %>
</div>
</body>
</html>
cookie的銷燬:
沒有辦法直接銷燬cookie,可以通過設定同名的cookie來覆蓋原有的cookie,起到銷燬的作用,cookie設定存活的時間不能設定為0,有些情況可能0代表永久,1即可,存活1秒