http会话
从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,称为一次会话。会话技术就是记录这次会话中客户端的状态和数据的
cookie技术
public class CookieDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*一、服务器发送给客户端一个cookie*/
/*1.创建cookie,不能存储中文 */
Cookie cookie = new Cookie("name","tom");
/*
* 2.设置cookie在客户端持久化时间
* 注意:如果不设置持久时间,cookie数据存储到浏览器内存中,浏览器关闭,cookie信息销毁
* 如果设置持久化时间,cookie信息就会持久化到浏览器的硬盘文件夹中
* 单位:秒,超过这个时间,浏览器自动清除cookie信息
* 如果设置为0,且路径和、同名键值的cookie相同,则为删除cookie操作
* */
cookie.setMaxAge(10*60); //
/*
* 3.设置携带路径
* 如果不设置,那cookie信息访问产生该cookie的web资源的所有路径都会有cookie
* */
cookie.setPath(request.getContextPath());
/*4.向客户端发送cookie信息*/
response.addCookie(cookie);
/*二、服务器获取客户端cookie*/
Cookie[] cookies = request.getCookies();
for(Cookie c:cookies){
if(cookie.getName().equals("name")){
System.out.println(c.getValue());
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
super.doPost(request, response);
}
}
session技术(常结合cookie使用)
public class SessionDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*得到session对象*/
HttpSession session = request.getSession();
/*第一次访问,服务器创建新的session,如果存在则不会创建新的session*/
if(session.isNew()){
System.out.println("当前session为服务器新创建的"+session.getId());
}
/*向session对象中放置数据*/
session.setAttribute("sex","男");
/*取session数据*/
String sex = (String)session.getAttribute("sex");
/*移除session中数据*/
session.removeAttribute("sex");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
super.doPost(request, response);
}
}
session对象的生命周期
/*创建:第一次执行request.getSession()时*/
request.getSession();
/*手动销毁*/
session.invalidate();
/*
* session过期/失效(默认30分钟,计算方式:从不操作服务器端资源开始计时)
* session过期时间配置在web.xml中配置,配置如下
*/
<web-app>
...
<session-config>
<session-timeout>60</session-timeout>
</session-config>
...
</web-app>