本文实例为大家分享了Java使用cookie显示最近查看过的书的相关方法,供大家参考,具体内容如下
1.ben包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
import java.io.Serializable;
public class Book implements Serializable {
private String id;
private String name;
private String price;
private String auth;
private String publish;
private String description;
public Book() {
}
public Book(String id, String name, String price, String auth,
String publish, String description) {
super ();
this .id = id;
this .name = name;
this .price = price;
this .auth = auth;
this .publish = publish;
this .description = description;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this .description = description;
}
public String getId() {
return id;
}
public void setId(String id) {
this .id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this .name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this .price = price;
}
public String getAuth() {
return auth;
}
public void setAuth(String auth) {
this .auth = auth;
}
public String getPublish() {
return publish;
}
public void setPublish(String publish) {
this .publish = publish;
}
}
|
2.Dao包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import java.util.LinkedHashMap;
import java.util.Map;
import cn.huiyu.ben.Book;
public class BookDao {
private static Map<String,Book> bookMap = new LinkedHashMap<String, Book>();
private BookDao() {
}
static {
bookMap.put( "1" , new Book( "1" , "1111" , "11.0" , "zqwang" , "111出版社" , "111111111" ));
bookMap.put( "2" , new Book( "2" , "2222" , "22.0" , "zqwang" , "222出版社" , "222222222" ));
bookMap.put( "3" , new Book( "3" , "3333" , "33.0" , "zqwang" , "333出版社" , "333333333" ));
}
public static Map<String,Book> getBooks(){
return bookMap;
}
public static Book getBook(String id){
return bookMap.get(id);
}
}
|
3.servlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType( "text/html;charset=utf-8" );
//1.查询数据库中所有的书展示
Map<String,Book> map = BookDao.getBooks();
for (Map.Entry<String , Book> entry : map.entrySet()){
Book book = entry.getValue();
response.getWriter().write( "<a href='" +request.getContextPath()+ "/servlet/BookInfoServlet?id=" +book.getId()+ "'>" +book.getName()+ "</a><br>" );
}
response.getWriter().write( "<hr>" );
//2.显示之前看过的书
Cookie [] cs = request.getCookies();
Cookie findC = null ;
if (cs!= null ){
for (Cookie c : cs){
if ( "last" .equals(c.getName())){
findC = c;
}
}
}
if (findC == null ){
response.getWriter().write( "没有看过任何书!" );
} else {
response.getWriter().write( "您曾经浏览过的书:<br>" );
String[] ids = findC.getValue().split( "," );
for (String id : ids){
Book book = BookDao.getBook(id);
response.getWriter().write(book.getName()+ "<br>" );
}
}
}
|
4.servlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType( "text/html;charset=utf-8" );
//1.获取要看的书的id,查询数据库找出书,输出书的详细信息
String id = request.getParameter( "id" );
Book book = BookDao.getBook(id);
if (book== null ){
response.getWriter().write( "找不到这本书!" );
return ;
} else {
response.getWriter().write( "<h1>书名:" +book.getName()+ "</h1>" );
response.getWriter().write( "<h3>作者:" +book.getAuth()+ "</h3>" );
response.getWriter().write( "<h3>售价:" +book.getPrice()+ "</h3>" );
response.getWriter().write( "<h3>出版社:" +book.getPublish()+ "</h3>" );
response.getWriter().write( "<h3>描述信息:" +book.getDescription()+ "</h3>" );
}
//2.发送cookie保存最后看过的书
// --- 1 --> 1
// 1 --2,1 --> 2,1
// 2,1--3,2,1 --> 3,2,1
// 3,2,1 -- 4,3,2 --> 4,3,2
// 4,3,2 --3,4,2 --> 3,4,2
String ids = "" ;
Cookie [] cs = request.getCookies();
Cookie findC = null ;
if (cs!= null ){
for (Cookie c : cs){
if ( "last" .equals(c.getName())){
findC = c;
}
}
}
if (findC == null ){
//说明之前没有看过书的记录
ids += book.getId();
} else {
//说明之前有历史看过的书的记录,需要根据历史记录算一个新的记录出来
String [] olds = findC.getValue().split( "," );
StringBuffer buffer = new StringBuffer();
buffer.append(book.getId()+ "," );
for ( int i = 0 ;i<olds.length && buffer.toString().split( "," ).length< 3 ;i++){
String old = olds[i];
if (!old.equals(book.getId())){
buffer.append(old+ "," );
}
}
ids = buffer.substring( 0 , buffer.length()- 1 );
}
Cookie lastC = new Cookie( "last" ,ids);
lastC.setMaxAge( 3600 * 24 * 30 );
lastC.setPath(request.getContextPath());
response.addCookie(lastC);
}
|
以上就是本文的全部内容,希望对大家学习Java使用cookie显示最近查看过的书的方法有所帮助。