Cookie练习之查看历史记录

news/2024/5/18 15:27:38 标签: cookie

servlet代码

package com.Cookice;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cookutil.GetCookutil;

public class Book2 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         response.setContentType("text/html;charset=utf-8");
        //得到id 设置到cookie
         String id = request.getParameter("id");
        //得到cookie

        Cookie ck = GetCookutil.getCookie("his", request.getCookies());
        if(ck==null) {//第一次访问  点什么书 就设置什么cookie
            ck = new Cookie("his", id); 
        }else{

            String value = ck.getValue();
            //用- 分割
            String[] ls =  value.split("-");//1-2-3
            List<String> li = Arrays.asList(ls);//不包含我才添加
        //  for (String s : li) {
//              if(!s.contains(id)) {
                    if(!li.contains(id)) {
                    ck= new Cookie("his", value+"-"+id);

            }
        }
        //添加cookie 到浏览器中
        response.addCookie(ck);
        //写2个链接,1个继续浏览 book2.jsp  另一个去访问已经浏览的书
        response.getWriter().println("<a href='"+request.getContextPath()+"/book2.jsp'>继续浏览</a>");
        response.getWriter().println("<a href='"+request.getContextPath()+"/hb.jsp'>查看历史</a>");

    }

}

jsp代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>


<title>My JSP 'book2.jsp' starting page</title>



</head>

<body>
    <a href="/Coo/Book2?id=1">西游</a>
    <br>
    <a href="/Coo/Book2?id=2">佛法</a>
    <br>
    <a href="/Coo/Book2?id=3">三国</a>
    <br>
    <a href="/Coo/Book2?id=4">红楼</a>
    <br>
    <a href="/Coo/hb.jsp">查看</a>
    <br>
</body>
</html>

JSP

<% 
    String[] books = {"","西游记","水浒传","红楼梦","三国演义"};     
    Cookie[]    ck  =request.getCookies();
            if(ck==null) {
                out.print("没有浏览过书");
            }
            for(int i=0 ;ck!=null&&i<ck.length;i++) {
                if(ck[i].getName().equals("history")){
                    String values = ck[i].getValue();
                    String[] li = values.split("-");
                    for(String l:li) {
                        out.print(books[Integer.parseInt(l)]+"<br>");
                    } 

                }
            }

            %>

工具类

package cookutil;

import javax.servlet.http.Cookie;

public class GetCookutil {

    public static Cookie getCookie(String name,Cookie[] ck)  {
        if(ck==null||ck.length==0) {
            return null;
        }
        for (Cookie c : ck) {
            if(c.getName().equals(name)){
                return c;
            }
        }


        return null;

    }

}

http://www.niftyadmin.cn/n/1570638.html

相关文章

request,session登陆的小练习

登陆的小练习 package com.Login;import java.io.IOException;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import com.Cookice.User;publ…

简单的登陆注册练习1 登陆

主页 <a href"${pageContext.request.contextPath }/register.jsp">注册</a><a href"${pageContext.request.contextPath }/login.jsp">登陆</a> 注册页面 <% page language"java" import"java.util.*"…

简单登陆注册练习2登陆

登陆页面 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>My JSP denglu.jsp starting pa…

session和cookie 区别(面试)

session原理&#xff1a;1、session是保存在服务器端&#xff0c;理论上是没有是没有限制&#xff0c;只要你的内存够大2、浏览器第一次访问服务器时会创建一个session对象并返回一个JSESSIONIDID的值&#xff0c;创建一个Cookie对象key为JSSIONID&#xff0c;value为ID的值&am…

LeetCode 2490. Circular Sentence【字符串】简单

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

BeanUtils的自己定义的日期转换器

package cn.servlet;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;import org.apache.commons.beanutils.Converter;public class myconver implements Converter {//把页面上传进来的String 转化为 datepublic Object convert…

隐藏域和session防止表单重复提交

防止表单重复提交://获得提交过来的参数 ,封装到bean 中,调用业务层.传入数据request.setCharacterEncoding("utf-8");//做个防止表单重复提交的//从隐藏域中获取到了toekn 和session 中token 比较 ,是一样的说明是从同一个页面 String ht request.getParameter(&q…

Servlet过滤器(Filter)

1过滤器的生命周期 a、应用被加载时就完成了过滤器的实例化和初始化&#xff0c;只有一次 b、针对用户的每次资源访问&#xff0c;容器都会调用doFilter方法 c、应用被卸载或服务器停止时&#xff0c;会执行destory方法 3、过滤器的参数配置FilterConfig 验证码和动态资源…