cookie、session

cookie

客户端的技术,可以保存一定的信息

可以在servlet中写cookie对应的方法

cookie是一个类,可以通过固定的方法把信息存在cookie中,然后通过servlet的resp.addCookie 存入

通过 req.getcookie获取,

Cookie[] cookies = req.getCookies(); //获得Cookie  数组 cookie可能存在多个
cookie.getName(); //获得cookie中的key
cookie.getValue(); //获得cookie中的vlaue
new Cookie("lastLoginTime", System.currentTimeMillis()+""); //新建一个cookie
cookie.setMaxAge(24*60*60); //设置cookie的有效期
resp.addCookie(cookie); //响应给客户端一个cookie
public class ShowUserVisitsNum extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决中文乱码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=utf-8");

        //响应的输出
        PrintWriter out = resp.getWriter();
        //获得cookie
        Cookie[] cookies = req.getCookies();
        //设置输出的东西 写逻辑
        if (cookies!=null){
            out.write("上次访问的时间为");
            //遍历cookie 因为cookie有很多,所以想要找到自己设置的那个cookie 需要遍历比对
            
            for (Cookie cookie : cookies) {

                if (cookie.getName().equals("lastLonginTime")){
                    //比对k之后通过这个k获得v,然后想办法输出value
                    String cookieValue = cookie.getValue();
                    //时间转换为长整型即为时间戳,时间戳通过Date类进行转换
                    Date date = new Date(Long.valueOf(cookieValue));
                    //输出这个Date 进行格式化
                    SimpleDateFormat stf = new SimpleDateFormat("YYYY-MM-dd  hh:mm:ss");
                    //用formate方法变为字符串 新字符串时间格式为自己格式化的格式  常用类部分的知识
                    String format = stf.format(date);
                    out.write(format);
                }
                
            }
        }else {
            out.write("这是第一次访问");
        }
//value设置为字符串类型的时间,如果想使用,需要把他变成时间戳,然后转换成时间
        Cookie vistTime = new Cookie("lastLonginTime", String.valueOf(System.currentTimeMillis()));
        resp.addCookie(vistTime);
    }

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

    }
}

session重点

服务器会给每一次会话创建一个会议对象,session中,用户并不能直接获取信息,session的信息存储在服务器,并且没有用的数据库的技术。可以手动的清除session,也可以在web。xml里面指定失效的时间,session的简单使用方法如下:

一。在session中存储数据,以及判断session的id,什么时候创建session,一般在首次访问的时候,session会被浏览器自动创建,手动消除或者过期后,再次访问,再自动创建。

public class sessionDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       req.setCharacterEncoding("utf-8");
       resp.setCharacterEncoding("utf-8");
       resp.setContentType("text/html;charset=utf-8");
       //获得session
        HttpSession session = req.getSession();
        //session中放入东西的方法,存入一个放入东西的名子,后面能放实体类,寻找时,需要通过名字寻找,kv键值对
        session.setAttribute("name",new person("wpx",15));
        //获得session的id,然后操作
        String sessionId = session.getId();
        if(session.isNew()){
            resp.getWriter().write("session创建成功,sessionID"+sessionId);
        }else {
            resp.getWriter().write("session存在,sessionID"+sessionId);
        }
    }

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

    }
}

二,调用session中的数据,并且可以对数据进行前端或者后端的操作。

public class sessinDemo01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //跨类操作session的数据,因为session中的信息都是保存在服务器的,用户的客户端只是在cookie中存入session的id,
        HttpSession session = req.getSession();
        //通过getattr的方法通过存入的名字,获得了存入的数据
         person p = (person)session.getAttribute("name");
         //接下来可以对这个进行操作
        System.out.println(p.toString());


    }

三。手动消除session、消除数据

public class sessionDemo02 extends HttpServlet {
    //清除session
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获得session信息
        HttpSession session = req.getSession();
        //通过定义的名字删除数据
        session.removeAttribute("name");
        //消除session,消除后,进入时会自动创建session,然后session的id会不一样。
        session.invalidate();
    }

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

四、自动消除,设置过期时间,需要在web。xml里面设置

  <session-config>
<!--        以分钟为计时单位,一般只设置几个小时,太长会浪费服务器资源-->
        <session-timeout>15</session-timeout>
    </session-config>

服务器技术、可以保存用户的的会话信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值