最近疯了一段时间,感觉忘得差不多了,找到以前做的项目,重温一下
jdbc连接下基于servlet的最原始的javaWeb项目
工具:Eclipse ,oracle数据库,tomcat7 ,JDK 7
首先说一下需求: 简易的图书管理系统,顾名思义,简约就好,可以少一些表,但是该有的架子还是需要有的
看一下数据库的:
先看一下代码的结构图:分层嘛
再看一下运行的截图,做了拦截器,不登陆是没法访问这个界面的
下面我准备开始一步一步回忆啦,
就已图书那块为例,首先我要见数据库建表,
数据库完成后,就转入java 端啦,分层的思想,先新建包:dao, service ,servlet, database,vo
vo:存实体类,比如图书类
database:操作数据库的类,连接数据库啦,关闭数据库啦等等
dao: 存对数据库增删改查的语句
service :进行事务控制
servlet:响应jsp 的请求
基本流程就是:(以用户查询图书为例)用户访问网站会发起请求(查询),请求先到servlet,端,servlet调用service里的查询图书的方法,service不是直接处理,而是转发任务去dao,dao调用database进行连接数据库,继而进行实际的查询工作,查出来的结果要进行格式化,就用到了我们的vo,以vo的格式将查询出来的数据格式化,再将结果返回service,service在这个例子里看不出什么作用,但是当用户进行新增或者修改删除时,就有用了,做这些操作可能会失败,service的作用就是如果失败,就进行事务回滚,不破坏数据库原有信息,service将结果返回servlet,servlet跳转至相应页面,将数据展示给用户
没听懂我也没办法啦
我这个项目是把功能也分层啦,图书是图书的,用户是用户的,然后连接数据库的我给封装在一起啦,common里存的就是公共的,什么过滤器啦,登陆登出,验证码啦这些
继续说图书这个模块,
数据的连接和增删改查的语句我都封装在了一起,所以图书模块里就没有这些啦
看看Book 这个类:
public class BookVO {
// id
private String bid;
// 书名
private String btitle;
// 作者
private String bauthor;
// 封面图片
private String bimage;
// 图书简介
private String bbriefinfo;
// 是否可借
private String bcanborrow;
public String getBcanborrow() {
return bcanborrow;
}
public void setBcanborrow(String bcanborrow) {
this.bcanborrow = bcanborrow;
}
public String getBid() {
return bid;
}
public void setBid(String bid) {
this.bid = bid == null ? null : bid.trim();
}
public String getBtitle() {
return btitle;
}
public void setBtitle(String btitle) {
this.btitle = btitle == null ? null : btitle.trim();
}
public String getBauthor() {
return bauthor;
}
public void setBauthor(String bauthor) {
this.bauthor = bauthor == null ? null : bauthor.trim();
}
public String getBimage() {
return bimage;
}
public void setBimage(String bimage) {
this.bimage = bimage == null ? null : bimage.trim();
}
public String getBbriefinfo() {
return bbriefinfo;
}
public void setBbriefinfo(String bbriefinfo) {
this.bbriefinfo = bbriefinfo == null ? null : bbriefinfo.trim();
}
}
因为用户要借还书,所有这个功能我给写在一起啦 StudentBorrowBook类
public class StudentBorrowBookVO {
// id
private String sbbid;
// 学生id
private String sid;
// 学生name
private String sname;
// 图书name
private String bname;
// 图书id
private String bid;
// 借书时间
private Date borrowtime;
// 还书时间
private Date returntime;
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public String getSbbid() {
return sbbid;
}
public void setSbbid(String sbbid) {
this.sbbid = sbbid == null ? null : sbbid.trim();
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid == null ? null : sid.trim();
}
public String getBid() {
return bid;
}
public void setBid(String bid) {
this.bid = bid == null ? null : bid.trim();
}
public Date getBorrowtime() {
return borrowtime;
}
//java.util.Dat ----> java.sql.Date
public void setBorrowtime(java.util.Date borrowtime) {
this.borrowtime = new Date(borrowtime.getTime());
}
public Date getReturntime() {
return returntime;
}
public void setReturntime(java.util.Date returntime) {
this.returntime = new Date(returntime.getTime());
}
}
添加图书的界面:
<span style="white-space:pre&