赞
踩
一个HTTP请求分为四部分:
请求行由请求方法字段、URL字段和HTTP版本字段三个字段组成,用空格分隔。
如:GET /index.html HTTP/1.1
请求头部由关键字/值对组成,每一行一对,关键字和值之间用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,常用的请求头有Cookie
200——响应成功
301——永久重定向,搜索引擎将删除源地址,保留重定向地址
302——暂时重定向,重定向地址由响应头中的Location属性指定。由于搜索引擎的判定问题,较为复杂的URL容易被其他网站使用更精简的URL及302重定向劫持
400——客户端请求有语法错误,不能被服务器识别
500——服务器内部错误
cookie用来在浏览器端存储用户的状态信息,然后再访问后端的时候将这部分信息带回到后端。
cookie的主要内容包括:名字、值、过期时间、路径和域。
方法 | 描述 |
---|---|
public void setDomain(String pattern) | 设置cookie的作用域,如haimeng.blog.csdn.net |
public String getDomain() | 获取cookie适用的域 |
public void setMaxAge(int expiry) | 设置cookie的过期时间(以s为单位),如果不设置会在当前session会话中持续有效 |
public int getMaxAge() | 返回cookie的最大生存周期(以s为单位),默认情况下,-1表示cookie将持续下去,直到浏览器关闭 |
public String getName() | 该方法返回cookie的名称,名称在创建后不能改变 |
public void setValue(String newValue) | 设置与cookie关联的值 |
public String getValue() | 获取与cookie关联的值 |
public void setPath(String uri) | 设置cookid适用的路径。如果不指定路径,与当前页面相同目录下的(包括子目录下的)所有URL都会返回cookie |
public String getPath() | 获取cookie适用的路径 |
public void setSecure(boolean flag) | 设置布尔值,表示cookie是否应该只在加密的(即SSL)连接上发送 |
public void setComment(String purpose) | 设置cookid注释,该注释在浏览器向用户呈现cookie时非常有用 |
public String getComment() | 获取注释,如果没有返回null |
使用示例:
Cookie创建实例:
Cookie cookie = new Cookie("key","value");
cookie.setMaxAge(60*60*24); //设置过期时间,以s为单位
response.addCookie(cookie);
要通过Servlet读取Cookie,只需要通过调用HttpServletRequest的getCookies()方法创建一个javax.servlet.http.Cookie对象的数组。然后再循环遍历数组,并使用getName()和getValue方法来访问每一个Cookie和关联的值即可。
Cookie删除实例:
//删除第i个Cookie
Cookie cookie = HttpServletRequest.getCookies()[i];
cookie.setMaxAge(0);
response.addCookie(cookie);
Session是用来在服务器端保存用户的信息。
使用场景:
比如购物车,在用户点击“下单”按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建特定的session,用于标识这个用户,并且跟踪用户,这样才知道购物车里面有什么。这个session是保存在服务端的,有一个唯一标识。在服务端保存session的方法很多,内存、数据库、文件都可以。
<input type="hidden" name="session_id" value="123456">
该条目意味着,当表单被提交时,指定的名称和值会被自动包含在GET和POST数据中。每次当Web浏览器发送请求时,session_id值可以用于保持不同的Web浏览器的跟踪。除了上面的3中方式,Servlet还提供了HttpSession接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式。Servlet容器使用这个接口来创建一个HTTP客户端和HTTP服务器之间的Session会话。会话持续一个指定的时间段,跨多个连接或页面请求。通过调用HttpServletRequest的公共方法getSession()来获取HttpSession对象
如:
HttpSession session = request.getSession();
方法 | 描述 |
---|---|
public void setAttribute(String name,Object value) | 使用指定的名称绑定一个对象到该Session会话 |
public Object getAttribute(String name) | 返回在该Session会话中具有指定名称的对象 如果没有则返回null |
public Enumeration getAttributeNames() | 返回String对象的枚举 String对象包含所有绑定到该Session会话的对象的名称 |
public long getCreationTime() | 返回Session会话创建的时间 自格林尼治标准时间1970年1月1日午夜算起,以ms为单位 |
public String getId() | 返回一个包含分配给该Session会话的唯一标识符的字符串 |
public long getLastAccessedTime() | 返回客户端最后一次发送与该Session会话相关的请求的时间 自格林尼治标准时间1970年1月1日午夜算起,以ms为单位 |
public void setMaxInactiveInterval(int interval) | 在Servlet容器指示该Session会话无效之前,指定客户端请求之间的时间,以s为单位 |
public int getMaxInactiveInterval() | 返回Servlet容器在客户端访问时Session会话打开的最大时间间隔,以s为单位 |
public void invalidate() | 指示该Session会话无效,并解除绑定到它上面的任何对象 |
public boolean isNew | 如果客户端不知道该Session会话 或者如果客户选择不参与该Session会话,则该方法返回true |
public void removeAttribute(String name) | 将从Session会话移除指定名称的对象 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。