1、session是什么?
会话技术,保存共享的会话数据至服务器端
2.session和cookie的区别;
cookie:服务器创建,保存在浏览器
session:服务器创建,保存在服务器
3.session原理:
浏览器访问服务器,服务器创建session对象和ID属性, session对象存储在服务器,ID属性带回浏览器(用cookie带回去),浏览器再次访问服务器,就带着ID过来,服务器选择相应的session对象进行“服务”
session借助于cookie实现
4、sessior的API
获取或者创建session: request.getSession(boolean create)
request.getSession ()
获得session的ID属性:session. getID()
5.设置session生存时长
HttpSession session=request. getSession();
//设置保存ID属性的cookie的生存时长
Cookie cookie=new Cookie( name:"JSESSIONID", session.getId());
cookie. setMaxAge(60);
out.print(session.getId());
response.addCookie(cookie);
6.session域的应用
session域的应用:共享数据、传递数据、—个存一个取------域范围一次会话
setAttribute(String name.Objeet obj)存数据
getAttribute(String name)取数据
SessionServlet
@WebServlet("/SessionServlet")
public class SessionServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//获取session对象
HttpSession session=request.getSession();
//存入数据
session.setAttribute("student","yrq");
// response.addCookie(cookie);
response.sendRedirect("/GetSessionServlet");
}
}
GetSessionServlet
@WebServlet("/GetSessionServlet")
public class GetSessionServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//获取session对象
HttpSession session=request.getSession();
out.print(session.getAttribute("student"));
}
}
超链接
(1)在SessionServlet中
session.setAttribute(name,value);存值的时候;
value可以是一个url
如
session.setAttribute("Blog","https://blog.csdn.net/YANG_xiao_QI");
#将url存入servlet对象中
(2)在GetSessionServlet中获取存的value
String url=(String)session.getAttribute("Blog");
out.print("<a href='"+url+"'>我的博客</a>");
#定义一个url存放获取到的值(即存入的url)
#页面显示超链接
#注意< a href=’"+url+"’>我的博客< /a>
+号是连接符,+号后面跟着的url是getAttribute()获取到的网址
< a href=" # "> 是超链接标签的格式,=号后本应该加双引号;
但双引号中间不能嵌套双引号,连接url时已经用了双引号;
"+url+"所以用单引号代替< a href=’ #’>