⑥ 一个web应用可以保存多个cookie,但保存在同一个cookie文本在客户端浏览器下 ⑦ cookie存放的时候是以明文方式存放,因此安全较低.,我们可以通过加密后保存. ? ->补讲md5加密算法 :
请大家注意,以后我们的密码都要使用加密存放,在验证密码的时候,对用户输入密码,进行md5加密,然后该到数据库去验证。 md5算法
package com.hsp;
import java.security.*;
import java.security.spec.*;
class MD5_test {
public final static String MD5(String s) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; try {
byte[] strTemp = s.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance(\ mdTemp.update(strTemp); byte[] md = mdTemp.digest(); int j = md.length;
char str[] = new char[j * 2]; int k = 0;
for (int i = 0; i < j; i++) { byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; }
return new String(str); } catch (Exception e) { return null; } }
public static void main(String[] args) { // MD5_Test aa = new MD5_Test();
System.out.print(MD5_test.MD5(\韩顺平\ } }
? 保存上次登录时间
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(\ PrintWriter out = response.getWriter(); //先获取cookie // 假设我们 保存上次登录时间的cookie \ // 这里我们要考虑一个情况: 用户第一次登录 '您是第一次登录..' Cookie []cookies=request.getCookies(); boolean b=false;//假设没有lasttime cookie if(cookies!=null){ //保证有cookie,取遍历 for(Cookie cookie: cookies){ //取出名 String name=cookie.getName(); if(\ //显示 out.println(\您上次登录时间是 \ //更新时间 //把当前日期保存cookie SimpleDateFormat simpleDateFormat=new SimpleDateFormat(\ String nowTime=simpleDateFormat.format(new java.util.Date()); Cookie mycookie=new Cookie(\ mycookie.setMaxAge(7*3600*24);//保存一周 response.addCookie(mycookie); b=true; break; } } }
if(!b){ //没有找到 out.println(\您是第一次登录..\ //把当前日期保存cookie SimpleDateFormat simpleDateFormat=new SimpleDateFormat(\HH:mm:ss\ String nowTime=simpleDateFormat.format(new java.util.Date()); Cookie cookie=new Cookie(\ cookie.setMaxAge(7*3600*24);//保存一周 response.addCookie(cookie); } }
*上机练习
? cookie自动保存用户密码
打开登录页面的时候,自动填写该用户的用户名和密码【这个要求学员课堂练习(最好单开一个项目)】
? cookie保存浏览商品 请自己作为作业考虑实现
? cookie的细节
① 一个浏览器最多放入 300cookie,一个web站点,最多 20cookie,而且一个cookie大小限
制子4k
② cookie生命周期的再说明:
1. cookie默认生命周期是会话级别
2. 通过setMaxAge() 可以设置生命周期 setMaxAge(正数) , 即多少秒后该cookie失效 setMaxAge(0) ,删除该cookie
setMaxAge(负数), 相当于该cookie生命周期是会话级别.
案例 :
//先得到该cookie
Cookie cookies[]=request.getCookies(); for(Cookie cookie: cookies){
if(cookie.getName().equals(\)){ System.out.println(\);
}
}
//删除
cookie.setMaxAge(0);
response.addCookie(cookie);//一定带上这句话,否则不能
删除
特别说明: 如果该web应用只有一个cookie ,则删除该cookie后,在浏览器的临时文件夹下没有该cookie文件,如果该web应用有多个cookie,则删除一个cookie后,文件还在,只是该cookie没有
③ cookie存放中文,怎么处理 存放:
String val=java.net.URLEncoder.encode(\顺平\,\); Cookie cookie=new Cookie(\,val);
取出:
String val=java.net.URLDecoder.decode(cookie.getValue(), \); out.println(\+val);
? session为什么有?
问题1: 如何实现在不同的页面,可以去查看信息(比如说购物车),同时还要实现不同的用户看到的信息是自己. ? session工作原理图
相关推荐: