Session和Cookie

package com.xinzhi;

import com.entity.Person;

import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;

/**
 * @author lzp
 * @create 2020/8/2
 */
public class Session1 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置字符集
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        //获得Session
        HttpSession session = req.getSession();
        //在session中存数据
        session.setAttribute("name",new Person("蓝胖子",18));
        //获取sessionID
        String sessionId = session.getId();

        //判断Session是不是新创建的
        if (session.isNew()) {
            resp.getWriter().write("Session创建成功,ID是:" + sessionId);
        }else {
            resp.getWriter().write("Session已经存在了,ID是:" + sessionId);
        }
    }

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

package com.xinzhi;

import com.entity.Person;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * @author lzp
 * @create 2020/8/2
 */
public class Session2 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置字符集
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        //得到Session
        HttpSession session = req.getSession();
        Person name = (Person) session.getAttribute("name");
        if (name!=null){
            resp.getWriter().print("Session为" + name);
            System.out.println(name.toString());
        }else {
            resp.getWriter().print("Session未创建");
        }

    }

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

package com.xinzhi;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * @author lzp
 * @create 2020/8/2
 */
public class Session3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置字符集
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        //新建Session
        HttpSession session = req.getSession();
        //移除Session
        session.removeAttribute("name");
        //手动后注销Session
        session.invalidate();
        resp.getWriter().print("Session注销成功");
    }

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

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>cookie</servlet-name>
        <servlet-class>com.xinzhi.Cookie1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>cookie</servlet-name>
        <url-pattern>/cookie</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>cookie2</servlet-name>
        <servlet-class>com.xinzhi.Cookie2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>cookie2</servlet-name>
        <url-pattern>/cookie2</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>Session1</servlet-name>
        <servlet-class>com.xinzhi.Session1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Session1</servlet-name>
        <url-pattern>/session1</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>Session2</servlet-name>
        <servlet-class>com.xinzhi.Session2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Session2</servlet-name>
        <url-pattern>/session2</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>Session3</servlet-name>
        <servlet-class>com.xinzhi.Session3</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Session3</servlet-name>
        <url-pattern>/session3</url-pattern>
    </servlet-mapping>
        <!--设置Session失效时间15分钟-->
<!--        <session-config>-->
<!--            <session-timeout>15</session-timeout>-->
<!--        </session-config>-->
</web-app>

Session和Cookie区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

	2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

	3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

	4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

	5、可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。

使用场景:
	- 保存登录用户的信息
	- 购物车信息
	- 在整个网站中经常会用的数据,保存在Session
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值