create database weblibrary charset utf8; use weblibrary;
# 用户表 create table if not exists lbUser( id int primary key auto_increment,#编号 uid varchar(30) unique not null default '',#账号 uname varchar(50) default '',#用户名 upwd varchar(32) not null default '',#密码:md5加密 uage int default 18,#年龄 uphone char(11) default '', #电话 uquestion varchar(50) default '',#密保问题 uanwser varchar(50) default ''#密保答案 ) charset utf8;
create table books( id int primary key auto_increment,#编号 bname varchar(50) not null default '',#书名 bwriter varchar(30) not null default '',#书作者 btype varchar(30)not null default '',#书的类型 bcomny varchar(30) not null default '',#书的出版社 bnum int default 0,#书的数量 bstate int default 0, #书的状态:0还有库存,1,已借完 bbnum int default 0#被借的次数,可用来统计书的排行榜 );
insert into weblibrary.books (id, bname, bwriter, btype, bcomny, bnum, bstate, bbnum) values (1, '小王子', '埃克苏佩里', '童话', '光明出版社', 8, 0, 6), (2, '天路历程', '约翰班杨', '文学', '光明出版社', 10, 0, 13), (3, '活着', '余华', '文学', '光明出版社', 8, 0, 6), (4, '岛上书店', '加泽文', '文学', '光明出版社', 10, 0, 0), (5, '吞噬星空', '我吃西红柿', '小说', '阅文集团', 10, 0, 21), (6, '平凡的世界', '路遥', '文学', '光明出版社', 10, 0, 0), (7, '雨有时横着走', '郭怀宽', '诗歌', '光明出版社', 10, 0, 10), (8, '百年孤独', '加西亚马尔科', '小说', '光明出版社', 10, 0, 0), (9, '三体', '刘慈欣', '小说', '光明出版社', 1, 0, 54), (10, '斗罗大陆', '唐家三少', '小说', '阅文集团', 0, 0, 79);
create table borrhistory( id int primary key auto_increment,#编号 uid varchar(11),#用户编号 bid int not null ,#书的唯一编号 bname varchar(30) not null default '',#书名 bwriter varchar(30) not null default '',#作者 btype varchar(30) not null default '',#类型 btime datetime,#借阅时间 rtime datetime,#归还时间 bstate int default 0#状态:0在读,1归还 );
driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/weblibrary?serverTimeZone=Asia/ShangHai #????? username=root #?? password=123456 #????? initialSize=10 # ?????? maxActive=100 # ?????? maxWait=3000
public class JDBCDruid { private static DataSource ds=null; //初始化数据 static { try { Properties p=new Properties(); p.load(new InputStreamReader(JDBCDruid.class.getClassLoader().getResourceAsStream("com/liu/libraryOS/utils/db.properties"))); ds= DruidDataSourceFactory.createDataSource(p); } catch (Exception e) { throw new RuntimeException(e); } } /** * 获取connection连接 * @return */ public static Connection getConn(){ try { return ds.getConnection(); } catch (SQLException e) { throw new RuntimeException(e); } } /** * 关闭方法 * @param rs * @param st * @param conn */ public static void getClose(ResultSet rs, Statement st,Connection conn){ try { if (rs!=null){ rs.close(); } if(st!=null){ st.close(); } if(conn!=null){ conn.close(); } } catch (SQLException e) { throw new RuntimeException(e); } } }
public class Books implements Serializable { /** * 书的唯一编号 */ private Integer id; /** * 书的名字 */ private String bname; /** * 书的作者 */ private String bwriter; /** * 书的类型 */ private String btype; /** * 出版社 */ private String bcomny; /** * 在库的数量 */ private Integer bnum; /** * 书的状态:0有库存,1已借完 */ private Integer bstate; /** * 被借的次数:可用来统计排行榜 */ private Integer bbnum; public Books() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getBname() { return bname; } public void setBname(String bname) { this.bname = bname; } public String getBwriter() { return bwriter; } public void setBwriter(String bwriter) { this.bwriter = bwriter; } public String getBtype() { return btype; } public void setBtype(String btype) { this.btype = btype; } public String getBcomny() { return bcomny; } public void setBcomny(String bcomny) { this.bcomny = bcomny; } public Integer getBnum() { return bnum; } public void setBnum(Integer bnum) { this.bnum = bnum; } public Integer getBstate() { return bstate; } public void setBstate(Integer bstate) { this.bstate = bstate; } public Integer getBbnum() { return bbnum; } public void setBbnum(Integer bbnum) { this.bbnum = bbnum; } }
public class BorrHistory implements Serializable { /** * 编号 */ private Integer id; /** * 用户账号 */ private String uid; /** * 书的唯一编号 */ private Integer bid; /** * 书名 */ private String bname; /** * 作者 */ private String bwriter; private String btype; /** * 借阅时间 */ private String btime; /** * 归还时间 */ private String rtime; /** * 状态:0:在读,1:已还 */ private String bstate; public BorrHistory() { } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getBid() { return bid; } public void setBid(Integer bid) { this.bid = bid; } public String getBname() { return bname; } public void setBname(String bname) { this.bname = bname; } public String getBwriter() { return bwriter; } public void setBwriter(String bwriter) { this.bwriter = bwriter; } public String getBtype() { return btype; } public void setBtype(String btype) { this.btype = btype; } public String getBtime() { return btime; } public void setBtime(String btime) { this.btime = btime; } public String getRtime() { return rtime; } public void setRtime(String rtime) { this.rtime = rtime; } public String getBstate() { return bstate; } public void setBstate(String bstate) { this.bstate = bstate; } }
public class LbUser implements Serializable { /** * 用户编号:自增长 */ private Integer id; /** * 账号:手机号注册 */ private String uid; /** * 昵称 */ private String uname; /** * 年龄 */ private int uage; /** * 密保问题 */ private String uquestion; /** * 密保答案 */ private String uanwser; /** * 注册时间 */ private String udate; public LbUser() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public int getUage() { return uage; } public void setUage(int uage) { this.uage = uage; } public String getUquestion() { return uquestion; } public void setUquestion(String uquestion) { this.uquestion = uquestion; } public String getUanwser() { return uanwser; } public void setUanwser(String uanwser) { this.uanwser = uanwser; } public String getUdate() { return udate; } public void setUdate(String udate) { this.udate = udate; } }
public class BasicDao{ private QueryRunner qr = new QueryRunner(); private Connection conn = null; /** * 根据sql获取所有符合的数据 * * @param sql * @param clazz * @param obj * @return */ public List getAllData(String sql, Class clazz, Object... obj) { try { conn = JDBCDruid.getConn(); return qr.query(conn, sql, new BeanListHandler<>(clazz), obj); } catch (SQLException e) { throw new RuntimeException(e); } finally { JDBCDruid.getClose(null, null, conn); } } /** * 获取单个数据 * * @param sql * @param clazz * @param obj * @return */ public T getOneData(String sql, Class clazz, Object... obj) { try { conn = JDBCDruid.getConn(); return qr.query(conn, sql, new BeanHandler<>(clazz), obj); } catch (SQLException e) { throw new RuntimeException(e); } finally { JDBCDruid.getClose(null, null, conn); } } /** * 单个dml操作 * * @param sql * @param obj * @return */ public boolean update(String sql, Object... obj) { int num = 0; try { conn = JDBCDruid.getConn(); //开启事务 conn.setAutoCommit(false); num = qr.update(conn, sql, obj); //没发生异常则提交 conn.commit(); } catch (SQLException e) { //发生异常回滚 try { conn.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } throw new RuntimeException(e); } finally { JDBCDruid.getClose(null, null, conn); } return num>0; } //---------以下是同时进行多条dml操作时使用----------- /** * 1、开启事务,适用于多级操作(同时修改借阅记录,书的状态等) * * @return connection */ public Connection startTransaction() { try { conn = JDBCDruid.getConn(); conn.setAutoCommit(false); return conn; } catch (SQLException e) { throw new RuntimeException(e); } } /** * 3、数据回滚 * * @param conn */ public void rollBack(Connection conn) { try { conn.rollback(); } catch (SQLException e) { e.printStackTrace(); } } }
public class BooksDao extends BasicDao{ }
public class BorrHistoryDao extends BasicDao{ }
public class LbUserDao extends BasicDao{ }
public class BooksService { private BooksDao bd = new BooksDao(); private String sql = ""; /** * 获取所有图书信息 * * @return */ public ListgetAllBook() { sql = "select*from books where bnum>0"; return bd.getAllData(sql, Books.class); } /** * 获取排行前五的书籍,根据被借的次数 * * @return */ public List paiHangBook() { sql = "select*from books where bbnum>0 order by bbnum desc limit 0,5"; return bd.getAllData(sql, Books.class); } /** * 获取已被借完的书籍 * * @return */ public List alreadyOverBook() { sql = "select*from books where bnum<1 "; return bd.getAllData(sql, Books.class); } /** * 根据id得到数据 * * @param bid * @return */ public Books queryById(String bid) { sql = "select*from books where id=?"; return bd.getOneData(sql, Books.class, bid); } }
public class BorrHistoryService { private BorrHistoryDao bd = new BorrHistoryDao(); private BooksService bs = new BooksService(); private String sql = ""; /** * 获取所有符合条件的记录 * * @return */ public ListgetAllData(String uid) { sql = "select * from borrhistory where uid=?"; return bd.getAllData(sql, BorrHistory.class, uid); } /** * 根据账号查询编号为id的书籍且没归还记录 * * @return */ public BorrHistory queryByBidCo(String count, String bid) { sql = "select*from borrhistory where uid=? and bid=? and bstate=0"; return bd.getOneData(sql, BorrHistory.class, count, bid); } /** * 添加借阅记录 * * @param count * @param bid * @return */ public boolean borrowBook(String count, String bid) { Connection conn = bd.startTransaction(); QueryRunner qr = new QueryRunner(); int num = 0; try { //修改书籍数量语句 sql = "update books set bnum=(bnum-1) where id=?"; num = qr.update(conn, sql, bid); if (num > 0) { //添加记录 Books b = bs.queryById(bid); sql = "insert into borrhistory(uid,bid,bname,bwriter,btype,btime) values (?,?,?,?,?,now())"; num = qr.update(conn, sql, count, bid, b.getBname(), b.getBwriter(), b.getBtype()); //模拟错误 // num=1/0; //提交事务 conn.commit(); } } catch (SQLException e) { bd.rollBack(conn); e.printStackTrace(); } finally { JDBCDruid.getClose(null, null, conn); } return num > 0; } /** * 书籍归还:修改借阅记录:状态、日期;books:数量加1,被借次数加1 * * @param count * @param bid * @return */ public boolean updateBorrHistory(String count, String bid) { Connection conn = bd.startTransaction(); QueryRunner qr = new QueryRunner(); int num = 0; try { //修改借阅状态 sql = "update borrhistory set bstate=1,rtime=now() where uid=? and bid=? and bstate=0"; num = qr.update(conn, sql, count, bid); if (num > 0) { //修改欧克 //修改图书的数量以及被借的次数 sql = "update books set bnum=(bnum+1),bbnum=(bbnum+1) where id=?"; num = qr.update(conn, sql, bid); if (num > 0) { conn.commit(); } } } catch (SQLException e) { bd.rollBack(conn); e.printStackTrace(); } finally { JDBCDruid.getClose(null,null,conn); } return num>0; } }
public class LbUserService { private LbUserDao ld=new LbUserDao(); private String sql=""; /** * 根据账号密码查询 * @param count * @param pwd * @return */ public LbUser logInByPD(String count,String pwd){ sql="select * from lbuser where uid=? and upwd=md5(?)"; return ld.getOneData(sql,LbUser.class,count,pwd); } /** * 根据账号查询是否存在 * @param count * @return */ public LbUser queryByCount(String count){ sql="select * from lbuser where uid=?"; return ld.getOneData(sql,LbUser.class,count); } /** * 修改用户信息 * @param count * @param name * @param age * @return */ public boolean updatePerson(String count,String name,int age){ sql="update lbuser set uname=?,uage=? where uid=?"; return ld.update(sql,name,age,count); } /** * 添加用户 * @param count * @param name * @param pwd * @param ques * @param anw * @param date * @return */ public boolean addPerson(String count,String name,String pwd,String ques,String anw,String date){ sql="insert into lbuser(uid,uname,upwd,uquestion,uanwser,udate) values(?,?,md5(?),?,?,?)"; return ld.update(sql,count,name,pwd,ques,anw,date); } /** * 找回密码时:根据账号、密保问题及答案 * @return */ public LbUser queryOfFindPwd(String count,String ques,String anw){ sql="select *from lbuser where uid=? and uquestion=? and uanwser=?"; return ld.getOneData(sql,LbUser.class,count,ques,anw); } /** * 找回密码时:根据账号修改密码 * @return */ public boolean updateOfFindPwd(String count,String pwd){ sql="update lbuser set upwd=MD5(?) where uid=?"; return ld.update(sql,pwd,count); } }
@WebServlet("/getBooks") public class GetBooksServlet extends HttpServlet { private BooksService bs=new BooksService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { HttpSession session = req.getSession(); session.setAttribute("currPage",1); resp.setContentType("text/html;charset=utf8"); PrintWriter w = resp.getWriter(); HashMaphs = new HashMap<>(); //判断session中是否存在,不存在再从数据库取 List liubooks =(List ) session.getAttribute("liubooks"); if(liubooks==null || liubooks.size()<1){ liubooks=bs.getAllBook(); session.setAttribute("liubooks",liubooks); } hs.put("code",200); hs.put("msg","ok"); hs.put("data",liubooks); String rs = JSONObject.toJSONString(hs); w.write(rs); w.close(); } }
@WebServlet("/paiHang") public class PaiHangServlet extends HttpServlet { private BooksService bs=new BooksService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { HttpSession session = req.getSession(); //有效时间1小时 session.setMaxInactiveInterval(1000*60*60); session.setAttribute("currPage",2); resp.setContentType("text/html;charset=utf8"); PrintWriter w = resp.getWriter(); HashMaphs = new HashMap<>(); List books =(List ) session.getAttribute("paihang"); if(books==null ||books.size()<1){ books = bs.paiHangBook(); session.setAttribute("paihang",books); } hs.put("code",200); hs.put("msg","ok"); hs.put("data",books); String rs = JSONObject.toJSONString(hs); w.write(rs); w.close(); } }
@WebServlet("/yiJieWan") public class AlreadyOvServlet extends HttpServlet { private BooksService bs=new BooksService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { HttpSession session = req.getSession(); session.setAttribute("currPage",3); resp.setContentType("text/html;charset=utf8"); PrintWriter w = resp.getWriter(); HashMaphs = new HashMap<>(); List books =(List ) session.getAttribute("yijiewan"); if(books==null){ books = bs.alreadyOverBook(); session.setAttribute("yijiewan",books); } hs.put("code",200); hs.put("msg","ok"); hs.put("data",books); String rs = JSONObject.toJSONString(hs); w.write(rs); w.close(); } }
@WebServlet("/getHistory") public class GetBorrowHistoryServlet extends HttpServlet { private BorrHistoryService bs=new BorrHistoryService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf8"); HttpSession session = req.getSession(); HashMaphs = new HashMap<>(); session.setAttribute("currPage",4); PrintWriter w = resp.getWriter(); //这里先判断是否存在session,没有在操作数据库 //判断用户是否登录 LbUser user = (LbUser) session.getAttribute("userInf"); if(user==null){ //没登陆 hs.put("msg","notLogIn"); }else{//登录了 //查 List allData =(List ) session.getAttribute("borrowhis"+user.getUid()); if(allData==null){ allData = bs.getAllData(user.getUid()); session.setAttribute("borrowhis"+user.getUid(),allData); } if(allData.size()==0){ hs.put("msg","kong"); }else{ hs.put("msg","ok"); hs.put("data",allData); } } hs.put("code","200"); String s = JSONObject.toJSONString(hs); w.write(s); w.close(); } }
@WebServlet("/logIn") public class LogInServlet extends HttpServlet { private LbUserService ls=new LbUserService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf8"); req.setCharacterEncoding("utf8"); PrintWriter w = resp.getWriter(); HttpSession session = req.getSession(); //设置最大时间24小时后失效 session.setMaxInactiveInterval(1000*60*60*24); //设置当前页 session.setAttribute("currPage",5); //获取前台发来的数据 String uid = req.getParameter("uid"); if(uid==null||"".equals(uid)){ setErr("手机号不能为空!",w); return; }else if(uid.length()!=11){ setErr("请输入11位的手机号!",w); return; } //判断账号是否存在 LbUser isCun = ls.queryByCount(uid); if(isCun==null){ setErr("errCount",w); return; } String upwd = req.getParameter("upwd"); if(upwd==null||"".equals(upwd)){ setErr("密码不能为空!",w); return; }else if(upwd.length()<6||upwd.length()>18){ setErr("密码最少6位最多18位",w); return; } //判断 LbUser user = ls.logInByPD(uid, upwd); if(user==null){ setErr("errPwd",w); return; } //存在时 setSuccess(user,w); //添加session session.setAttribute("userInf",user); } /** * 用来返回成功信息 * @param user * @param w */ private void setSuccess(LbUser user,PrintWriter w){ setResult(user,"ok",w); } /** * 用来设置错误信息 * @param msg * @param w */ private void setErr(String msg,PrintWriter w){ setResult(null,msg,w); } /** * 用来返回信息的父类 * @param user * @param msg * @param w */ private void setResult( LbUser user, String msg, PrintWriter w){ HashMaphs = new HashMap<>(); hs.put("code","200"); hs.put("msg",msg); hs.put("data",user); String rs = JSONObject.toJSONString(hs); w.write(rs); w.close(); } }
@WebServlet("/registerPerson") public class RegisterServlet extends HttpServlet { private LbUserService ls=new LbUserService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf8"); HttpSession session = req.getSession(); HashMaphs = new HashMap<>(); session.setAttribute("currPage",5); PrintWriter w = resp.getWriter(); //时间转换 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //获取前台传来的数据 String uid = req.getParameter("uid"); String upwd = req.getParameter("upwd"); String uname = req.getParameter("uname"); String uquestion = req.getParameter("uquestion"); String uanwser = req.getParameter("uanwser"); //先判断账号是否已经存在 LbUser us = ls.queryByCount(uid); if(us!=null){ hs.put("msg","isAlready"); }else{ boolean b = ls.addPerson(uid, uname, upwd, uquestion, uanwser, sdf.format(new Date())); if(!b){ hs.put("msg","addErr"); }else{ hs.put("msg","ok"); } } hs.put("code","200"); String s = JSONObject.toJSONString(hs); w.write(s); w.close(); } }
@WebServlet("/userInfo") public class UserInfoServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf8"); HashMaphs = new HashMap<>(); PrintWriter w = resp.getWriter(); HttpSession session = req.getSession(); session.setAttribute("currPage",5); LbUser use = (LbUser) session.getAttribute("userInf"); if(use==null){ hs.put("msg","kong"); }else{ hs.put("msg","ok"); } hs.put("code",200); hs.put("data",use); String rs = JSONObject.toJSONString(hs); w.write(rs); w.close(); } }
@WebServlet("/updateInfo") public class UpdateUser extends HttpServlet { private LbUserService ls=new LbUserService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf8"); req.setCharacterEncoding("utf8"); PrintWriter w = resp.getWriter(); HashMaphs = new HashMap<>(); HttpSession session = req.getSession(); //设置当前页 session.setAttribute("currPage",5); String count = req.getParameter("count"); String name = req.getParameter("name"); String age = req.getParameter("age"); // String ques = req.getParameter("question"); // String ans = req.getParameter("answer"); //判断 //设置当前页 session.setAttribute("currPage",5); boolean rs = ls.updatePerson(count, name, Integer.parseInt(age)); if(rs){ LbUser user = ls.queryByCount(count); //ok hs.put("msg","ok"); hs.put("data",user); //更新session中的用户 session.setAttribute("userInf",user); }else{ hs.put("msg"," errUpdate"); } hs.put("code","200"); String s = JSONObject.toJSONString(hs); w.write(s); w.close(); } }
@WebServlet("/findPwd") public class FindPwdServlet extends HttpServlet { private LbUserService ls=new LbUserService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf8"); HttpSession session = req.getSession(); HashMaphs = new HashMap<>(); session.setAttribute("currPage",5); PrintWriter w = resp.getWriter(); //获取前台传来的数据 String uid = req.getParameter("uid"); String upwd = req.getParameter("upwd"); String uquestion = req.getParameter("uquestion"); String uanwser = req.getParameter("uanwser"); //判断账号是否存在 LbUser user = ls.queryByCount(uid); if(user==null){ hs.put("msg","isNotCun"); }else{ //账号存在 //根据账号、密保以及答案查询 user= ls.queryOfFindPwd(uid,uquestion,uanwser); if(user==null){ hs.put("msg","QOAIsErr"); }else{ //都正确 //修改密码 boolean b = ls.updateOfFindPwd(uid, upwd); if(!b){ hs.put("msg","findErr"); }else{ hs.put("msg","ok"); } } } hs.put("code","200"); String s = JSONObject.toJSONString(hs); w.write(s); w.close(); } }
@WebServlet("/returnBook") public class ReturnBookServlet extends HttpServlet { private BorrHistoryService bs=new BorrHistoryService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { HttpSession session = req.getSession(); session.setAttribute("currPage",4); resp.setContentType("text/html;charset=utf8"); PrintWriter w = resp.getWriter(); HashMaphs = new HashMap<>(); String bid = req.getParameter("bid"); //先判断用户是否已经登录 LbUser user =(LbUser) session.getAttribute("userInf"); if(user==null){ //提示没有登陆 hs.put("msg","isNotLogIn"); }else{ //查询此书是否借阅过且没归还 BorrHistory bht = bs.queryByBidCo(user.getUid(), bid); if(bht==null){ //说明当前书籍不需要归还或已经归还 hs.put("msg","notHistory"); }else{ //说明可归还 boolean b = bs.updateBorrHistory(user.getUid(), bid); if(!b){ //归还失败 hs.put("msg","returnErr"); }else{ hs.put("msg","ok"); //更新图书数据 session.removeAttribute("liubooks"); //更新当前用户借阅记录 session.removeAttribute("borrowhis"+user.getUid()); //更新排行 session.removeAttribute("paihang"); //更新已借完session session.removeAttribute("yijiewan"); } } } hs.put("code","200"); String s = JSONObject.toJSONString(hs); w.write(s); w.close(); } }
@WebServlet("/getHistory") public class GetBorrowHistoryServlet extends HttpServlet { private BorrHistoryService bs=new BorrHistoryService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf8"); HttpSession session = req.getSession(); HashMaphs = new HashMap<>(); session.setAttribute("currPage",4); PrintWriter w = resp.getWriter(); //这里先判断是否存在session,没有在操作数据库 //判断用户是否登录 LbUser user = (LbUser) session.getAttribute("userInf"); if(user==null){ //没登陆 hs.put("msg","notLogIn"); }else{//登录了 //查 List allData =(List ) session.getAttribute("borrowhis"+user.getUid()); if(allData==null){ allData = bs.getAllData(user.getUid()); session.setAttribute("borrowhis"+user.getUid(),allData); } if(allData.size()==0){ hs.put("msg","kong"); }else{ hs.put("msg","ok"); hs.put("data",allData); } } hs.put("code","200"); String s = JSONObject.toJSONString(hs); w.write(s); w.close(); } }
@WebServlet("/goOut") public class GoOutServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf8"); HttpSession session = req.getSession(); HashMaphs = new HashMap<>(); session.setAttribute("currPage",5); PrintWriter w = resp.getWriter(); //先判断用户是否已经登陆 LbUser user = (LbUser) session.getAttribute("userInf"); if(user!=null){ hs.put("msg","ok"); session.removeAttribute("userInf"); }else{ hs.put("msg","notLogIn"); } hs.put("code","200"); String s = JSONObject.toJSONString(hs); w.write(s); w.close(); } }
* { padding: 0; margin: 0; } body { min-width: 1200px; height: 800px; } #liu { width: 70%; height: 70%; margin: 20px auto auto auto; font-size: 18px; } #liu-head { width: 100%; height: 50px; background-color: #ead2ae; color: blueviolet; font-size: 18px; font-weight: bold; border-radius: 10px; } #liu-head ul { text-align: center; width: 100%; list-style: none; display: inline-block; line-height: 45px; margin: 2px auto; } #liu-head ul li { cursor: pointer; margin-left: 10px; border: #ed00ff 1px solid; border-radius: 15px; /*background-color: yellow;*/ text-align: center; width: 20%; float: left; } #liu-head ul li:last-child { width: 10%; border-radius: 10px 40px; } #liu-head ul li:hover { background-color: #dc8ef1; } #liu-middle { width: 100%; height: 85%; margin: 10px auto; border: black 1px solid; border-radius: 10px; background-color: #ead2ae; /*background-color: rebeccapurple;*/ } #biao { margin: 2px auto; width: 98%; text-align: center; border-collapse: collapse; border-spacing: 0px; } #biao-head{ background-color: #00a290; } #biao tr { border: #000000 1px solid; line-height: 40px; } #biao-body tr:hover { background-color: #c4ffde; cursor: pointer; } #biao-body input { margin: 2px auto; line-height: 40px; width: 60px; border: yellow 1px solid; border-radius: 5px; font-size: 18px; color: #af4ed8; background-color: transparent; cursor: pointer; } #biao-body input:hover { font-size: 17px; } /*个人中心*/ #user-info { width: 85%; height: 85%; /*background-color: #1bc4fb;*/ margin: 30px auto; position: relative; text-align: center; } #user-info b { color: red; margin: 0; padding: 0; } #uinfo { width: 90%; height: 90%; /*background-color: #0ae29e;*/ position: absolute; margin: 10px auto; left: 5%; text-align: center; font-size: 25px; } #uinfo input { color: #b118f1; width: 50%; height: 35px; text-align: center; font-size: 25px; margin: 5px auto; outline: none; border: #5a9237 2px solid; background-color: transparent; border-radius: 5px; cursor: pointer; } #uinfo #count { /*个人中心第一个input框*/ color: #c27ede; } #uinfo span { color: #975403; font-weight: bold; } #uinfo button { width: 30%; background-color: transparent; line-height: 40px; font-size: 20px; border: #ff8901 1px solid; display: inline-block; float: right; margin-right: 3%; border-radius: 50px 20px; color: #036d2e; cursor: pointer; margin-top: 5px; } #uinfo button:last-child { width: 15%; float: left; margin-left: 10px; color: #db9090; } /*登陆css*/ #login-div { width: 35%; height: 60%; border: #ac6b00 2px dashed; border-radius: 5px; /*background-color: #0ae29e;*/ margin: 50px auto; position: relative; } #login-div span { display: inline-block; font-size: 18px; color: red; width: 100%; height: 20px; line-height: 20px; text-align: center; } #login-div input { width: 90%; height: 40px; color: #e13cd7; font-size: 25px; text-align: center; margin: 5px 10px; border-radius: 20px; border: #158579 2px dotted; background-color: transparent; outline: none; } #login-div #login-dl { width: 90%; height: 40px; margin-top: 30px; margin-left: 10px; border-radius: 20px; border: #e77070 1px solid; background-color: transparent; font-size: 24px; line-height: 40px; color: #067221; } #login-div #login-bottom { width: 95%; height: 30px; border: #f323f3 1px dotted; /*background-color: transparent;*/ position: absolute; border-radius: 15px 3px; font-size: 14px; font-style: italic; margin: auto 2%; color: #9f4e02; bottom: 5px; } #login-div #login-bottom ul { list-style: none; width: 100%; height: 100%; } #login-div #login-bottom ul li { width: 50%; text-align: center; height: 100%; line-height: 30px; display: inline-block; } #login-div #login-bottom ul li a { width: 100%; height: 100%; /*background-color: #0ae29e;*/ text-decoration: none; cursor: pointer; } /*注册css*/ #register-div { width: 50%; height: 70%; /*background-color: #1bc4fb;*/ margin: 5% auto; border: #176f00 2px dotted; border-radius: 50px 10px; } #register-div span { display: inline-block; width: 80%; font-size: 18px; height: 25px; line-height: 25px; text-align: center; color: #f80000; /*background-color: yellow;*/ margin: auto 8%; } #register-div input { display: inline-block; width: 80%; height: 30px; text-align: center; font-size: 20px; margin: 5px 8%; border: #9b0058 1px dotted; background-color: transparent; outline: none; border-radius: 10px; color: #b118f1; } #register-div select { color: #b118f1; display: inline-block; width: 80%; height: 30px; text-align: center; font-size: 20px; margin: 5px 8%; border: #9b0058 1px dotted; background-color: transparent; outline: none; border-radius: 10px; } #register-div button { color: #0280ce; display: inline-block; width: 60%; height: 30px; text-align: center; font-size: 20px; margin: 5% 18% 4% 18%; border: #00489b 2px dotted; background-color: transparent; outline: none; border-radius: 10px; line-height: 25px; cursor: pointer; } #register-div a { display: inline-block; width: 25%; height: 20px; font-size: 14px; font-style: italic; /*background-color: red;*/ margin: auto 5px; color: #278d02; } /*找密码css*/ #findPwd-div { width: 50%; height: 70%; /*background-color: #1bc4fb;*/ margin: 5% auto; border: #176f00 2px dotted; border-radius: 50px 10px; } #findPwd-div span { display: inline-block; width: 80%; font-size: 18px; height: 25px; line-height: 25px; text-align: center; color: #f80000; /*background-color: yellow;*/ margin: auto 8%; } #findPwd-div input { display: inline-block; width: 80%; height: 30px; text-align: center; font-size: 20px; margin: 5px 8%; border: #9b0058 1px dotted; background-color: transparent; outline: none; border-radius: 10px; color: #b118f1; } #findPwd-div select { color: #b118f1; display: inline-block; width: 80%; height: 30px; text-align: center; font-size: 20px; margin: 5px 8%; border: #9b0058 1px dotted; background-color: transparent; outline: none; border-radius: 10px; } #findPwd-div button { color: #0280ce; display: inline-block; width: 60%; height: 30px; text-align: center; font-size: 20px; margin: 5% 18% 4% 18%; border: #00489b 2px dotted; background-color: transparent; outline: none; border-radius: 10px; line-height: 25px; cursor: pointer; } #findPwd-div a { display: inline-block; width: 25%; height: 20px; font-size: 14px; font-style: italic; /*background-color: red;*/ margin: auto 5px; color: #278d02; }
<%@ page contentType="text/html;charset=UTF-8" language="java" %>404-迷失方向了 怎么回事,灯怎么熄灭了,害得我迷失了方向
<%@ page contentType="text/html;charset=UTF-8" language="java" %>500-出现bug了 这是怎么了,为什么我从座位上掉下来了?
404 /static/err/404.jsp 500 /static/err/500.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>楠小弟自助图书馆
- 自助图书系统
- 图书排行榜
- 暂空缺书籍
- 借阅记录
- 登录
源码在这里👉源码