ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

010.在产生时间字符串的时候出现了空格(whitespace),在创建cookie对象的时候是不允许的。

2021-08-28 23:02:36  阅读:173  来源: 互联网

标签:utf whitespace resp time 010 Cookie import cookie


 

 

 

 

 

 

package cn.cookie.demo;

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;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/cookieDemo")
public class CookieDemo extends HttpServlet
{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        /**
         * 1.获取当前时间
         * 2.以指定的模式 创建一个日期格式化对象
         * 3.创建一个日期对象,表示当前日期
         * 4.使用simpleDateFormat来格式化日期对象
         */
        //解决乱码
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date=new Date();
        String time=simpleDateFormat.format(date);
        /**
         * 1.在产生时间字符串的时候出现了空格(whitespace),在创建cookie对象的时候是不允许的。
         * 2.在给客户端发送cookie的时候,将value进行"utf-8"编码,在获取客户端请求中的cookie时进行响应的"utf-8"解码,即可
         * 3.使用utf-8编码  time= URLEncoder.encode(time,"utf-8");
         * 4.使用utf-8解码  time = URLDecoder.decode(value,"utf-8");
         */
        time= URLEncoder.encode(time,"utf-8");
        //设置Cookie
        Cookie mycookie = new Cookie("mycookie",time);
        //持久化存储期限以秒为单位 4分钟=240秒
       // mycookie.setMaxAge(240);
        //设置浏览器解码格式为utf-8
        resp.setContentType("text/html;charset=utf-8");
        resp.addCookie(mycookie);
        /**
         * 1.对cookie进行判断
         * 2.获取所有的Cookie值
         * 3.若Cookie为空,说明第一次访问
         * 4.从Cookie数组中查找含有上一次访问时间的Cookie
         */
        Cookie[] cookies = req.getCookies();
        Cookie cookieTimeValue=null;
        //对Cookie进行解码
        if (cookies!=null)
        {
            //从Cookie数组中查找含有上一次访问时间的Cookie
            for (Cookie cookie:
                    cookies)
            {
                //若有,说明不是第一次访问
                if ("mycookie".equals(cookie.getName()))
                {
                    String valueTime=cookie.getValue();
                    //使用utf-8解码
                    valueTime= URLDecoder.decode(valueTime,"utf-8");
                    //设置解码后的值
                    cookie.setValue(valueTime);
                    cookieTimeValue=cookie;

                }
            }
        }
        if (cookieTimeValue!=null)
        {
            resp.getWriter().write("欢迎回来,您上次访问时间为:"+cookieTimeValue.getValue());
        }
        else
        {
            resp.getWriter().write("您好,欢迎您首次访问");
        }


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        doGet(req, resp);
    }
}

 

标签:utf,whitespace,resp,time,010,Cookie,import,cookie
来源: https://www.cnblogs.com/LLL0617/p/15201441.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有