简易图书管理系统(主要是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控制台进行交互的银行管理系统)。
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
11 <html>
12 <head>
13 <base href="<%=basePath %>" />
14 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
15 <title>用户登陆页面</title>
16 <style type="text/css">
17 h1{text-align:left;}
18 h4{text-align:left;color:red;}
19 body{background:url(images/1.png)}
20 a{text-decoration:none;font-size:20px;color:black;}
21 a:hover{text-decoration:underline;font-size:24px;color:red;}
22 </style>
23
24 </head>
25 <body>
26 <form action="info.jsp" method="post">
27 <h1>用户登陆页面</h1>
28 <h4>装饰中......</h4>
29 <hr/>
30 <table align="left">
31 <tr>
32 <td>账号:</td>
33 <td><input type="text" name="name" id="name"></td>
34 </tr>
35 <tr>
36 <td>密码:</td>
37 <td><input type="password" name="password" id="password"></td>
38 <td><a href="searchPassword.jsp">找回密码</a></td>
39 </tr>
40 <tr>
41 <td colspan="1">
42 </td>
43 <td>
44 <input type="submit" value="登陆"/>
45 <input type="reset" value="重置"/>
46 <a href="register.jsp" target="_blank">注册</a>
47 </td>
48 </tr>
49 </table>
50 </form>
51 </body>
52 </html>
郁闷,当初这个本来是练习,练手的,就少写了一个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 + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath %>" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆成功或者失败的页面</title>
<style type="text/css">
h1{text-align:center;}
h4{text-align:right;color:red;}
body{background:url(images/2.png)}
a{text-align:center;text-decoration:none;color:blue;}
a:hover{text-decoration:underline;font-size:18px;}</style>
</head>
<body>
<!-- <h1>用户登陆成功或者失败的提示页面</h1> -->
<h4>装饰中......</h4>
<hr/>
<h1>现存图书列表</h1>
<%
//引入数据交互层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("登录失败");}
%></body>
</html>
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 * @return27 * @throws ClassNotFoundException28 * @throws SQLException29 */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 con41 * @param ps42 * @param rs43 */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 block50 e.printStackTrace();51 }52 }53 if(ps!=null){54 try {55 ps.close();56 } catch (SQLException e) {57 // TODO Auto-generated catch block58 e.printStackTrace();59 }60 }61 if(con!=null){62 try {63 con.close();64 } catch (SQLException e) {65 // TODO Auto-generated catch block66 e.printStackTrace();67 }68 }69 }70 71 /***72 * 同意增删改的方法73 * @param sql74 * @param arr75 * @return76 */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;i<arr.length;i++){86 ps.setObject(i+1, arr[i]);87 }88 }89 int count=ps.executeUpdate();//第四步:执行sql语句90 if(count>0){91 return true;92 }else{93 return false;94 }95 } catch (ClassNotFoundException e) {96 // TODO Auto-generated catch block97 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<User> 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 @Override23 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 block53 e.printStackTrace();54 } catch (SQLException e) {55 // TODO Auto-generated catch block56 e.printStackTrace();57 }finally{58 //关闭资源,避免出现异常59 BaseDao.close(con, ps, rs);60 }61 return null;62 }63 64 /***65 * 插入的方法,即注册66 */67 @Override68 public boolean register(User user) {69 String sql="insert into user values(0,?,?,?,?) ";70 List<Object> list=new ArrayList<Object>();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 @Override85 public List<User> 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<arr.length;i++){94 ps.setObject(i+1, arr[i]);95 }96 }97 //第四步执行sql98 rs=ps.executeQuery();99 List<User> list=new ArrayList<User>();
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<User> 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<User> selectUser(User user) {
22 //sql语句
23 //String sql="select * from user ";
24 StringBuilder sql=new StringBuilder("select * from user where 1=1 ");
25 List<Object> list=new ArrayList<Object>();
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<Book> 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 @Override22 public List<Book> 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<arr.length;i++){31 ps.setObject(i+1, arr[i]);32 }33 }34 //第四步执行sql35 rs=ps.executeQuery();36 List<Book> list=new ArrayList<Book>();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 block51 e.printStackTrace();52 } catch (SQLException e) {53 // TODO Auto-generated catch block54 e.printStackTrace();55 }finally{56 //关闭资源,避免出现异常57 BaseDao.close(con, ps, rs);58 }59 60 return null;61 }62 63 @Override64 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 //第四步执行sql75 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 block89 e.printStackTrace();90 } catch (SQLException e) {91 // TODO Auto-generated catch block92 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<Book> 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<Book> select(Book book){
21 //String sql="select * from book ";
22 StringBuilder sql=new StringBuilder("select * from book where 1=1 ");
23 //sql语句
24 List<Object> list=new ArrayList<Object>();
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">11 <html>12 <head>13 <base href="<%=basePath %>" />14 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">15 <title>注册的页面</title>16 <style type="text/css">17 h1{text-align:center;}18 h4{text-align:right;color:red;}19 body{background:url(images/2.png)}20 </style>21 22 <script type="text/javascript" src="js/jquery.min.js"></script>23 <script type="text/javascript">24 $(document).ready(function(){25 //alert("测试jQuery是否能用");26 $("#form1").submit(function(){27 var name=$("#name").val();//获取提交的值28 if(name.length==0){//进行判断,如果获取的值为0那么提示账号不能为空29 //alert("aa");//测试使用30 $("#nameError").html("账号不能为空");31 return false;32 }33 34 //密码进行验证不能为空35 var password=$("#password").val();//获取提交的密码的值36 if(password.length==0){37 $("#passwordError").html("密码不能为空");38 return false;39 }40 41 //确认密码进行验证42 var relpassword=$("#relpassword").val();//获取提交的确认密码的值43 if(relpassword.length==0){44 $("#relpasswordError").html("确认密码不能为空哦");45 return false;46 }47 48 if(password!=relpassword){49 $("#relpasswordError").html("确认密码输入不正确,请重新输入");50 return false;51 }52 });53 54 });55 </script>56 </head>57 <body>58 <form action="doregister.jsp" method="post" id="form1">59 <h1>用户注册页面</h1>60 <h4>装饰中......</h4> 61 <hr/>62 <table align="center">63 <tr>64 <td>账 号:</td>65 <td>66 <input type="text" name="name" id="name"/>67 <div id="nameError" style="display:inline;color:red;"></div>68 </td>69 </tr>70 <tr>71 <td>密 码:</td>72 <td>73 <input type="password" name="password" id="password">74 <div id="passwordError" style="display:inline;color:red;"></div>75 </td>76 </tr>77 <tr>78 <td>确认密码:</td>79 <td>80 <input type="password" name="relpassword" id="relpassword">81 <div id="relpasswordError" style="display:inline;color:red;"></div>82 </td>83 </tr>84 <tr>85 <td>电话号码:</td>86 <td><input type="text" name="phone" id="phone"></td>87 </tr>88 <tr>89 <td>电子邮件:</td>90 <td><input type="text" name="email" id="email"></td>91 </tr>92 <tr>93 <td colspan="1">94 </td>95 <td>96 <input type="submit" value="注册"/>97 <input type="reset" value="重置"/>98 <a href="login.jsp" target="_blank">登陆</a>99 </td>
100 </tr>
101 </table>
102 </form>
103 </body>
104 </html>
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">7 <html>8 <head>9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
10 <title>处理注册的页面</title>
11 </head>
12 <body>
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 </body>
38 </html>
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
11 <html>
12 <head>
13 <base href="<%=basePath %>" />
14 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
15 <title>找回密码</title>
16 <style type="text/css">
17 body{background:url(images/3.jpg)}
18 </style>
19 </head>
20 <body>
21 <h1>找回密码</h1>
22 <hr/>
23 <a href="javascript: window.history.go(-1)">返回上一级</a>
24 <form action="dosearchPassword.jsp" method="post">
25 <table>
26 <tr>
27 <td>请输入账号:</td>
28 <td><input type="text" name="name"/></td>
29 </tr>
30 <tr>
31 <td colspan="1"></td>
32 <td>
33 <input type="submit" value="提交">
34 <input type="reset" value="重置">
35 </td>
36 </tr>
37 </table>
38 </form>
39
40 </body>
41 </html>
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">7 <html>8 <head>9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
10 <title>处理找回密码的页面</title>
11 </head>
12 <body>
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<User> 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 </body>
34 </html>
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
11 <html>
12 <head>
13 <base href="<%=basePath %>" />
14 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
15 <title>弹出信息</title>
16
17
18 <script type="text/javascript">
19 alert("您的密码是:${user.password}");
20 </script>
21
22 </head>
23 <body style="background-color:pink;">
24 <h1>您的密码是:${user.password}</h1>
25 <a href="javascript: window.history.go(-1)">返回上一级</a>
26 </body>
27 </html>
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">9 <html>
10 <head>
11 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
12 <title>图书处理页面</title>
13 <style type="text/css">
14 h1{text-align:center;}
15 </style>
16 </head>
17 <body>
18 <%
19 Book book=new Book();
20 BookServiceImpl service=new BookServiceImpl();
21 List<Book> list=service.select(book);
22 %>
23 <h1>图书列表</h1>
24 <a href="javascript: window.history.go(-1)">返回上一级</a>
25 <table align="center" cellpadding="10" cellspacing="10">
26
27 <tr bgcolor="green">
28 <td>编号</td>
29 <td>书名</td>
30 <td>价格</td>
31 <td>作者</td>
32 <td>封皮</td>
33 <td>出版社</td>
34 </tr>
35 <%-- <%
36 for(Book b:list){
37 %> --%>
38 <%
39 String bg="";
40 for(int i=0;i<list.size();i++){
41 Book b=list.get(i);
42 if(i%2==0)
43 bg="pink";
44 else
45 bg="yellow";
46 %>
47 <tr bgcolor="<%=bg%>">
48 <td><%=b.getBookid() %></td>
49 <td><a href="doInfo.jsp?bookid=<%=b.getBookid() %>"><%=b.getBookname() %></a></td>
50 <td><%=b.getPrice() %></td>
51 <td><%=b.getAuthor() %></td>
52 <td><%=b.getPic() %></td>
53 <td><%=b.getPublish() %></td>
54 </tr>
55 <%
56 }
57 %>
58
59 </table>
60 </body>
61 </html>
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
14 <html>
15 <head>
16 <base href="<%=basePath %>" />
17 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
18 <title>书籍详细信息的页面</title>
19 </head>
20 <body>
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 </body>
33 </html>
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
16 <html>
17 <head>
18 <base href="<%=basePath %>" />
19 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
20 <title>图书详细信息页面</title>
21
22 <style type="text/css">
23 h1{text-align:center;}
24 a{font-size:24px;text-decoration:none;}
25 a:hover{text-decoration:underline;font-size:28px;}
26 </style>
27 </head>
28 <body>
29 <h1>图书详细信息的页面</h1>
30 <a href="javascript: window.history.go(-1)">返回上一级</a>
31 <%
32 Book book=(Book)session.getAttribute("book");
33 %>
34 <table align="center" cellpadding="20" cellspacing="20">
35 <tr>
36 <td>图书编号</td>
37 <td>图书名称</td>
38 <td>图书价格</td>
39 <td>图书作者</td>
40 <td>图书封皮</td>
41 <td>图书出版社</td>
42 </tr>
43 <tr>
44 <td><%=book.getBookid() %></td>
45 <td><%=book.getBookname() %></td>
46 <td><%=book.getPrice() %></td>
47 <td><%=book.getAuthor() %></td>
48 <td><img src="data:images/<%=book.getPic() %>"></td>
49 <td><%=book.getPublish() %></td>
50 </tr>
51 <tr>
52 <td colspan="3"></td>
53 <td></td>
54 <td colspan="2"></td>
55 </tr>
56 </table>
57 <div style="text-align:center;font-size:36px;">
58 <a href="doCard.jsp">添加到购物车</a>
59 <a href="book.jsp">图书列表</a>
60 </div>
61 </body>
62 </html>
View Code
效果如下所示:
12:页面最上面显示欢迎用户的功能和安全退出的功能logout.jsp和head.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8"2 pageEncoding="UTF-8"%>3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">4 <html>5 <head>6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">7 <title>退出登陆</title>8 </head>9 <body>
10 <%
11 session.invalidate();
12 response.sendRedirect("login.jsp");
13 %>
14 </body>
15 </html>
View Code
1 <%@page import="com.bie.po.User"%>2 <%@ page language="java" contentType="text/html; charset=UTF-8"3 pageEncoding="UTF-8"%>4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">5 <html>6 <head>7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">8 <title>头部信息</title>9 <style type="text/css">
10 #head{background-color:#eee;height:60px;}
11 a{font-size: 36px;}
12 </style>
13 </head>
14 <body>
15 <%
16 User user=(User)session.getAttribute("user");
17 if(user==null){
18 response.sendRedirect("login.jsp");
19 }else{
20 %>
21
22 <div id="head">
23 <table width=100%>
24 <tr>
25 <td>欢迎您 : <%=user.getName() %></td>
26 <td align="right">
27 <a href="cart.jsp">我的购物车</a>
28 <a href="logout.jsp">安全退出</a>
29 </td>
30 </tr>
31 </table>
32 <%} %>
33 </div>
34 </body>
35 </html>
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">7 <html>8 <head>9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
10 <title>购物车</title>
11 <style type="text/css">
12 tr,td{text-align:center;background-color:#eee;}
13
14 </style>
15 </head>
16 <body>
17 <table width="100%" align="center">
18 <tr>
19 <th>书本编号</th>
20 <th>书本名称</th>
21 <th>书本单价</th>
22 <th>书本数量</th>
23 <th>书本小计</th>
24 </tr>
25 <%
26
27 Map<Integer,CardItem> cart=(Map<Integer,CardItem>)session.getAttribute("cart");
28
29 //Set<Map.Entry<Integer,CardItem>> entrys=cart.entrySet();
30 //if(entrys==null || entrys.isEmpty()){
31 //response.sendRedirect("book.jsp");
32 //}
33 double count=0;//总价格
34 //for(Map.Entry<Integer,CardItem> entry : entrys){
35 for(Map.Entry<Integer,CardItem> entry : cart.entrySet()){
36
37 //小计
38 double price=entry.getValue().getNumber() * entry.getValue().getBook().getPrice();
39 //总价格
40 count=count+price;
41 %>
42 <tr>
43 <td><%=entry.getKey() %></td>
44 <td><%=entry.getValue().getBook().getBookname() %></td>
45 <td><%=entry.getValue().getBook().getPrice()%></td>
46 <td><%=entry.getValue().getNumber() %></td>
47 <td><%=price%></td>
48 </tr>
49 <%} %>
50 <tr>
51 <td colspan="4" align="right">价格总计</td>
52 <td><%=count %></td>
53 </tr>
54 </table>
55 <div style="text-align:right;font-size:36px;margin-top:20px;">
56 <a href="book.jsp">继续购买图书</a>
57 <a href="login.jsp">登陆页面</a>
58 </div>
59 </body>
60 </html>
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
10 <html>
11 <head>
12 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
13 <title>处理购物车</title>
14 </head>
15 <body>
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<Integer,CardItem> cart=(Map<Integer,CardItem>)session.getAttribute("cart");
31 //如果没有购物车,只有第一次访问,才会操作
32 if(cart==null){
33 //就new一个购物车
34 cart=new HashMap<Integer,CardItem>();
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 </body>
61 </html>
View Code
效果如下所示:
基本的功能都已经实现了,权当练习的小项目的,欢迎交流
简易图书管理系统(主要是jsp+servlet的练习),基于jsp+servlet的图书管理系统相关推荐
- jsp mysql问卷调查_基于jsp的问卷调查-JavaEE实现问卷调查 - java项目源码
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的问卷调查, 该项目可用各类java课程设计大作业中, 问卷调查的系统架构分为前后台两部分, 最终实现在线上进行问卷 ...
- jsp mysql花店_基于jsp的花店网站-JavaEE实现花店网站 - java项目源码
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的花店网站, 该项目可用各类java课程设计大作业中, 花店网站的系统架构分为前后台两部分, 最终实现在线上进行花店 ...
- 初学jsp课,一个基于jsp+javabean+servlet+sql server小型房源网站,实现了用户表,房源表,及留言板的增删查改。使用deamwear编译器
1 设计目的 <Web应用开发课程设计>是实践性教学环节之一,是<Web程序设计>课程的辅助教学课程.通过课程设计,使学生掌握Web网站的基本概念,结合实际的操作和设计,巩固课 ...
- 小说网jsp源码_基于jsp+mysql的JSP小说网
运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. IDE环境: Eclipse,Myeclipse,IDEA都可以 tomcat环境: Tomcat 7.x, ...
- java图书销售系统,基于jsp的图书销售管理系统-JavaEE实现图书销售管理系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的图书销售管理系统, 该项目可用各类java课程设计大作业中, 图书销售管理系统的系统架构分为前后台两部分, 最终实 ...
- 基于jsp + SSM的跳蚤管理系统
jsp+Servlet图书管理系统第一版的第一次更新:免费源码下载,停更,自行下载即可,谢谢:http://download.csdn.net/detail/biexiansheng/9877270 ...
- 居民信息管理系统java_基于jsp的社区住户信息管理系统-JavaEE实现社区住户信息管理系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的社区住户信息管理系统, 该项目可用各类java课程设计大作业中, 社区住户信息管理系统的系统架构分为前后台两部分, ...
- java动物乐园_基于jsp的动物园管理系统-JavaEE实现动物园管理系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的动物园管理系统, 该项目可用各类java课程设计大作业中, 动物园管理系统的系统架构分为前后台两部分, 最终实现在 ...
- java员工请假系统_基于jsp的员工请假管理系统-JavaEE实现员工请假管理系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的员工请假管理系统, 该项目可用各类java课程设计大作业中, 员工请假管理系统的系统架构分为前后台两部分, 最终实 ...
- 珠宝管理系统java,基于jsp的珠宝首饰进销存管理系统-JavaEE实现珠宝首饰进销存管理系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的珠宝首饰进销存管理系统, 该项目可用各类java课程设计大作业中, 珠宝首饰进销存管理系统的系统架构分为前后台两部 ...
最新文章
- asp.net中关于静态页面生成的代码实例
- Gurobi 生产计划调度学习案例(含代码实现) (生产切换、装配计划)
- C#通过Kernel32.dll动态调用C++生成dll相关接口(结构体转换)相关问题整理
- 电商商城小程序项目完整源码(微信小程序)
- java 极光_极光IM系列之java后台集成
- RS232 DB9串口设备
- android平板安装win10,如何给平板电脑装win10系统?
- Pycharm如何打开Django项目
- 从快感到成就感:多巴胺vs内啡肽
- 电脑服务器至强cpu性能排行,至强CPU性能排行榜,至强系列cpu天梯图2020.06
- 中国普通魔方行业市场供需与战略研究报告
- java 将海外时区转换为北京时区
- Spring Cloud Gateway(一)为什么用网关、能做什么、为什么选择Gateway、谓词工厂、过滤器配置
- 王者荣耀s14服务器维护时间,王者荣耀s14更新时间是什么时候 王者荣耀s14赛季时间...
- 【前端春招】前端春招实习+秋招心路历程
- 用计算机在记事本做图案,记事本如何自定义制作CAD图案填充
- EndNote使用指南
- 软件工程----第一遍机房文档之串思路
- Google Earth Engine(GEE)——全球12级流域矢量数据免费下载(含数据下载链接)
- 电力VR技术来进行安全教育培训有什么好处广州华锐互动
热门文章
- win10edge启用html5,Win 10 Edge浏览器极速运行的设置方法
- 【收集表】欢迎各位来填写查看调查表-安卓手机安装运行谷歌三件套、googleplay调查收集表,便于大家选择收集安装框架及软件...
- DataMatrix二维码识别 Halcon 同类软件 Malcon 机器视觉软件 案例讲解 FindDataCode2d
- linux libuv,libuv queue的实现
- 高新技术企业认定申报书编制的要求是什么?
- 7-25朋友圈(C语言版)
- 全面升级!网易易盾发布设备DNA指纹系统
- 读书笔记17 《靠谱》大石哲之
- 第一行代码——Android pdf
- Autofac基础知识学习