1.Session会话
用户打开浏览器后,在浏览器上打开了很多链接,直到用户关闭浏览器,这一个过程都属于会话。服务器可以为每一个用户创建一个会话对象。Session对象有服务器创建,开发人员可以调用request对象的getSession方法得到session对象。
2.Session和Cookie的区别
- Cookie是把用户的数据写给用户的浏览器
- Session技术把用户的数据写到用户独占的Session中
上一篇已经介绍了 Cookie,Cookie 可以让服务端程序跟踪每个客户端的访问,但是每次客户端的访问都必须传回这些 Cookie,如果 Cookie 很多,则无形增加了客户端与服务端的数据传输量,而 Session 的出现正是为了解决这个问题。
3.Session实例
下面用两个代码实例来帮助我们理解和使用Session
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 SessionTest 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");
//Session由服务器自动创建,如何获得session
//HttpSession 得到的sessioin对象
HttpSession session = req.getSession();
//得到sessionID,一次会话,一个seesionID;
String id = session.getId();
resp.getWriter().println("获得的sessionId:\n"+id);
String name = "muzili";
//向session中存入一个值;
session.setAttribute("name",name);
resp.getWriter().println("存入信息成功:"+name);
}
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;
//获得session存入的值
public class SessionTest2 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");
//获得
HttpSession session = req.getSession();
System.out.println("得到的SessionID:"+session.getId());
String name = (String) session.getAttribute("name");
resp.getWriter().println("得到的session存入的信息"+name)
//session.invalidate();//通过代码注销会话
}
}
配置web.xml文件
<?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>SeesionTest</servlet-name>
<servlet-class>com.westos.serlvet.SessionTest</servlet-class>
</servlet>
<servlet>
<servlet-name>SeesionTest2</servlet-name>
<servlet-class>com.westos.serlvet.SessionTest2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SeesionTest</servlet-name>
<url-pattern>/session</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SeesionTest2</servlet-name>
<url-pattern>/session2</url-pattern>
</servlet-mapping>
</web-app>
然后再启动Tomcat,成功后,打开浏览器,输入指令http://localhost:8081/webtest/session,出现以下界面
接着输入指令http://localhost:8081/webtest/session2,出现以下界面