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

010.在产生时间字符串的时候出现了空格(whitespace),在创建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