首先创建好数据库;
然后创建一个book类,在domain包里
package com.csdn.book;
public class Book {
private String id;
private String name;
private String author;
private String state;
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 getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getstate() {
return state;
}
public void setstate(String state) {
this.state = state;
}
}
//创建工具类
package com.csdn.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCDemo {
public static Connection con;
public static Connection getConnection(){
if(con==null){
try {
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/book?user=root&password=root&useUnicode=true&characterEncoding=UTF-8");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return con;
}
public static void dbClose1(PreparedStatement st, Connection con) {
if (st != null) {
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void dbClose(ResultSet rs, PreparedStatement st, Connection con) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
dbClose1(st, con);
}
}
//创建dao包里的链接文件
package com.csdn.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.csdn.book.Book;
import com.csdn.util.JDBCDemo;
public class BookDao {
public List<Book> getAll(){
Connection conn=null;
PreparedStatement pt=null;
ResultSet rs=null;
conn=JDBCDemo.getConnection();
String sql="select * from users";
List<Book> list = new ArrayList<Book>();
try {
pt=conn.prepareStatement(sql);
rs=pt.executeQuery();
while(rs.next()){
Book book = new Book();
book.setId(rs.getString("id"));
book.setName(rs.getString("name"));
book.setAuthor(rs.getString("author"));
book.setstate(rs.getString("state"));
list.add(book);
}
return list;
} catch (SQLException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}/*finally{
JDBCDemo.dbClose(rs, pt, conn);
}*/
}
public Book getBook(String id){
//Book b=null;
Connection conn=null;
PreparedStatement pt=null;
ResultSet rs=null;
conn=JDBCDemo.getConnection();
String sql = "select * from users where id=?";
try {
pt=conn.prepareStatement(sql);
pt.setString(1, id);
rs = pt.executeQuery();
if(rs.next()){
Book b=new Book();
b.setId(rs.getString("id"));
b.setName(rs.getString("name"));
b.setAuthor(rs.getString("author"));
b.setstate(rs.getString("state"));
return b;
}
return null;
} catch (SQLException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}/*finally{
JDBCDemo.dbClose(rs, pt, conn);
}*/
}
}
//
package com.csdn.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.csdn.book.Book;
import com.csdn.dao.BookDao;
public class BookServlet1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//显示所有书名
out.print("本店商品有:<br />");
//new 一个dao对象
BookDao bkb=new BookDao();
//调用getALL方法
List<Book> list = bkb.getAll();
for(Book book:list){
out.print("<a href='/book/BookServlet2?id="+book.getId()+"'target='_blank'>"+book.getName()+"</a><br />");
}
out.print("您浏览过的商品是:"+"<br />");
Cookie[] cookie=request.getCookies();
for(int i=0;cookie!=null && i<cookie.length;i++){
if(cookie[i].getName().equals("books")){
String[] ids=cookie[i].getValue().split(",");
for(String id:ids){
Book book = bkb.getBook(id);
out.print(book.getName()+"<br />");
}
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
package com.csdn.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.LinkedList;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.csdn.book.Book;
import com.csdn.dao.BookDao;
public class BookServlet2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String id = request.getParameter("id");
System.out.println(id);
BookDao bd= new BookDao();
Book b=bd.getBook(id);
System.out.println(b);
out.print("书号: "+b.getId()+"<br />");
out.print("书名: "+b.getName()+"<br />");
out.print("作者: "+b.getAuthor()+"<br />");
out.print("介绍:"+b.getstate()+"<br />");
String value =buildCookValue(id,request);
Cookie cookie = new Cookie("books",value);
cookie.setMaxAge(7*24*3600);
cookie.setPath("/book");
response.addCookie(cookie);
}
public String buildCookValue(String id,HttpServletRequest request){
String bookhistory=null;
Cookie[] cookies = request.getCookies();
for(int i=0;cookies!=null && i<cookies.length;i++){
if(cookies[i].getName().equals("bookhistory")){
bookhistory = cookies[i].getValue();
}
}
if(bookhistory == null){
return id;
}
LinkedList<String> list = new LinkedList(Arrays.asList(bookhistory.split(",")));
if(list.contains(id)){
list.remove(id);
list.addFirst(id);
}else{
//bookhistory=2,3,5 1 1,2,3
//bookhistory=2,3 1 1,2,3
if(list.size()>=3){
list.removeLast();
list.addFirst(id);
}else{
list.addFirst(id);
}
}
StringBuffer sb = new StringBuffer();
for(String bid: list){
sb.append(bid+",");
}
return sb.deleteCharAt(sb.length()-1).toString();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}