简易图书管理系统(主要是jsp+servlet的练习),基于jsp+servlet的图书管理系统

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 
27

用户登陆页面

28

装饰中......

29
30 31 32 33 34 35 36 37 38 39 40 41 43 48 49
账号:
密码:找回密码
42 44 45 46 注册 47
50
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 list=new ArrayList();
 71         list.add(user.getName());
 72         list.add(user.getPassword());
 73         list.add(user.getEmail());
 74         list.add(user.getPhone());
 75         
 76         boolean flag=BaseDao.addUpdateDelete(sql,list.toArray());
 77         if(flag){
 78             return true;
 79         }else{
 80             return false;
 81         }
 82     }
 83 
 84     @Override
 85     public List selectUser(String sql, Object[] arr) {
 86         Connection con=null;
 87         PreparedStatement ps=null;
 88         ResultSet rs=null;
 89         try {
 90             con=BaseDao.getCon();//第一步连接数据库
 91             ps=con.prepareStatement(sql);//第二步:预编译
 92             if(arr!=null){
 93                 for(int i=0;i list=new ArrayList();
100             while(rs.next()){
101                 User user=new User();
102                 user.setId(rs.getInt("id"));
103                 user.setName(rs.getString("name"));
104                 user.setPassword(rs.getString("password"));
105                 user.setEmail(rs.getString("email"));
106                 user.setPhone(rs.getString("phone"));
107                 //System.out.println(user);//测试数据
108                 list.add(user);
109             }
110             return list;
111         } catch (ClassNotFoundException e) {
112             // TODO Auto-generated catch block
113             e.printStackTrace();
114         } catch (SQLException e) {
115             // TODO Auto-generated catch block
116             e.printStackTrace();
117         }finally{
118             //关闭资源,避免出现异常
119             BaseDao.close(con, ps, rs);
120         }
121         
122         return null;
123     }
124 
125     
126 } 
  

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 
59

用户注册页面

60

装饰中......

61
62 63 64 65 69 70 71 72 76 77 78 79 83 84 85 86 87 88 89 90 91 92 93 95 100 101
账      号: 66 67
68
密      码: 73 74
75
确认密码: 80 81
82
电话号码:
电子邮件:
94 96 97 98 登陆 99
102
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
25 26 27 28 29 30 31 32 36 37
请输入账号:
33 34 35
38
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 49 50 51 52 53 54 55 <% 56 } 57 %> 58 59
编号书名价格作者封皮出版社
<%=b.getBookid() %><%=b.getBookname() %><%=b.getPrice() %><%=b.getAuthor() %><%=b.getPic() %><%=b.getPublish() %>
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 45 46 47 48 49 50 51 52 53 54 55 56
图书编号图书名称图书价格图书作者图书封皮图书出版社
<%=book.getBookid() %><%=book.getBookname() %><%=book.getPrice() %><%=book.getAuthor() %><%=book.getPublish() %>
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         
44         
45         
46         
47         
48     
49     <%} %>
50     
51         
52         
53     
54 
书本编号书本名称书本单价书本数量书本小计
<%=entry.getKey() %><%=entry.getValue().getBook().getBookname() %><%=entry.getValue().getBook().getPrice()%><%=entry.getValue().getNumber() %><%=price%>
价格总计<%=count %>
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

效果如下所示:


 基本的功能都已经实现了,权当练习的小项目的,欢迎交流

 

你可能感兴趣的:(jsp,servlet,mysql)