




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与技术系 实 验 报 告专业名称 计算机科学与技术 课程名称 javaEE技术 项目名称 班 级 12级计本(3)班 学 号 1204013034 姓 名 同组人员 实验日期 2014-11-16 一、实验目的与要求:一、实验目的:进一步熟悉并掌握运用JSP开发模式I(JSP+JavaBean)实现数据库CRUD基本编程。二、实验内容:在MyEclipse环境下运用JSP+JavaBean以及JDBC技术完成相应的数据库CRUD功能,调试运行程序。三、实验要求:1. 熟悉并掌握运用JSP+JavaBean技术开发功能模块的基本步骤;2. 运用相关技术(JSP+JavaBean以及JDBC)完成规定功能;3. 写出实验报告。四、实验学时:2学时五、实验步骤:1进入MyEclipse环境,新建一个Web Project;2. 设计一个数据库,包括出版社表和书籍表,出版社表字段包括序号(自增主键)、出版社编码和出版社名称,书籍表字段包括序号(自增主键)、书号、书名、作者、价格和出版社;3. 完成出版社基本信息管理模块的主要功能,具体包括:3.1 设计封装了出版社表信息的JavaBean;3.2 设计封装了针对出版社信息进行CRUD操作的工具JavaBean(DAO类);3.3. 利用JSP+JavaBean技术完成显示所有出版社信息的功能;3.4. 利用JSP+JavaBean技术完成对出版社信息的增加、修改和删除功能;4. 完成书籍基本信息管理模块的主要功能,具体包括:3.1 设计封装了书籍表信息的JavaBean;3.2 设计封装了针对书籍表信息进行CRUD操作的工具JavaBean(DAO类);3.3. 利用JSP+JavaBean技术完成显示所有书籍信息的功能;3.4. 利用JSP+JavaBean技术完成对书籍信息的增加功能;5. 调试运行程序。2.3测试数据与实验结果截图2.3.1数据库建立:2.3.2 主界面显示2.3.3 添加2.2.4主界面2.2.5编辑2.2.6删除三、实验分析与小结:(实验过程中遇到的问题分析、产生的原因以及解决方法)3.1.开发模式的选择开始我以为是用JSP+Javabean的模式开发,后来经老师提醒才知道是用dao层的方法写,不是纯JSP代码,又觉得既然用dao写,就干脆用mvc模式开发,JSP页面不在写Java代码,一律用jsp标签和jstl标签和el表达式来完成。这样一来,也为以后的实验打好好维护的基础。3.2.bean的关联。由于表的关联,javabean的设置也做了改变,如下: 这样就带来了麻烦,怎样处理数据库的数据提取后封装到bean内部的问题。经过尝试,解决了问题。Press press=new Press();press.setPressname(rs.getString(pressname);book.setPressname(press);需要在处理之前,先定义一个Press的bean对象,用对象press的方法实现数据封装,然后再把存有数据的press对象封装到另一个Bean对象book中这样就实现的bean的关联和数据的存储。与之相反的,当取出数据时:El表达式有:$book.pressname.pressname 3.3.参数的传递。在做编辑这一块的时候,由于书籍有自增的主键(假设设为int sequence),所以就应该用sequence作为传递参数,可是我以为做删除和添加时,用书号(number)作为参数,觉得可以,最后做编辑的时候才发现出错,于是改为sequence。改了以后,也出了错,主要是参数传递的太频繁,从主页面到编辑界面,然后到dao层,注意dao层的方法要在用到bean的同时,还要将它封装进bean中,以便下一次的参数传递,负责参数值丢失(用插桩法:syso查看sequence的值,为0则丢失),点击编辑提交和删除,主界面会无效。四、其它(附源代码)1、 bean:(2个)1、bookbeanpackage cn.hfuu.lv.test1.domain;import java.sql.Date;public class BookInfo private int sequence;private int number;private String name;private String author;private float price;private Press pressname;public int getNumber() return number;public void setNumber(int number) this.number = number;public String getName() return name;public void setName(String name) = name;public String getAuthor() return author;public void setAuthor(String author) this.author = author;public float getPrice() return price;public void setPrice(float price) this.price = price;public Press getPressname() return pressname;public void setPressname(Press pressname) this.pressname = pressname;public int getSequence() return sequence;public void setSequence(int sequence) this.sequence = sequence;2、pressbeanpackage cn.hfuu.lv.test1.domain;public class Press private String presscode;private String pressname;public String getPresscode() return presscode;public void setPresscode(String presscode) this.presscode = presscode;public String getPressname() return pressname;public void setPressname(String pressname) this.pressname = pressname;2、 JSP 书籍管理界面 function btnDelete(id)if(confirm(确认删除该条记录吗?)location.href=/beanexample/servlet/BookDeleteServlet?id=+id; table,tr,th,td border: 1px #00868B solid;border-collapse: collapse;text-align:center;th background-color: #96CDCD; 添加 出版社管理 书号 书名 作者 价格 出版社 操作 $book.number $ $book.author $book.price $book.pressname.pressname 编辑 删除 书籍添加 table,tr,th,td border: 1px #00868B solid;border-collapse: collapse;text-align:center;#input margin-bottom:5px; border:0px solid black; th background-color: #96CDCD; 类别 信息 书号: 书名: 作者: 价格: 出版社: -请选择-$press.pressname 书籍添加 table,tr,th,td border: 1px #00868B solid;border-collapse: collapse;text-align:center;#input margin-bottom:5px; border:0px solid black; th background-color: #96CDCD; 类别 信息 书号: 书名: 作者: 价格: 出版社: option value=$press.pressname selected=selected $press.pressname 3、 Dao(2个) package cn.hfuu.lv.dao;import java.sql.*;import java.util.ArrayList;import java.util.List;import cn.hfuu.lv.test1.domain.BookInfo;import cn.hfuu.lv.test1.domain.Press;import cn.hfuu.lv.util.DBUtil;import cn.hfuu.lv.util.PageModel;public class BookDao private Connection conn = null;private Statement stm = null;private ResultSet rs = null;private PreparedStatement pstm = null;public void addBookInfo(BookInfo book)DBUtil dbUtil = null;trydbUtil = new DBUtil();conn = dbUtil.getConnection();String sql = insert into bookinfo(number,name,author,price,presssnum)values(?,?,?,?,?);pstm = conn.prepareStatement(sql);pstm.setInt(1,book.getNumber();pstm.setString(2,book.getName();pstm.setString(3,book.getAuthor();pstm.setFloat(4, book.getPrice();pstm.setInt(5, book.getPress().getPresssnum();pstm.executeUpdate();catch(Exception e)e.printStackTrace();finallydbUtil.closePreparedStatement(pstm);dbUtil.closeConnection(conn);public void updateBookInfo(BookInfo book)DBUtil dbUtil = null;trydbUtil = new DBUtil();conn = dbUtil.getConnection();String sql = update bookinfo set number=?,name=?,author=?,price=? ,presssnum=? where sequence=?;pstm = conn.prepareStatement(sql);pstm.setInt(1,book.getNumber();pstm.setString(2,book.getName();pstm.setString(3,book.getAuthor();pstm.setFloat(4, book.getPrice();pstm.setInt(5, book.getPress().getPresssnum();pstm.setInt(6, book.getSequence();pstm.executeUpdate();catch(Exception e)e.printStackTrace();finallydbUtil.closePreparedStatement(pstm);dbUtil.closeConnection(conn);public List getAllBookInfoList()DBUtil dbUtil = null;List bookList = new ArrayList();trydbUtil = new DBUtil();conn = dbUtil.getConnection();String sql=select bookinfo.sequence,bookinfo.number,,bookinfo.author,bookinfo.price,bookinfo.presssnum,press.pressname from bookinfo,press where bookinfo.presssnum= press.presssnum limit 0,7;stm = conn.createStatement();rs = stm.executeQuery(sql);while(rs.next()BookInfo book = new BookInfo();book.setSequence(rs.getInt(sequence);book.setNumber(rs.getInt(number);book.setName(rs.getString(name);book.setAuthor(rs.getString(author);book.setPrice(rs.getFloat(price);Press press=new Press();press.setPresssnum(rs.getInt(presssnum);press.setPressname(rs.getString(pressname);book.setPress(press);bookList.add(book);catch(Exception e)e.printStackTrace();finallydbUtil.closeResultSet(rs);dbUtil.closeStatement(stm);dbUtil.closeConnection(conn);return bookList;public BookInfo getBookInfoByNumber(int id)DBUtil dbUtil = null;BookInfo book = null ;trydbUtil = new DBUtil();conn = dbUtil.getConnection();String sql = select * from bookinfo where sequence = ? ;pstm = conn.prepareStatement(sql);pstm.setInt(1, id);rs = pstm.executeQuery();if(rs.next()book = new BookInfo();book.setSequence(id);book.setNumber(rs.getInt(number);book.setName(rs.getString(name);book.setAuthor(rs.getString(author);book.setPrice(rs.getFloat(price);Press press=new Press();press.setPresssnum(rs.getInt(presssnum);book.setPress(press);catch(Exception e)e.printStackTrace();finallydbUtil.closePreparedStatement(pstm);dbUtil.closeConnection(conn);return book;public List getBookInfoByName(String name)DBUtil dbUtil = null;List bookList = new ArrayList();trydbUtil = new DBUtil();conn = dbUtil.getConnection();String sql=select * from bookinfo where name=?;pstm = conn.prepareStatement(sql);pstm.setString(1, name);rs = pstm.executeQuery();while(rs.next()BookInfo book = new BookInfo();book.setSequence(rs.getInt(sequence);book.setNumber(rs.getInt(number);book.setName(name);book.setAuthor(rs.getString(author);book.setPrice(rs.getFloat(price);Press press=new Press();press.setPressname(rs.getString(pressname);book.setPress(press);bookList.add(book);catch(Exception e)e.printStackTrace();finallydbUtil.closeResultSet(rs);dbUtil.closeStatement(stm);dbUtil.closeConnection(conn);return bookList;public void deleteBook(int id)DBUtil dbUtil = null;trydbUtil = new DBUtil();conn = dbUtil.getConnection();String sql = delete from bookinfo where sequence =?;pstm = conn.prepareStatement(sql);pstm.setInt(1, id);pstm.executeUpdate();catch(Exception e)e.printStackTrace();finallydbUtil.closePreparedStatement(pstm);dbUtil.closeConnection(conn);/public List getProducts(int pageNo, int pageSize) / /DBUtil dbUtil = null;/List booklist=new ArrayList(); /try / /dbUtil = new DBUtil();/conn = dbUtil.getConnection();/String sql=select * from bookinfo limit +(pageNo-1)*pageSize+,+pageSize; /rs=DB.executeQuery(conn, sql); /stm = conn.createStatement();/rs = stm.executeQuery(sql);/while(rs.next() / /BookInfo book=new BookInfo(); /book.setSequence(rs.getInt(sequence);/book.setNumber(rs.getInt(number);/book.setName(rs.getString(name);/book.setAuthor(rs.getString(author);/book.setPrice(rs.getFloat(price);/Press press=new Press();/press.setPressname(rs.getString(pressname);/book.setPress(press);/booklist.add(book);/ / catch (SQLException e) / /e.printStackTrace(); / /finally / /dbUtil.closeResultSet(rs);/dbUtil.closeStatement(stm);/dbUtil.closeConnection(conn);/ /return booklist; / public PageModel getAllBookInfoListByPage(int pageNo,int pageSize)DBUtil dbUtil = null;PageModel pageModel=null; List bookList = new ArrayList();trydbUtil = new DBUtil();conn = dbUtil.getConnection();String sql=select bookinfo.sequence,bookinfo.number,,bookinfo.author,bookinfo.price,bookinfo.presssnum,press.pressname from bookinfo,press where bookinfo.presssnum= press.presssnum limit ?,?;pstm = conn.prepareStatement(sql);pstm.setInt(1, (pageNo-1)*pageSize); pstm.setInt(2, pageSize); rs = pstm.executeQuery();while(rs.next()BookInfo book = new BookInfo();book.setSequence(rs.getInt(sequence);book.setNumber(rs.getInt(number);book.setName(rs.getString(name);book.setAuthor(rs.getString(author);book.setPrice(rs.getFloat(price);Press press=new Press();press.setPresssnum(rs.getInt(presssnum);press.setPressname(rs.getString(pressname);book.setPress(press);bookList.add(book);ResultSet rs2=pstm.executeQuery(select count(*) from bookinfo); int total=0; if(rs2.next() total=rs2.getInt(1); pageModel=new PageModel(); pageModel.setPageNo(pageNo); pageModel.setPageSize(pageSize); pageModel.setTotalRecords(total); pageModel.setList(bookList); catch(Exception e)e.printStackTrace();finallydbUtil.closeResultSet(rs);dbUtil.closeStatement(stm);dbUtil.closeConnection(conn);return pageModel;package cn.hfuu.lv.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import cn.hfuu.lv.test1.domain.Press;import cn.hfuu.lv.util.DBUtil;public class PressDao private Connection conn = null;private Statement stm = null;private ResultSet rs = null;private PreparedStatement pstm = null;public List getAllPressInfoList()DBUtil dbUtil = null;List pressList = new ArrayList();trydbUtil = new DBUtil();conn = dbUtil.getConnection();String sql=select * from press;stm = conn.createStatement();rs = stm.executeQuery(sql);while(rs.next()Press press = new Press();press.setPresscode(rs.getString(presscode);press.setPressname(rs.getString(pressname);pressList.add(press);catch(Exception e)e.printStackTrace();finallydbUtil.closeResultSet(rs);dbUtil.closeStatement(stm);dbUtil.closeConnection(conn);return pressList;4、 Servlet(主要代码)1、bookAddPreServletrequest.setCharacterEncoding(utf-8);List list = new ArrayList();PressDao pressdao = new PressDao();list = pressdao.getAllPressInfoList();request.setAttribute(pressList, list);request.getRequestDispatcher(/WEB-INF/jsp/bookadd.jsp).forward(request, response);2、bookAddServlet request.setCharacterEncoding(utf-8);String number = request.getParameter(number);int number2 = Integer.parseInt(number);String name = request.getParameter(name);String author = request.getParameter(author);String price=request.getParameter(price);float price2=Float.parseFloat(price);String pressname = request.getParameter(pressname);Press press =new Press();press.setPressname(pressname);BookInfo book = new BookInfo();book.setNumber(number2);book.setName(name);book.setAuthor(author);book.setPrice(price2);book.setPressname(press);BookDao stuDao = new BookDao();stuDao.addBookInfo(book);response.sendRedirect(/beanexample/book.do);3、BookCompilePreServletrequest.setCharacterEncoding(utf-8);String number = request.getParameter(id);int number2 = Integer.parseInt(number);BookDao bookDao = new BookDao();BookInfo book=new BookInfo();book = bookDao.getBookInfoByNumber(number2);request.setAttribute(book, book);List list = new ArrayList();PressDao pressd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《小学教师招聘》复习试题【培优】附答案详解
- 2025年教师招聘之《幼儿教师招聘》押题练习试卷附参考答案详解(达标题)
- 2025呼伦贝尔莫力达瓦达斡尔族自治旗尼尔基第一中学校园引才笔试备考及完整答案详解
- 2025广东广州银行人才招聘考试备考题库及答案解析
- 2025年汽车轻量化材料在汽车轻量化车身制造中的产业布局与市场前景研究报告
- 棚户区改造项目房屋产权分割及购房合同模板-@-3
- 2025年乳腺病学乳房超声影像解读练习答案及解析
- 南阳党建面试题库及答案
- 教师招聘之《小学教师招聘》综合提升试卷及参考答案详解【模拟题】
- 2025年教师招聘之《小学教师招聘》试卷含完整答案详解【夺冠系列】
- Unit 1 Making friends 第三课时Part A Letters and sounds表格式教案
- (正式版)SH∕T 3541-2024 石油化工泵组施工及验收规范
- 2024年山东省公务员录用考试《行测》试题(网友回忆版)(题目及答案解析)
- 委托产品加工生产合同
- 全新不锈钢护栏承包合同
- 2024-2030年中国生物质颗粒行业市场发展趋势与前景展望战略分析报告
- 气管插管术评分标准
- 提升护理人员的自我管理能力与情绪控制
- 《预防脊柱侧弯》课件
- 纪律委员竞选课件
- 职业院校技能大赛高职组《电子商务技能》赛项样题4套题库
评论
0/150
提交评论