session会对每一个用户(浏览器)创建一个session对象
一个session独占一个浏览器,只要浏览器没关,这个session就存在;
cookie有限session可以放多个,
只要用户登录,整个浏览器都会访问—》保存用户信息======》购物车信息
cookie和session的区别
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(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中存东西
session.setAttribute("name","徐源");
//获取session的ID
String id = session.getId();
//判读是否是新的
if (session.isNew()){
resp.getWriter().write("session创建成功,id为:"+id);
}else {
resp.getWriter().write("session已经创建,id为:"+id);
}
<servlet>
<servlet-name>sessionDemo</servlet-name>
<servlet-class>com.xuyuan.demo.sessionDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sessionDemo</servlet-name>
<url-pattern>/session</url-pattern>
</servlet-mapping>
servletdemo2:
package com.xuyuan.demo;
import com.xuyuan.demo.pojo.Person;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
public class sessionDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(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中存东西
Person person = (Person) session.getAttribute("name");
System.out.println(person.toString());
}
}
实体类
package com.xuyuan.demo.pojo;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public void setAge(int age) {
this.age = age;
}
}
注销session
package com.xuyuan.demo;
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;
public class sessionDemo03 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
session.removeAttribute("name");
session.invalidate();//注销
}
}
一个浏览器对应一个session对象
</servlet-mapping>
<session-config>
<!--session的时间设置分钟自动失效,一般用手动操作-->
<session-timeout>15</session-timeout>
</session-config>
</web-app>



本文深入解析了Session和Cookie的工作原理及区别,阐述了如何在Java Servlet中使用HttpSession存储和检索用户信息,包括用户登录状态和购物车信息的管理。同时,介绍了Session的创建、使用及注销过程。
9357

被折叠的 条评论
为什么被折叠?



