学习笔记之jsp状态管理之cookie
发布日期:2022-02-17 02:39:51 浏览次数:49 分类:技术文章

本文共 3709 字,大约阅读时间需要 12 分钟。

jsp状态管理

http协议的无状态性

无状态是指 当浏览器放松请求给服务器的时候,服务器响应客户端请求。但是当同一个浏览器再次发送请求给服务器的时候,服务器并不知道它就是刚才那个浏览器。
简单地说,就是服务器不会去记得你,所以就是无状态协议
保存用户的状态的两大机制:
Session
Cookie(客户端的技术)
什么是Cookie

Web服务器保存在客户端的一系列文本信息

1.判断是否已经登录网站(保存了登录信息)
2.购物车的处理
Cookie

  • 对特定对象的追踪
  • 保存用户网页浏览记录与习惯
  • 简化登录
    Cookie容易泄露用户信息

Jsp中创建与使用Cookie

创建Cookie对象

Cookie newCookie = new Cookie(String key,Object value)

写入Cookie对象

response.addCookie(newCookie);

读取Cookie对象

Cookie[]cookies=request.getCookies();

void setMaxAge(int expiry) 设置cookie有效期,以秒为单位

void setValue(String value)在cookie创建后,对cookie进行赋值
String getName()获取cookie的名称
String getValue()获取cookie的值
int getMaxAge()获取cookie的有效时间,以秒为单位

<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.net.*" %>  首页今天的日期<%= new java.util.Date().toString()%><%  request.setCharacterEncoding("utf-8");  String username="";  String password="";  Cookie[] cookies = request.getCookies();  if(cookies!=null&&cookies.length>0){    for (Cookie c:cookies){      if(c.getName().equals("username")){        username=URLDecoder.decode(c.getValue(),"utf-8");      }      if(c.getName().equals("password")){        password=URLDecoder.decode(c.getValue(),"utf-8");      }    }  }%>
用户名:
密码
是否保存信息
    Title  

登录成功


<% request.setCharacterEncoding("utf-8"); //首先判断用户是否选择了记住 String[] isUseCookies =request.getParameterValues("isUseCookies"); if(isUseCookies!=null&&isUseCookies.length>0) { //把用户名和密码保存在Cookie对象里面 String username = URLEncoder.encode(request.getParameter("username"),"utf-8"); String password =URLEncoder.encode( request.getParameter("password"),"utf-8"); Cookie usernameCookie = new Cookie("username",username); Cookie passwordCookie = new Cookie("password",password); response.addCookie(usernameCookie); response.addCookie(passwordCookie); usernameCookie.setMaxAge(864000); passwordCookie.setMaxAge(864000); } else{ Cookie[] cookies = request.getCookies(); if(cookies!=null&&cookies.length>0){ for (Cookie c:cookies){ if(c.getName().equals("username")||c.getName().equals("password")){ c.setMaxAge(0);//设置Cookie失效 response.addCookie(c);//重新保存 } } } } %> 查看用户信息
<%--  Created by IntelliJ IDEA.  User: HJCD  Date: 2020/5/16  Time: 11:44  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" import="java.net.*" %>    Title   

用户信息


<% request.setCharacterEncoding("utf-8"); String username=""; String password=""; Cookie[] cookies = request.getCookies(); if(cookies!=null&&cookies.length>0){ for (Cookie c:cookies){ if(c.getName().equals("username")){ username = URLDecoder.decode(c.getValue(),"utf-8"); } if(c.getName().equals("password")){ password = URLDecoder.decode(c.getValue(),"utf-8"); } } } %>
用户名:<%=username%>
密码:<%=password%>

以上3个jsp页面使用了cookie存储信息

在这里插入图片描述1.URLEncoder.encode(String s, String enc)
使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式

URLDecoder.decode(String s, String enc)

使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。

2.发送的时候使用URLEncoder.encode编码,接收的时候使用URLDecoder.decode解码,都按指定的编码格式进行编码、解码,可以保证不会出现乱码

3.主要用来http get请求不能传输中文参数问题。http请求是不接受中文参数的。

这就需要发送方,将中文参数encode,接收方将参数decode,这样接收方就能收到准确的原始字符串了。

转载地址:https://blog.csdn.net/qq_39814938/article/details/106157682 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:学习笔记之javabean
下一篇:学习笔记之jsp指令与动作

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月09日 10时53分17秒