- 以下三个接口都是范围对象:
ServletContext application;是应用范围
HTTPSession session;是会话范围
HTTPServletRequest request;是请求范围
application>session>request - application完成跨会话共享数据
session完成跨请求共享数据,但是这些请求必须在同一个会话中
request完成跨Servlet共享数据,但是这些Servlet必须在同一个请求中
使用原则:由小到大尝试 void setAttribute(String name, Object o)
Object getAttribute(String name)
void removeAttribute(String name)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/32/AccesssMyselfSession">访问我的会话对象</a><br>
<a href="/32/GetDataFronSession">从会话对象中获取数据</a>
</body>
</html>
AccesssMyselfSession.java文件
package Session;
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;
import java.io.IOException;
@WebServlet("/AccesssMyselfSession")
public class AccesssMyselfSession extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String ip = request.getRemoteAddr();
System.out.println(ip);
HttpSession session = request.getSession();
System.out.println(ip+"s session="+session);
session.setAttribute("username","zhangsan");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
GetDataFronSession.java文件:
package Session;
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;
import java.io.IOException;
@WebServlet("/GetDataFronSession")
public class GetDataFronSession extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
Object username = session.getAttribute("username");
System.out.println(username);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
void invalidate()
:销毁Session
package Session;
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;
import java.io.IOException;
@WebServlet("/Logout")
public class Logout extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取Session对象,如果没有获取到Session对象则返回null
HttpSession session = request.getSession(false);
if(session!=null){
//销毁Session
session.invalidate();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}