前言
本文主要介绍Session的基本知识及基本使用方法
一、Session是什么?
服务器为了保存用户状态而创建的一个特殊的对象。
当浏览器第一次访问服务器时,服务器创建一个session对象(该对象有一个唯一的id,一般称之为sessionId),服务器会将sessionId以cookie的方式发送给浏览器。
当浏览器再次访问服务器时,会将sessionId发送过来,服务器依据sessionId就可以找到对应的session对象。
二、使用步骤
1.设置session
代码如下(示例):
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/** * Servlet implementation class SessionIndexServlet */
@WebServlet("/SessionIndexServlet")
public class SessionIndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/** * @see HttpServlet#HttpServlet() */
public SessionIndexServlet() {
super();
// TODO Auto-generated constructor stub
}
/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
// TODO Auto-generated
HttpSession session = request.getSession();
session.setAttribute("name", "wangwei");
response.sendRedirect("/servlet/SessionLogin"); }
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
2.获取session
代码如下(示例):
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/** * Servlet implementation class SessionLoginServlet */
@WebServlet("/SessionLogin")
public class SessionLoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/** * @see HttpServlet#HttpServlet() */
public SessionLoginServlet() {
super();
// TODO Auto-generated constructor stub
}
/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
HttpSession session =request.getSession();
String name =(String)session.getAttribute("name");
response.getWriter().println("name"+name);
}
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
3.销毁session
Session 的销毁
为了避免Session中存储的数据过大,Session需要销毁:
超时自动销毁。
从用户最后一次访问网站开始,超过一定时间后,服务器自动销毁Session,以及保存在Session中的数据。
Tomcat 服务器默认的Session超时时间是30分钟可以利用web.xml设置超时时间单位是分钟,设置为0表示不销毁。
<session-config> <session-timeout>20</session-timeout> </session-config>
调用API方法,主动销毁Session
使用 session.invalidate()
public class DeleteServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
session.invalidate();
response.setContentType(
"text/html; charset=utf-8");
response.getWriter().println("呵呵!");
}
}
参考:—什么是Session
三、Cookie和Session区别
相同点:
-
这俩都是浏览器和服务器之间交互的工具,都是用来跟踪浏览器用户身份的会话方式。
-
都是在第一次访问时,由服务器产生的
不同点: -
存放位置不同
cookie保存在客户端, session保存在服务端
-
存取方式不同
cookie只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。 session中能够存取任何类型的数据
-
安全性不同
cookie存储在浏览器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修改cookie中的内容。 session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。
总结
本文介绍了session相关的使用,以及简单介绍了cookie和session的区别,个人理解,Session本质上也是使用了Cookie,Cookie保存SessionId到客户端,每次调用服务器时带着SessionId去访问,服务器端开辟了一篇内存空间保存Session信息。
今天的文章Java——Session使用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24007.html