实验报告实验课程:Web应用开发学生姓名:学号:专业班级:2018年6月18日南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证■综合□设计□创新实验日期:实验成绩:一、实验项目名称《Web应用开发》综合训练二、实验目的和要求使用Java+JSP+Servlet技术,选用EL、JSTL、Struts、Hibernate、myBatis、jQuery等技术,开发一个基本Web的应用程序,以达到掌握Web应用开发的基本原理、具备使用Java+JSP+Servlet技术结合流行框架技术开发Web应用程序的能力,从而提升学生的Web编程能力。要求学生自选题目,开发一个模拟的Web应用程序。可以一人一题,也可以多人一题。但是每人必须单独完成动态Web页面10页以上。要求学生根据需求描述独自完成需求分析,软件设计、程序模块设计以及程序的编写、调试和测试。设计和程序完成后,要求根据指定的格式要求,独自完成设计报告的撰写。三、实验基本情况本实训要求根据下述需求陈述写出需求分析文本并进行软件开发,并列出源代码和运行结果。四、需求分析项目介绍这是一个简单的图书管理系统,由一个管理员来实现对用户的删除,图书的增加,修改和图书的删除功能,用户注册登录后可以实现对图书的借阅和归还。由于时间关系在设计项目时有很多不好的地方,未来得及修改,在管理员登录界面采用了图形验证码,由于是同样的技术,在用户登录界面就没有采用图形验证技术。功能需求1.用户注册2.图书添加3.图书修改4.用户管理5.图书借阅6.归还图书五、软件设计ER图程序流程数据库设计模块设计及运行结果项目整体采用MVC模式,整体上运用jsp+javabean+servlet+jdbc+dao,每个jsp页面采用jQuery技术作为背景,实现简单的动态背景,部分页面运用EL、JSTL、js中的点击事件、Bootsrap、图形验证码、分页技术以及邮箱页面。六、源代码1.用户类User.Javapackagevo;publicclassUser{privateStringname,pwd;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetPwd(){returnpwd;}publicvoidsetPwd(Stringpwd){this.pwd=pwd;}}2.图书类bookinfo.javapackagevo;publicclassbookinfo{privateStringbno,bname,author,price,other;publicStringgetBno(){returnbno;}publicvoidsetBno(Stringbno){this.bno=bno;}publicStringgetBname(){returnbname;}publicvoidsetBname(Stringbname){this.bname=bname;}publicStringgetAuthor(){returnauthor;}publicvoidsetAuthor(Stringauthor){this.author=author;}publicStringgetPrice(){returnprice;}publicvoidsetPrice(Stringprice){this.price=price;}publicStringgetOther(){returnother;}publicvoidsetOther(Stringother){this.other=other;}}3.借书信息类lendbook.infopackagevo;publicclasslendbook{privateStringusername,bno,bname,author,price,other;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetBno(){returnbno;}publicvoidsetBno(Stringbno){this.bno=bno;}publicStringgetBname(){returnbname;}publicvoidsetBname(Stringbname){this.bname=bname;}publicStringgetAuthor(){returnauthor;}publicvoidsetAuthor(Stringauthor){this.author=author;}publicStringgetPrice(){returnprice;}publicvoidsetPrice(Stringprice){this.price=price;}publicStringgetOther(){returnother;}publicvoidsetOther(Stringother){this.other=other;}}4.用户功能UserDao.javapackagedao;importjava.util.List;importjava.sql.*;importjava.util.ArrayList;importvo.bookinfo;importvo.User;importvo.lendbook;importdbc.JdbcUtil;publicclassUserDao{publicvoidadd(Useruser)throwsException{//添加用户Connectionconn=null;PreparedStatementps=null;try{conn=JdbcUtil.getConnection();Stringsql=insertintouservalues(?,?);ps=conn.prepareStatement(sql);ps.setString(1,user.getName());ps.setString(2,user.getPwd());ps.executeUpdate();}finally{JdbcUtil.free(null,ps,conn);}}publicvoidadd_book(bookinfobook)throwsException{//添加图书Connectionconn=null;PreparedStatementps=null;try{conn=JdbcUtil.getConnection();Stringsql=insertintobook_infovalues(?,?,?,?,?);ps=conn.prepareStatement(sql);ps.setString(1,book.getBno());ps.setString(2,book.getBname());ps.setString(3,book.getAuthor());ps.setString(4,book.getPrice());ps.setString(5,book.getOther());ps.executeUpdate();}finally{JdbcUtil.free(null,ps,conn);}}publicvoidlend_book(lendbookbook)throwsException{//借出图书Connectionconn=null;PreparedStatementps=null;try{conn=JdbcUtil.getConnection();Stringsql=insertintolendbookvalues(?,?,?,?,?,?);ps=conn.prepareStatement(sql);ps.setString(1,book.getUsername());ps.setInt(2,Integer.parseInt(book.getBno()));ps.setString(3,book.getBname());ps.setString(4,book.getAuthor());ps.setString(5,book.getPrice());ps.setString(6,book.getOther());ps.executeUpdate();}finally{JdbcUtil.free(null,ps,conn);}}publicListUserQueryAll()throwsException//列出全部用户{Connectionconn=null;PreparedStatementps=null;ResultSetrs=null;ListUseruserList=newArrayListUser();try{conn=JdbcUtil.getConnection();Stringsql=select*fromuser;ps=conn.prepareStatement(sql);rs=ps.executeQuery();while(rs.next()){Useruser=newUser();user.setName(rs.getString(1));user.setPwd(rs.getString(2));userList.add(user);}}finally{JdbcUtil.free(rs,ps,conn);}returnuserList;}publicvoiddelete(Stringbookno)throwsException//删除图书{Connectionconn=null;PreparedStatementps=null;try{conn=JdbcUtil.getConnection();Stringsql=deletefrombook_infowherebno=?;ps=conn.prepareStatement(sql);ps.setString(1,bookno);ps.executeUpdate();}finally{JdbcUtil.free(null,ps,conn);}}publicvoidreturnbook(Stringbno,Stringusername)throwsException//归还图书{Connectionconn=null;PreparedStatementps=null;try{conn=JdbcUtil.getConnection();Stringsql=deletefromlendbookwherebno=?andusername=?;ps=conn.prepareStatement(sql);ps.setString(1,bno);ps.setString(2,username);ps.executeUpdate();}finally{JdbcUtil.free(null,ps,conn);}}publicvoiddelete_user(Stringusername)throwsException//删除用户{Connectionconn=null;PreparedStatementps=null;try{conn=JdbcUtil.getConnection();Stringsql=deletefromuserwherename=?;ps=conn.prepareStatement(sql);ps.setString(1,username);ps.executeUpdate();}finally{JdbcUtil.free(null,ps,conn);}}publicintgetPageCount()throwsException{//分页Connectionconn=null;PreparedStatementps=null;ResultSetr