jsp+Servlet图书管理系统第一版的第一次更新:免费源码下载,停更,自行下载即可,谢谢:http://download.csdn.net/detail/biexiansheng/9877270
jsp+Servlet图书管理系统第一版的第二次更新:免费源码下载,停更,自行下载即可,谢谢:http://download.csdn.net/download/biexiansheng/10164299
2017/12/28,jsp+servlet的第二版的图书管理系统更新1.0.0版本+2.0.0.版本(持续更新中):收费版,支持定制,修改到直到你验收为止,上面第一版不再更新,谢谢,更多功能请联系qq1748741328。
2018-12-28,jsp+servlet的第三版的图书管理系统更新。免费源码下载,停更,自行下载即可,谢谢:https://download.csdn.net/download/biexiansheng/10882360。
2018-12-28,javase的银行管理系统更新。免费源码下载,停更,自行下载即可,谢谢:https://download.csdn.net/download/biexiansheng/10882370。(基于javase和mysql实现的,不是可视化的,是基于eclipse控制台进行交互的银行管理系统)。
===============================================================
免费提供源码,有偿提供服务。谢谢。<支持其他系统定制,欢迎骚扰>
qq:1748741328。
===============================================================
1:首先设计用户表和图书表,设计的字段和类型如下图所示
1.1:用户表user
1.2:图书表book
2:第二写实体类user.java和book.java和CardItem.java
1 package com.bie.po;
2
3 import java.io.Serializable;
4
5 /**
6 * @author BieHongLi
7 * @version 创建时间:2017年2月21日 上午9:59:03
8 * 用户的实体类
9 */
10 public class User implements Serializable{
11
12 //增加序列号
13 private static final long serialVersionUID = 1L;
14 private Integer id;
15 private String name;
16 private String password;
17 private String email;
18 private String phone;
19 public Integer getId() {
20 return id;
21 }
22 public void setId(Integer id) {
23 this.id = id;
24 }
25 public String getName() {
26 return name;
27 }
28 public void setName(String name) {
29 this.name = name;
30 }
31 public String getPassword() {
32 return password;
33 }
34 public void setPassword(String password) {
35 this.password = password;
36 }
37 public String getEmail() {
38 return email;
39 }
40 public void setEmail(String email) {
41 this.email = email;
42 }
43 public String getPhone() {
44 return phone;
45 }
46 public void setPhone(String phone) {
47 this.phone = phone;
48 }
49
50 //重写toString 方法
51 @Override
52 public String toString() {
53 return "User [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + ", phone=" + phone
54 + "]";
55 }
56
57
58 }
View Code
1 package com.bie.po;
2
3 import java.io.Serializable;
4
5 /**
6 * @author BieHongLi
7 * @version 创建时间:2017年2月23日 上午10:19:08
8 * 图书的实体类
9 */
10 public class Book implements Serializable{
11
12
13 private static final long serialVersionUID = 1L;
14 private Integer bookid;
15 private String bookname;
16 private Double price;
17 private String author;
18 private String pic;
19 private String publish;
20 public Integer getBookid() {
21 return bookid;
22 }
23 public void setBookid(Integer bookid) {
24 this.bookid = bookid;
25 }
26 public String getBookname() {
27 return bookname;
28 }
29 public void setBookname(String bookname) {
30 this.bookname = bookname;
31 }
32 public Double getPrice() {
33 return price;
34 }
35 public void setPrice(Double price) {
36 this.price = price;
37 }
38 public String getAuthor() {
39 return author;
40 }
41 public void setAuthor(String author) {
42 this.author = author;
43 }
44 public String getPic() {
45 return pic;
46 }
47 public void setPic(String pic) {
48 this.pic = pic;
49 }
50 public String getPublish() {
51 return publish;
52 }
53 public void setPublish(String publish) {
54 this.publish = publish;
55 }
56 //重写toString()方法
57 @Override
58 public String toString() {
59 return "Book [bookid=" + bookid + ", bookname=" + bookname + ", price=" + price + ", author=" + author
60 + ", pic=" + pic + ", publish=" + publish + "]";
61 }
62
63
64 }
package com.bie.po;
/**
* @author BieHongLi
* @version 创建时间:2017年2月25日 下午9:28:34
* 购物车的实体类
*/
public class CardItem {
private Book book;//书本的实体类
private int number;//数量
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
View Code
3:第三写登陆页面login.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <%
4 //获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
5 String path = request.getContextPath();
6 String basePath = request.getScheme() + "://"
7 + request.getServerName() + ":" + request.getServerPort()
8 + path + "/";
9 %>
10
11
12
13
14
15 用户登陆页面
16
23
24
25
26
51
52
郁闷,当初这个本来是练习,练手的,就少写了一个info.jsp,无数个加我要info.jsp,要了就把我拉黑,在下佩服至极啊。
贴一下吧,info.jsp。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,com.bie.po.*"%>
<%@ page import="com.bie.dao.UserDao" %>
<%@ page import="com.bie.dao.impl.UserDaoImpl" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
//获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
登陆成功或者失败的页面
装饰中......
现存图书列表
<%
//引入数据交互层
User user=new User();
UserDao dao=new UserDaoImpl();
String name=request.getParameter("name");
String password=request.getParameter("password");
String isAdmin=request.getParameter("isAdmin");
user.setName(name);
user.setPassword(password);
user.setIsAdmin(isAdmin);
User us=dao.login(user);
session.setAttribute("user",user);
if(us != null){
//如果是管理员跳转到管理员页面
if(user.getIsAdmin().equals("1")){
//out.println(us.getIsAdmin());
response.sendRedirect("admin.jsp");
}else if(user.getIsAdmin().equals("0")){
//如果是普通会员,跳转到图书列表的页面
response.sendRedirect("book.jsp");
}
}else{
//response.sendRedirect("login.jsp");
out.println("登录失败");
}
%>
View Code
4:写完登陆页面就需要实现登陆的功能了,开始写后台BaseDao.java连接数据库
1 package com.bie.utils;
2
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8 import java.util.ResourceBundle;
9
10
11 /**
12 * @author BieHongLi
13 * @version 创建时间:2017年2月21日 上午10:01:14
14 * 数据交互层dao层
15 */
16 public class BaseDao {
17
18
19 private static String driver="com.mysql.jdbc.Driver";
20 private static String url="jdbc:mysql:///test";
21 private static String user="root";
22 private static String password="123456";
23
24 /***
25 * 连接数据库的方法
26 * @return
27 * @throws ClassNotFoundException
28 * @throws SQLException
29 */
30 public static Connection getCon() throws ClassNotFoundException, SQLException{
31 Class.forName(driver);//加载数据库驱动
32 System.out.println("测试加载数据库成功");
33 Connection con=DriverManager.getConnection(url, user, password);
34 System.out.println("测试数据库链接成功");
35 return con;
36 }
37
38 /***
39 * 关闭数据库的方法
40 * @param con
41 * @param ps
42 * @param rs
43 */
44 public static void close(Connection con,PreparedStatement ps,ResultSet rs){
45 if(rs!=null){//关闭资源,避免出现异常
46 try {
47 rs.close();
48 } catch (SQLException e) {
49 // TODO Auto-generated catch block
50 e.printStackTrace();
51 }
52 }
53 if(ps!=null){
54 try {
55 ps.close();
56 } catch (SQLException e) {
57 // TODO Auto-generated catch block
58 e.printStackTrace();
59 }
60 }
61 if(con!=null){
62 try {
63 con.close();
64 } catch (SQLException e) {
65 // TODO Auto-generated catch block
66 e.printStackTrace();
67 }
68 }
69 }
70
71 /***
72 * 同意增删改的方法
73 * @param sql
74 * @param arr
75 * @return
76 */
77 public static boolean addUpdateDelete(String sql,Object[] arr){
78 Connection con=null;
79 PreparedStatement ps=null;
80 try {
81 con=BaseDao.getCon();//第一步 :连接数据库的操作
82 ps=con.prepareStatement(sql);//第二步:预编译
83 //第三步:设置值
84 if(arr!=null && arr.length!=0){
85 for(int i=0;i0){
91 return true;
92 }else{
93 return false;
94 }
95 } catch (ClassNotFoundException e) {
96 // TODO Auto-generated catch block
97 e.printStackTrace();
98 } catch (SQLException e) {
99 // TODO Auto-generated catch block
100 e.printStackTrace();
101 }
102 return false;
103 }
104
105 /*public static void main(String[] args) {
106 try {
107 BaseDao.getCon();
108 System.out.println("测试数据库链接成功");
109 } catch (ClassNotFoundException e) {
110 // TODO Auto-generated catch block
111 e.printStackTrace();
112 } catch (SQLException e) {
113 // TODO Auto-generated catch block
114 e.printStackTrace();
115 }
116 }*/
117
118
119 }
View Code
5:写完工具类BaseDao.java开始写UserDao.java接口和UserDaoImpl.java实现类
1 package com.bie.dao;
2
3 import java.util.List;
4
5 import com.bie.po.User;
6
7 /**
8 * @author BieHongLi
9 * @version 创建时间:2017年2月21日 上午10:38:40
10 * 创建一个接口用于声明用户登陆注册的方法
11 */
12 public interface UserDao {
13
14 /***
15 * 用户登陆的方法声明
16 * @param user
17 * @return
18 */
19 public User login(User user);
20
21 /***
22 * 用户注册的方法声明
23 * @param user
24 * @return
25 */
26 public boolean register(User user);
27
28 /***
29 * 查询用户的信息
30 * @param sql
31 * @param arr
32 * @return
33 */
34 public List selectUser(String sql,Object[] arr);
35 }
View Code
1 package com.bie.dao.impl;
2
3 import java.sql.Connection;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7 import java.util.ArrayList;
8 import java.util.List;
9
10 import com.bie.dao.UserDao;
11 import com.bie.po.Book;
12 import com.bie.po.User;
13 import com.bie.utils.BaseDao;
14
15 /**
16 * @author BieHongLi
17 * @version 创建时间:2017年2月21日 上午10:38:56
18 *
19 */
20 public class UserDaoImpl implements UserDao{
21
22 @Override
23 public User login(User user) {
24 Connection con=null;
25 PreparedStatement ps=null;
26 ResultSet rs=null;
27 try {
28 con=BaseDao.getCon();//1:获取数据库的连接
29 //2:书写sql语句
30 String sql="select * from user where name=? and password=? ";
31 ps=con.prepareStatement(sql);//3:预编译
32 //4:设置值
33 ps.setString(1, user.getName());
34 ps.setString(2, user.getPassword());
35 rs=ps.executeQuery();//5:执行sql语句
36 User users=null;
37 if(rs.next()){
38 users=new User();
39 //从数据库中获取值设置到实体类的setter方法中
40 users.setId(rs.getInt("id"));
41 users.setName(rs.getString("name"));
42 users.setPassword(rs.getString("password"));
43 users.setEmail(rs.getString("email"));
44 users.setPhone(rs.getString("phone"));
45
46 return user;
47 }else{
48 return null;
49 }
50
51 } catch (ClassNotFoundException e) {
52 // TODO Auto-generated catch block
53 e.printStackTrace();
54 } catch (SQLException e) {
55 // TODO Auto-generated catch block
56 e.printStackTrace();
57 }finally{
58 //关闭资源,避免出现异常
59 BaseDao.close(con, ps, rs);
60 }
61 return null;
62 }
63
64 /***
65 * 插入的方法,即注册
66 */
67 @Override
68 public boolean register(User user) {
69 String sql="insert into user values(0,?,?,?,?) ";
70 List
View Code
6:写完dao层,写service层的接口和实现类
1 package com.bie.service;
2
3 import java.util.List;
4
5 import com.bie.po.User;
6
7 /**
8 * @author BieHongLi
9 * @version 创建时间:2017年2月23日 下午1:58:59
10 *
11 */
12 public interface UserService {
13
14 /***
15 * 用户查询的信息
16 * @param user
17 * @return
18 */
19 public List selectUser(User user);
20 }
View Code
1 package com.bie.service.impl;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import com.bie.dao.UserDao;
7 import com.bie.dao.impl.UserDaoImpl;
8 import com.bie.po.User;
9 import com.bie.service.UserService;
10
11 /**
12 * @author BieHongLi
13 * @version 创建时间:2017年2月23日 下午1:59:36
14 *
15 */
16 public class UserServiceImpl implements UserService{
17
18 private UserDao dao=new UserDaoImpl();
19
20 @Override
21 public List selectUser(User user) {
22 //sql语句
23 //String sql="select * from user ";
24 StringBuilder sql=new StringBuilder("select * from user where 1=1 ");
25 List list=new ArrayList();
26 if(user!=null){
27 //按照姓名查询
28 if(user.getName()!=null && !user.getName().equals("")){
29 sql.append(" and name = ? ");
30 list.add(user.getName());
31 }
32 //按照email查询
33 if(user.getEmail()!=null && !user.getEmail().equals("")){
34 sql.append(" and email = ? ");
35 list.add(user.getEmail());
36 }
37
38 }
39 return dao.selectUser(sql.toString(), list.toArray());
40 }
41
42
43 }
View Code
7:然后就可以进行登陆了,由于登陆之后显示的是book列表,所以把图书的查询的dao层和service层也列出来
1 package com.bie.dao;
2
3 import java.util.List;
4
5 import com.bie.po.Book;
6
7 /**
8 * @author BieHongLi
9 * @version 创建时间:2017年2月23日 上午10:22:45
10 * 图书信息的接口
11 */
12 public interface BookDao {
13
14 /***
15 * 图书信息查询的方法
16 * @param sql
17 * @param arr
18 * @return
19 */
20 public List select(String sql,Object[] arr);
21
22 /***
23 * 获取图书的编号进行查询
24 * @param book
25 * @return
26 */
27 public Book getBook(Integer id);
28 }
View Code
1 package com.bie.dao.impl;
2
3 import java.sql.Connection;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7 import java.util.ArrayList;
8 import java.util.List;
9
10 import com.bie.dao.BookDao;
11 import com.bie.po.Book;
12 import com.bie.utils.BaseDao;
13
14 /**
15 * @author BieHongLi
16 * @version 创建时间:2017年2月23日 上午10:24:02
17 *
18 */
19 public class BookDaoImpl implements BookDao{
20
21 @Override
22 public List select(String sql, Object[] arr) {
23 Connection con=null;
24 PreparedStatement ps=null;
25 ResultSet rs=null;
26 try {
27 con=BaseDao.getCon();//第一步连接数据库
28 ps=con.prepareStatement(sql);//第二步:预编译
29 if(arr!=null){
30 for(int i=0;i list=new ArrayList();
37 while(rs.next()){
38 Book book=new Book();
39 book.setBookid(rs.getInt("bookid"));
40 book.setBookname(rs.getString("bookname"));
41 book.setPrice(rs.getDouble("price"));
42 book.setAuthor(rs.getString("author"));
43 book.setPic(rs.getString("pic"));
44 book.setPublish(rs.getString("publish"));
45
46 list.add(book);
47 }
48 return list;
49 } catch (ClassNotFoundException e) {
50 // TODO Auto-generated catch block
51 e.printStackTrace();
52 } catch (SQLException e) {
53 // TODO Auto-generated catch block
54 e.printStackTrace();
55 }finally{
56 //关闭资源,避免出现异常
57 BaseDao.close(con, ps, rs);
58 }
59
60 return null;
61 }
62
63 @Override
64 public Book getBook(Integer id) {
65 Connection con=null;
66 PreparedStatement ps=null;
67 ResultSet rs=null;
68 try {
69 con=BaseDao.getCon();//第一步连接数据库
70 String sql="select * from book where bookid = ? ";
71 ps=con.prepareStatement(sql);//第二步:预编译
72 ps.setInt(1, id);
73
74 //第四步执行sql
75 rs=ps.executeQuery();
76 while(rs.next()){
77 Book books=new Book();
78 books.setBookid(rs.getInt("bookid"));
79 books.setBookname(rs.getString("bookname"));
80 books.setPrice(rs.getDouble("price"));
81 books.setAuthor(rs.getString("author"));
82 books.setPic(rs.getString("pic"));
83 books.setPublish(rs.getString("publish"));
84
85 return books;
86 }
87 } catch (ClassNotFoundException e) {
88 // TODO Auto-generated catch block
89 e.printStackTrace();
90 } catch (SQLException e) {
91 // TODO Auto-generated catch block
92 e.printStackTrace();
93 }finally{
94 //关闭资源,避免出现异常
95 BaseDao.close(con, ps, rs);
96 }
97
98 return null;
99 }
100
101
102 }
View Code
1 package com.bie.service;
2
3 import java.util.List;
4
5 import com.bie.po.Book;
6
7 /**
8 * @author BieHongLi
9 * @version 创建时间:2017年2月23日 上午10:56:42
10 *
11 */
12 public interface BookService {
13
14 /***
15 * 图书信息查询的方法
16 * @return
17 */
18 public List select(Book book);
19
20 /***
21 * 根据id进行查询
22 * @param id
23 * @return
24 */
25 public Book getBook(Book book);
26 }
View Code
1 package com.bie.service.impl;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import com.bie.dao.BookDao;
7 import com.bie.dao.impl.BookDaoImpl;
8 import com.bie.po.Book;
9 import com.bie.service.BookService;
10
11 /**
12 * @author BieHongLi
13 * @version 创建时间:2017年2月23日 上午10:57:01
14 *
15 */
16 public class BookServiceImpl implements BookService{
17
18 private BookDao dao=new BookDaoImpl();
19
20 public List select(Book book){
21 //String sql="select * from book ";
22 StringBuilder sql=new StringBuilder("select * from book where 1=1 ");
23 //sql语句
24 List list=new ArrayList();
25 if(book!=null){
26
27 if(book.getBookid()!=null && book.getBookid()!=0){
28 sql.append(" and bookid=? ");
29 list.add(book.getBookid());
30 }
31 /*list.add(book.getBookname());
32 list.add(book.getPrice());
33 list.add(book.getAuthor());
34 list.add(book.getPic());
35 list.add(book.getPublish());*/
36 }
37
38 return dao.select(sql.toString(), list.toArray());
39 }
40
41 @Override
42 public Book getBook(Book book) {
43 if(book.getBookid()!=null && book.getBookid()!=0){
44 return dao.getBook(book.getBookid());
45 }
46 return null;
47 }
48
49 }
View Code
8:现在展示登陆之后的页面
9:现在展示注册的功能,由于dao层和service层在上面都已经说过了,这里只显示没写的register.jsp页面和doregister.jsp页面
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <%
4 //获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
5 String path = request.getContextPath();
6 String basePath = request.getScheme() + "://"
7 + request.getServerName() + ":" + request.getServerPort()
8 + path + "/";
9 %>
10
11
12
13
14
15 注册的页面
16
21
22
23
56
57
58
103
104
View Code
1 <%@page import="com.bie.dao.impl.UserDaoImpl"%>
2 <%@page import="com.bie.dao.UserDao"%>
3 <%@page import="com.bie.po.User"%>
4 <%@ page language="java" contentType="text/html; charset=UTF-8"
5 pageEncoding="UTF-8"%>
6
7
8
9
10 处理注册的页面
11
12
13 <%
14 User user=new User();
15 //获取login.jsp页面提交的账号和密码
16 String name=request.getParameter("name");
17 String password=request.getParameter("password");
18 String email=request.getParameter("email");
19 String phone=request.getParameter("phone");
20
21 //获取register.jsp页面提交的账号和密码设置到实体类User中
22 user.setName(name);
23 user.setPassword(password);
24 user.setEmail(email);
25 user.setPhone(phone);
26
27 //引入数据交互层
28 UserDao dao=new UserDaoImpl();
29 boolean flag=dao.register(user);
30
31 if(flag){
32 response.sendRedirect("login.jsp");
33 }else{
34 response.sendRedirect("register.jsp");
35 }
36 %>
37
38
View Code
效果如下所示:
10:找回密码的功能searchPassword.jsp页面和dosearchPassword.jsp和search.jsp页面
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <%
4 //获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
5 String path = request.getContextPath();
6 String basePath = request.getScheme() + "://"
7 + request.getServerName() + ":" + request.getServerPort()
8 + path + "/";
9 %>
10
11
12
13
14
15 找回密码
16
19
20
21 找回密码
22
23 返回上一级
24
39
40
41
View Code
1 <%@page import="java.util.List"%>
2 <%@page import="com.bie.service.impl.UserServiceImpl"%>
3 <%@page import="com.bie.po.User"%>
4 <%@ page language="java" contentType="text/html; charset=UTF-8"
5 pageEncoding="UTF-8"%>
6
7
8
9
10 处理找回密码的页面
11
12
13 <%
14 User user=new User();
15 //获取login.jsp页面提交的账号和密码
16 String name=request.getParameter("name");
17 user.setName(name);
18
19 UserServiceImpl service=new UserServiceImpl();
20 List list=service.selectUser(user);
21 request.setAttribute("list", list);
22 for(User u:list){
23 request.setAttribute("user", u);
24 out.print(u);
25 }
26 if(user!=null){
27 //response.sendRedirect("search.jsp");//不传输数据的转发
28 request.getRequestDispatcher("search.jsp").forward(request, response);
29 }
30
31
32 %>
33
34
View Code
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <%
4 //获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
5 String path = request.getContextPath();
6 String basePath = request.getScheme() + "://"
7 + request.getServerName() + ":" + request.getServerPort()
8 + path + "/";
9 %>
10
11
12
13
14
15 弹出信息
16
17
18
21
22
23
24 您的密码是:${user.password}
25 返回上一级
26
27
View Code
效果如下所示:
11:图书列表的功能和图书详情的功能book.jsp页面,doInfo.jsp页面,detail.jsp页面
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8" %>
3 <%@ page import="java.util.List" %>
4 <%@ page import="com.bie.po.Book" %>
5 <%@ page import="com.bie.service.impl.BookServiceImpl" %>
6
7 <%@ include file="head.jsp" %>
8
9
10
11
12 图书处理页面
13
16
17
18 <%
19 Book book=new Book();
20 BookServiceImpl service=new BookServiceImpl();
21 List list=service.select(book);
22 %>
23 图书列表
24 返回上一级
25
26
27
28 编号
29 书名
30 价格
31 作者
32 封皮
33 出版社
34
35 <%-- <%
36 for(Book b:list){
37 %> --%>
38 <%
39 String bg="";
40 for(int i=0;i
47
48 <%=b.getBookid() %>
49 <%=b.getBookname() %>
50 <%=b.getPrice() %>
51 <%=b.getAuthor() %>
52 <%=b.getPic() %>
53 <%=b.getPublish() %>
54
55 <%
56 }
57 %>
58
59
60
61
View Code
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <%@ page import="com.bie.po.Book" %>
4 <%@ page import="com.bie.service.BookService" %>
5 <%@ page import="com.bie.service.impl.BookServiceImpl" %>
6 <%
7 //获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
8 String path = request.getContextPath();
9 String basePath = request.getScheme() + "://"
10 + request.getServerName() + ":" + request.getServerPort()
11 + path + "/";
12 %>
13
14
15
16
17
18 书籍详细信息的页面
19
20
21 <%
22 Book book=new Book();
23 String sid=request.getParameter("bookid");
24 Integer id=Integer.parseInt(sid);
25 BookService service=new BookServiceImpl();
26 book.setBookid(id);
27 Book books=service.getBook(book);
28
29 session.setAttribute("book", books);
30 response.sendRedirect("detail.jsp");
31 %>
32
33
View Code
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <%@ page import="com.bie.po.Book" %>
4 <%@ page import="com.bie.service.BookService" %>
5 <%@ page import="com.bie.service.impl.BookServiceImpl" %>
6
7 <%@ include file="head.jsp" %>
8 <%
9 //获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
10 String path = request.getContextPath();
11 String basePath = request.getScheme() + "://"
12 + request.getServerName() + ":" + request.getServerPort()
13 + path + "/";
14 %>
15
16
17
18
19
20 图书详细信息页面
21
22
27
28
29 图书详细信息的页面
30 返回上一级
31 <%
32 Book book=(Book)session.getAttribute("book");
33 %>
34
35
36 图书编号
37 图书名称
38 图书价格
39 图书作者
40 图书封皮
41 图书出版社
42
43
44 <%=book.getBookid() %>
45 <%=book.getBookname() %>
46 <%=book.getPrice() %>
47 <%=book.getAuthor() %>
48
49 <%=book.getPublish() %>
50
51
52
53
54
55
56
57
61
62
View Code
效果如下所示:
12:页面最上面显示欢迎用户的功能和安全退出的功能logout.jsp和head.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3
4
5
6
7 退出登陆
8
9
10 <%
11 session.invalidate();
12 response.sendRedirect("login.jsp");
13 %>
14
15
View Code
1 <%@page import="com.bie.po.User"%>
2 <%@ page language="java" contentType="text/html; charset=UTF-8"
3 pageEncoding="UTF-8"%>
4
5
6
7
8 头部信息
9
13
14
15 <%
16 User user=(User)session.getAttribute("user");
17 if(user==null){
18 response.sendRedirect("login.jsp");
19 }else{
20 %>
21
22
34
35
View Code
效果如下所示:
13:购物车功能cart.jsp和添加到购物车doCard.jsp的实现
1 <%@page import="java.util.Set"%>
2 <%@page import="java.util.Map"%>
3 <%@page import="com.bie.po.CardItem"%>
4 <%@ page language="java" contentType="text/html; charset=UTF-8"
5 pageEncoding="UTF-8"%>
6
7
8
9
10 购物车
11
15
16
17
18
19 书本编号
20 书本名称
21 书本单价
22 书本数量
23 书本小计
24
25 <%
26
27 Map cart=(Map)session.getAttribute("cart");
28
29 //Set> entrys=cart.entrySet();
30 //if(entrys==null || entrys.isEmpty()){
31 //response.sendRedirect("book.jsp");
32 //}
33 double count=0;//总价格
34 //for(Map.Entry entry : entrys){
35 for(Map.Entry entry : cart.entrySet()){
36
37 //小计
38 double price=entry.getValue().getNumber() * entry.getValue().getBook().getPrice();
39 //总价格
40 count=count+price;
41 %>
42
43 <%=entry.getKey() %>
44 <%=entry.getValue().getBook().getBookname() %>
45 <%=entry.getValue().getBook().getPrice()%>
46 <%=entry.getValue().getNumber() %>
47 <%=price%>
48
49 <%} %>
50
51 价格总计
52 <%=count %>
53
54
55
59
60
View Code
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <%@ page import="com.bie.po.Book" %>
4 <%@page import="java.util.HashMap"%>
5 <%@page import="com.bie.po.CardItem"%>
6 <%@page import="java.util.Map"%>
7
8
9
10
11
12
13 处理购物车
14
15
16
17 <%
18 //购物车功能
19 //1:我购买的是哪一本书籍,将将要购买的书本先放到session域中
20 Book book=(Book)session.getAttribute("book");
21
22 //2:如何把该书籍存放到购物车中???
23 //2.1:先判断是否有购物车,如果没有购物车,那么创建购物车,如果有购物车,则直接使用购物车
24 //2.2:购物车使用什么数据类型?
25 //数组(数组是固定大小的,所以不适合)
26 //List集合(list集合是可以存放相同的对象,所以不适合)
27 //Set集合,Map集合(使用Map集合是因为Map集合存储速度比较快) key:存放商品编号;value:存放购物车项;
28
29 //先将购物车从session中拿出来,然后判断是否存在,不存在就创建。
30 Map cart=(Map)session.getAttribute("cart");
31 //如果没有购物车,只有第一次访问,才会操作
32 if(cart==null){
33 //就new一个购物车
34 cart=new HashMap();
35 }
36
37 //把书籍存放到购物车
38 //第二次判断,判断购物车中是否有该书籍
39 //从购物车中,获取该书籍,如果为空,表示购物车中没有该书籍
40 CardItem item=cart.get(book.getBookid());
41 if(item==null){//购物车中不存在这本书,创建,数量默认为1
42 item=new CardItem();
43 item.setBook(book);
44 item.setNumber(1);
45 }else{//购物车中,存在该书籍,直接把数量加1
46 item.setNumber(item.getNumber()+1);
47 }
48
49
50 //把购物车项存放到购物车
51 cart.put(book.getBookid(), item);
52
53 //把购物车存放到session
54 session.setAttribute("cart", cart);
55
56 response.sendRedirect("book.jsp");
57 %>
58
59
60
61
View Code
效果如下所示:
基本的功能都已经实现了,权当练习的小项目的,欢迎交流