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