JSP中的Cookie
Posted XiaoFanMi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP中的Cookie相关的知识,希望对你有一定的参考价值。
Cookie概念
通过cookie对象,可以从服务器端向客户端响应一些信息,这些信息可以存储在浏览器的内存中,浏览器关闭,数据就不存在.
可以给cookie中的信息设置有效时间,就可以保存在电脑硬盘上,到期后自动删除
Cookie是保存在客户端的小文本,保存的位置分两种
–Cookie可以保存在客户端浏览器的所占内存中,关闭浏览器后,Cookie就不再存在。
–Cookie也可以保存在客户PC机的硬盘上,设置有效时间,超过有效时间后失效。
在ServletAPI中,存在类Cookie,可以使用new关键字创建cookie对象
方法名称 | 说 明 |
---|---|
setMaxAge(int expiry) | 设置Cookie的有效期,以秒为单位,Cookie保存在硬盘上,否则保存在内存中 |
setValue(String value) | 在Cookie创建后,对Cookie进行赋值 |
getName() | 获取Cookie的名称 |
getValue() | 获取Cookie的值 |
getMaxAge() | 获取Cookie的有效时间,以秒为单位 |
可以用来记住密码,简化登录
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet(name = "login", urlPatterns = "/login")
public class servlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
try {
String account = req.getParameter("account");
String password = req.getParameter("password");
String ck = req.getParameter("ck");//是否记住账户密码的标记
if (checkDao.link(account, password)) {
if (ck != null) {
//创建cookie对象,封装数据,tomcat9之后可以直接存储中文
Cookie acccok = new Cookie("acccok", account);
Cookie pwdcok = new Cookie("pwdcok", password);
acccok.setMaxAge(3600 * 24 * 7);
pwdcok.setMaxAge(3600 * 24 * 7);
resp.addCookie(acccok);
resp.addCookie(pwdcok);
}
//在servlet中获取session
HttpSession session = req.getSession();//从请求对象中获得与之对应的session
session.setAttribute("account", account);
resp.sendRedirect("success.jsp");
out.print("登陆成功");
} else {
req.setAttribute("msg", "账户或密码错误");
resp.sendRedirect("login.jsp");
}
} catch (Exception e) {
e.printStackTrace();
resp.sendRedirect("500.jsp");//只跳转页面,不进行数据的传输
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getSession().invalidate();
resp.sendRedirect("login.jsp");
}
}
通过java获取cookie中的账户和密码实现记住密码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<script src="js/jquery.1.8.3.min.js" type="text/css"></script>
<script type="text/css">
</script>
</head>
<body>
<%--
在login.jsp页面中有两种方式获得cookie中的数据
1.在服务器端 java
2.在浏览器中 js
--%>
<%-- 在服务器端 java --%>
<%
String account = "";
String password = "";
Cookie[] cookies = request.getCookies();
if (cookies != null){
for (Cookie cookie:cookies ) {
if (cookie.getName().equals("acccok")){
account = cookie.getValue();
}if (cookie.getName().equals("pwdcok")){
password = cookie.getValue();
}
}
}
%>
<form action="login " method="post">
账户:<input type="text" name="account" value="<% out.print(account); %>"><br>
密码:<input type="password" name="password" value="<% out.print(password); %>"> <br>
<input type="submit" value="登录">
记住密码:<input type="checkbox" name="ck" value="ck">
</form>
</body>
</html>
在浏览器中 js 获取cookie中的账户和密码实现记住密码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<script src="js/jquery.1.8.3.min.js" type="text/css"></script>
<script>
$(function () {
var arr = document.cookie.split(";");
for (let i = 0; i < arr.length; i++) {
var str = arr[i];
var strarr = str.split("=");
if (strarr[0] == "acccok") {
$("#acountId").val(strarr[1]);
}
if (strarr[0].trim() == "pwdcok") {
$("#passwordId").val(strarr[1]);
}
}
})
</script>
</head>
<body>
<%out.print(request.getAttribute("msg"));%>
<form action="login " method="post">
账户:<input type="text" name="account" value="" id="acountId"><br>
密码:<input type="password" name="password" value="" id="passwordId"> <br>
<input type="submit" value="登录">
记住密码:<input type="checkbox" name="ck" value="ck">
</form>
</body>
</html>
以上是关于JSP中的Cookie的主要内容,如果未能解决你的问题,请参考以下文章