保持状态的四种方法:网址重写,隐藏域,Cookie和HttpSession对象
2.1网址重写
一种session追踪技术,将一个或者多个token作为查询字符串添加到一个URL中
token格式为键=值;
语法:url?key-1=value1&key-2=value2&key-3=value3
缺点:
有些浏览器URL长度有限制
仅当有链接要插入值时,值才能转换成后面的资源
网址重写必须在服务器端有效。所有链接都必须带有值
某些字符需要进行编码
添加到URL的信息是可见的
使用域:
需要保持,不跨越太多页面,信息不太重要
2.2 隐藏域
将值放在HTML表单的隐藏域中。
只有当页面包含表单或者在页面中添加表单的时候,且不需要跨越多个页面时,才会使用隐藏域
2.3 cookie
自动地在web服务器和浏览器之间来回传递的一小块信息,适用于需要跨越许多页面的信息
cookie是作为HTTP标头嵌入的,传输它的过程由http协议处理
创建cookie Cookie cookie = new Cookie(name,value);
可以设置cookie的domain,path,maxAge属性
将cookie发送到浏览器使用HttpServletResponse.add(Cookie cookie)方法
访问浏览器返回的cookie,使用HttpServletRequest.getCookies()方法
要删除cookie,添加一个同名cookie,并将其maxAge设置为0
2.4 HttpSession对象
获取HttpSession对象
HttpServletRequest.getHttpSession()
HttpServletRequest.getHttpSession(boolean create)
方法:
void setAttribute(String name,Object value) 传递已有名称时,关联新值
Object getAttribute(String name) 获取名称对应的值
String getId() 获取HttpSession的标识符
void invalidate() 强制过期
long getMaxInactiveInterval() HttpSession在用户最后一次访问后还可以维持多久
void setMaxInactiveInterval(long millionSeconds) 设置为0时永不过期
网友评论