会话: 既用户打开浏览器,访问多个web资源后,关闭浏览器的过程,称之为会话;
有状态会话:既用户访问过页面后,下次再来访问时,服务器能够识别出用户曾经访问过该页面的过程;
cookie是依照键值对存储信息
getName() //获取键
getValue() //获取值
setMaxAge() //设置最大的生存时间
getMaxAge() //获取最大的生存时间
1.具体实现类
public class Cook extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
Cookie[] cookies = req.getCookies();
if (cookies!=null){
for (Cookie cookie : cookies) {
if(cookie.getName().equals("loginDate")){
long l= Long.parseLong(cookie.getValue());
Date date = new Date(l);
String lastTime= date.toLocaleString();
writer.write("上次登录时间为:"+lastTime);
}
}
}
Cookie date = new Cookie("loginDate", System.currentTimeMillis() + "");
resp.addCookie(date);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
<servlet>
<servlet-name>Cookservlet-name>
<servlet-class>com.javaweb.Cookie.Cookservlet-class>
servlet>
<servlet-mapping>
<servlet-name>Cookservlet-name>
<url-pattern>/curl-pattern>
servlet-mapping>
注:第一次访问不会显示时间的,从第二次访问时,显示上次的访问时间
在计算机中,尤其是在网络应用中,称为"会话控制"。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。
生命周期:当客户端访问时,服务器会给用户,创建一个Session对象,该对象只要浏览器没关,便会一直存在
作用:用来存储用户信息
public class Ses extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
HttpSession session = req.getSession();
if(session.isNew()){
writer.write("新的,不能打");
}else{
Object id = session.getAttribute("id");
writer.write("id:"+id);
}
session.setAttribute("id",session.getId());
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
public class Ses1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
HttpSession session = req.getSession();
Object id = session.getAttribute("id");
writer.write("id:"+id);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
public class Ses2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
HttpSession session = req.getSession();
session.removeAttribute("id"); //移除id
session.invalidate(); //关闭会话
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
在web.xml中设置Session的session-timeout属性即可
代码实现:
<session-config>
//1分钟后session自动失效
<session-timeout>1session-timeout>
session-config>