您的位置:首页 > Web前端 > JavaScript

手把手做一个JSP入门程序(七):使用Cookie实现浏览记录(JSP)

2017-02-19 03:32 609 查看

使用Cookie实现浏览记录

  为了能够实现保存用户浏览记录的功能,我们可以将用户浏览过的书籍的ISBN保存到Cookie中,然后在服务器通过Cookie中的ISBN来获取到相应书籍的信息。

修改BookDAO,实现通过多个ISBN获取书籍信息

  在BookDAO.java中添加如下方法。其中isbnStr是多个isbn字符串通过”,”间隔连接成的一个字符串。

/*
* 通过一系列isbn获取书籍信息
*/
public ArrayList<Book> getViewList(String isbnStr){
ArrayList<Book> books = new ArrayList<Book>();
//      返回最多4条信息
int maxRecordCount = 4;
if(isbnStr != null && isbnStr.length() > 0){
String[] isbns = isbnStr.split(",");
if(isbns.length >= maxRecordCount){
//              商品记录数大于等于4条,只取最新4条
for(int i = isbns.length - 1; i >= isbns.length-maxRecordCount; i --){
books.add(getBookB
4000
yISBN(isbns[i]));
}
}else{
//              商品记录数小于4条
for(int i = isbns.length-1; i >= 0; i --){
books.add(getBookByISBN(isbns[i]));
}
}
return books;
}else{
return null;
}

}


在single.jsp中显示浏览记录

  我们需要将以下这段代码替换为JSP代码。

<div class="col-md-2 record">
<div class="rec-head">浏览记录</div>
<div class="rec-card">
<a href="single.html"><img class="img-rec pull-left" src="img/图解网站分析.jpg"/></a>
<div class="pull-left txt-rec">图解网站分析<br />¥34.8</div>
</div>
<div class="rec-card">
<a href="single.html"><img class="img-rec pull-left" src="img/图解网站分析.jpg"/></a>
<div class="pull-left txt-rec">图解网站分析<br />¥34.8</div>
</div>
<div class="rec-card">
<a href="single.html"><img class="img-rec pull-left" src="img/图解网站分析.jpg"/></a>
<div class="pull-left txt-rec">图解网站分析<br />¥34.8</div>
</div>
<div class="rec-card">
<a href="single.html"><img class="img-rec pull-left" src="img/图解网站分析.jpg"/></a>
<div class="pull-left txt-rec">图解网站分析<br />¥34.8</div>
</div>
</div>


为了能够记录和显示浏览记录,我们将有如下过程:

获取Cookie中的isbn字符串

添加当前浏览的图书的isbn

更新Cookie

利用BookDAO从数据库获取数据

显示浏览记录

<%
// 往Cookie中添加当前访问的书籍isbn
String isbnStr = "";
// 从客户端获取Cookie集合
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length > 0){
for(Cookie c:cookies){
if(c.getName().equals("BookViewRecordCookie")){
isbnStr = c.getValue();
}
}
}
// 添加当前访问的记录
isbnStr += request.getParameter("isbn") + ",";

// 记录超过4条时,只去最新4条
String[] arr = isbnStr.split(",");
if(arr != null && arr.length > 0){
if(arr.length >= 4){
isbnStr = "";
for(int i=arr.length-1; i >= arr.length-4; i --){
isbnStr = arr[i] + "," + isbnStr;
}
}
}
// 创建最新的Cookie
Cookie cookie = new Cookie("BookViewRecordCookie",isbnStr);
response.addCookie(cookie);
%>
<div class="col-md-2 record">
<div class="rec-head">浏览记录</div>
<%
//利用BookDAO获取浏览记录

ArrayList<Book> booksView = bookdao.getViewList(isbnStr);

if(booksView != null && booksView.size() > 0){
for(Book b: booksView){
System.out.println("进入");
System.out.println("book = " + book);
%>
<div class="rec-card">
<a href="single.jsp?isbn=<%= b.getIsbn() %>"><img class="img-rec pull-left" src="img/<%= b.getImg() %>"/></a>
<div class="pull-left txt-rec"><%= b.getName() %><br />¥<%= b.getPrice() %></div>
</div>
<%
}
}
%>


Cookie和Session

由于HTTP 是一个无状态协议,所以为了记住状态(比如某人是否已经登录)便产生了Cookie。Cookie是保存在客户端的浏览器的,因此也产生了一个弊端:Cookie中的数据可以被伪造。而Session则是保存在服务器中。session 通过一个session_id来与客户端的Cookie进行交互,该session_id则存在客户端的Cookie中。与node.js需要手动创建session不同,jsp中的session会在用户访问时自动进行创建。

  到这里我们的这个JSP程序也就完成啦!中间涉及的知识点好好掌握下,就可以写简单的程序啦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: