Cookie操作
Cookie相关的主要方法:
- response.addCookie(Cookie c):通过该方法,将Cookie写入客户端。
- Cookie.setMaxAge(int second):通过该方法,设置Cookie的存活时间,参数表示存活的秒数。
- Cookie[] request.getCookie():读取客户端传过来的Cookie,以数组形式返回,读取数组之后,一般进行遍历。
例子:cookieP1.jsp定义数值变量num,显示num的平方,要求点击链接,在cookieP2.jsp显示num的立方.
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String str = "12";
int num = Integer.parseInt(str);
%>
<!-- cookieP1 -->
该数字的平方为:<%=num*num %><hr>
<%
//将str存入Cookie
Cookie cookie = new Cookie("num", str);
//设置Cookie的存活期为600秒
cookie.setMaxAge(600);
//将Cookie保存于客户端
response.addCookie(cookie);
%>
<a href="cookieP2.jsp">到达P2</a>
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String str = null;
Cookie[] cookies = request.getCookies();
for(int i = 0; i < cookies.length; i++) {
if(cookies[i].getName().equals("num")) {
str = cookies[i].getValue();
break;
}
}
int num = Integer.parseInt(str);
%>
<!-- cookieP2.jsp -->
该数字的立方为:<%=num*num*num %><hr>
利用session开发购物车
(对应类型:javax.servlet.http.HttpSession)
购物车特点:
- 同一个用户使用的是同一个购物车。
- 不同的用户使用的是不同的购物车。否则,别人买的东西就会算到自己的账上。
- 在不同货架(页面)之间进行访问时,购物车中的内容可以保持。
用session开发购物车
- 将内容放入购物车:void session.setAttribute(String name, Object obj)。
- 读取购物车的内容:Object session.getAttribute(String name)。
例子:
cart3_1.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<body>
<%
ArrayList books = new ArrayList();
books.add("book1");
books.add("book2");
books.add("book3");
session.setAttribute("books", books);
%>
<a href="cart3_2.jsp">查看购物车</a>
</body>
</html>
cart3_2.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<body>
购物车中内容为:<hr>
<%
ArrayList books = (ArrayList)session.getAttribute("books");
for(int i = 0; i < books.size(); i++) {
String book = (String)books.get(i);
out.println(book+"<br>");
}
%>
</body>
</html>
session的其他API
session的其他操作
- 移除session中的内容:void session.removeAttribute(String name)。
- 移除session中的全部内容:void session.invalidate()。
- 预防session内容丢失。
例子:用一个表单提交将书本放入购物车,并在页面底部打印。
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<body>
<form action="handleSessionLost.jsp" method="post">
请您输入书本:<input name="book" type="text">
<input type="submit" value="添加到购物车">
</form>
<hr>
<%
ArrayList books = (ArrayList)session.getAttribute("books");
//预防session内容丢失
if(books == null) {
books = new ArrayList();
session.setAttribute("books", books);
}
String book = request.getParameter("book");
if(book != null) {
book = new String(book.getBytes("ISO-8859-1"));
books.add(book);
}
%>
购物车中的内容是:<br>
<%
for(int i = 0; i < books.size(); i++) {
out.println(books.get(i)+"<br>");
}
%>
</body>
</html>
sessionId
对于每一个session,服务器端都有一个sessionId来标识它。
sessionId1.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<body>
<%
String id = session.getId();
out.println("当前sessionId为:"+id);
%>
<hr>
<a href="sessionId2.jsp">到达下一个页面</a>
</body>
</html>
sessionId2.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<body>
<%
String id = session.getId();
out.println("当前sessionId为:"+id);
%>
</body>
</html>
application对象
(对应类型:javax.servlet.ServletContext)
application的主要API:
- 将内容放入application:void application.setAttribute(String name,Object obj)。
- 读取application中的内容:Object application.getAttribute(String name)。
- 将内容从application中移除:void application.removeAttribute(String name)。
例子:显示某个页面被访问次数。
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<body>
<%
Integer count = (Integer)application.getAttribute("count");
if(count == null) {
count = new Integer(0);
}
count++;
application.setAttribute("count",count);
%>
您是该页面的第<%=count %>个访问者。
</body>
</html>