JavaEE实验二Word文档格式.docx

上传人:b****3 文档编号:16556008 上传时间:2022-11-24 格式:DOCX 页数:28 大小:113.45KB
下载 相关 举报
JavaEE实验二Word文档格式.docx_第1页
第1页 / 共28页
JavaEE实验二Word文档格式.docx_第2页
第2页 / 共28页
JavaEE实验二Word文档格式.docx_第3页
第3页 / 共28页
JavaEE实验二Word文档格式.docx_第4页
第4页 / 共28页
JavaEE实验二Word文档格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

JavaEE实验二Word文档格式.docx

《JavaEE实验二Word文档格式.docx》由会员分享,可在线阅读,更多相关《JavaEE实验二Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。

JavaEE实验二Word文档格式.docx

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内部的问题。

经过尝试,解决了问题。

Presspress=newPress();

press.setPressname(rs.getString("

pressname"

));

book.setPressname(press);

需要在处理之前,先定义一个Press的bean对象,用对象press的方法实现数据封装,然后再把存有数据的press对象封装到另一个Bean对象book中这样就实现的bean的关联和数据的存储。

与之相反的,当取出数据时:

El表达式有:

${book.pressname.pressname}

3.3.参数的传递。

在做编辑这一块的时候,由于书籍有自增的主键(假设设为intsequence),所以就应该用sequence作为传递参数,可是我以为做删除和添加时,用书号(number)作为参数,觉得可以,最后做编辑的时候才发现出错,于是改为sequence。

改了以后,也出了错,主要是参数传递的太频繁,从主页面到编辑界面,然后到dao层,注意dao层的方法要在用到bean的同时,还要将它封装进bean中,以便下一次的参数传递,负责参数值丢失(用插桩法:

syso查看sequence的值,为0则丢失),点击编辑提交和删除,主界面会无效。

四、其它

(附源代码)

一、bean:

(2个)

1、bookbean

packagecn.hfuu.lv.test1.domain;

importjava.sql.Date;

publicclassBookInfo{

privateintsequence;

privateintnumber;

privateStringname;

privateStringauthor;

privatefloatprice;

privatePresspressname;

publicintgetNumber(){

returnnumber;

}

publicvoidsetNumber(intnumber){

this.number=number;

publicStringgetName(){

returnname;

publicvoidsetName(Stringname){

this.name=name;

publicStringgetAuthor(){

returnauthor;

publicvoidsetAuthor(Stringauthor){

this.author=author;

publicfloatgetPrice(){

returnprice;

publicvoidsetPrice(floatprice){

this.price=price;

publicPressgetPressname(){

returnpressname;

publicvoidsetPressname(Presspressname){

this.pressname=pressname;

publicintgetSequence(){

returnsequence;

publicvoidsetSequence(intsequence){

this.sequence=sequence;

2、pressbean

publicclassPress{

privateStringpresscode;

privateStringpressname;

publicStringgetPresscode(){

returnpresscode;

publicvoidsetPresscode(Stringpresscode){

this.presscode=presscode;

publicStringgetPressname(){

publicvoidsetPressname(Stringpressname){

二、JSP

<

%@pagelanguage="

java"

import="

java.util.*"

pageEncoding="

utf-8"

%>

%@pageimport="

java.sql.*"

%>

%@includefile="

/WEB-INF/inc/taglibs.jsp"

!

DOCTYPEHTMLPUBLIC"

-//W3C//DTDHTML4.01Transitional//EN"

>

html>

<

head>

title>

书籍管理界面<

/title>

script>

functionbtnDelete(id){

if(confirm("

确认删除该条记录吗?

"

))

location.href="

/beanexample/servlet/BookDeleteServlet?

id="

+id;

}

/script>

metahttp-equiv="

Content-Type"

content="

text/html;

charset=utf-8"

>

style>

table,tr,th,td{

border:

1px#00868Bsolid;

border-collapse:

collapse;

text-align:

center;

th{

background-color:

#96CDCD;

/style>

/head>

body>

ahref="

/beanexample/servlet/bookAddPreServlet"

添加<

/a>

/beanexample/jsp/pressmanagement.jsp"

出版社管理<

tableborder="

2"

width="

600px"

tr>

<

th>

书号<

/th>

书名<

作者<

价格<

出版社<

操作<

/tr>

c:

forEachitems="

${bookList}"

var="

book"

<

td>

${book.number}<

/td>

<

${book.name}<

${book.author}<

${book.price}<

${book.pressname.pressname}<

/beanexample/servlet/BookCompilePreServlet?

id=${book.sequence}"

编辑<

&

nbsp;

javascript:

void(0)"

onclick="

btnDelete('

${book.sequence}'

)"

删除<

/c:

forEach>

/table>

/body>

/html>

书籍添加<

#input{

margin-bottom:

5px;

0pxsolidblack;

formaction="

/beanexample/servlet/bookAddServlet"

method="

post"

table>

类别<

信息<

书号:

tdid="

input"

inputtype="

text"

name="

number"

书名:

name"

作者:

author"

价格:

price"

出版社:

selectname="

<

optionvalue="

0"

--请选择--<

/option>

${pressList}"

press"

<

${press.pressname}"

${press.pressname}<

/select>

td>

submit"

value="

提交"

reset"

重置"

/>

/form>

/beanexample/servlet/BookCompileServlet?

${book.number}"

${book.name}"

${book.author}"

${book.price}"

iftest="

${book.pressname.pressname==press.pressname}"

selected="

selected"

if>

三、Dao(2个)

packagecn.hfuu.lv.dao;

importjava.sql.*;

importjava.util.ArrayList;

importjava.util.List;

importcn.hfuu.lv.test1.domain.BookInfo;

importcn.hfuu.lv.test1.domain.Press;

importcn.hfuu.lv.util.DBUtil;

importcn.hfuu.lv.util.PageModel;

publicclassBookDao{

privateConnectionconn=null;

privateStatementstm=null;

privateResultSetrs=null;

privatePreparedStatementpstm=null;

publicvoidaddBookInfo(BookInfobook){

DBUtildbUtil=null;

try{

dbUtil=newDBUtil();

conn=dbUtil.getConnection();

Stringsql="

insertintobookinfo(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(Exceptione){

e.printStackTrace();

}finally{

dbUtil.closePreparedStatement(pstm);

dbUtil.closeConnection(conn);

}

publicvoidupdateBookInfo(BookInfobook){

updatebookinfosetnumber=?

name=?

author=?

price=?

presssnum=?

wheresequence=?

pstm.setInt(6,book.getSequence());

publicListgetAllBookInfoList(){

ListbookList=newArrayList();

Stringsql="

selectbookinfo.sequence,bookinfo.number,bookinfo.name,bookinfo.author,bookinfo.price,bookinfo.presssnum,press.pressnamefrombookinfo,presswherebookinfo.presssnum=press.presssnumlimit0,7"

stm=conn.createStatement();

rs=stm.executeQuery(sql);

while(rs.next()){

BookInfobook=newBookInfo();

book.setSequence(rs.getInt("

sequence"

book.setNumber(rs.getInt("

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1