的数据库采用Oracle简易版本建立一个数据库,在其下创建4个数据表,其结构分别如下各表:
表4-1 数据表清单
表名 说明 管理员用户表 用于存储管理员信息表格 普通用户表 用于存储普通用户信息表格 书籍信息表 用于存储书籍基本信息表格 书籍外借信息表 用于储存外借书籍的基本信息
表4-2 管理员用户信息表
字段名 数据类型 长度 主键 备注 ID 自动编号 10 是 由数据库sequence自动生成 Adminname Varchar2 50 否 管理员的登录账号 Password Varchar2 50 否 管理员登录的密码
表4-3 普通用户信息表
字段名 数据类型 长度 主键 备注 ID 自动编号 10 是 由数据库sequence自动生成 Username Varchar2 50 否 唯一标识用户,不可缺 Password Varchar2 50 否 普通用户用户登录密码 Indentityid Varchar2 100 否 用户注册的身份证号 Year Varchar2 50 否 用户入学年份 Gender Varchar2 30 否 用户性别 College Varchar2 50 否 用户所在 表4-4 书籍信息表
字段名 数据类型 长度 主键 备注 ID 自动编号 10 联合主键 由数据库sequence自动生成 Bookname Varchar2 50 联合主键 书籍名称 Bookauthor Varchar2 50 否 书籍作者名 Phname Varchar2 50 否 出版社名称 Location Varchar2 60 否 所在位置 Category Varchar2 80 否 所属科目 Status Varchar2 20 否 书籍状态 Renttime Varchar2 20 否 最大借阅时间
表4-5 外借书籍信息表
字段名 数据类型 长度 主键 备注 ID Varchar2 10 是 由数据库自动生成 Book_date Varchar2 50 否 外借时间 Act_ret_date Varchar2 50 否 实际的外借时间 Exp_ret_date Varchar2 50 否 最大的外借时间 Book_id Varchar2 10 否 书籍编号 Bookname Varchar2 50 否 书籍名字 Authorname Varchar2 50 否 书籍作者名 User_id Varchar2 10 否 借阅者id
第5章 模块开发及编码实现
5.1 服务器端的设计---搭建java web服务器
本软件是C/S结构的系统,因此要先搭建服务器端,利用Java EE中的servlet来提供服务,并将其部署在Tomcat下。需要解决的是创建不同的servlet来提供不同的服务。
Web服务的名称:LibraryService
在MyEclipse中新建一个web project,取名为LibraryService,其结构如下图:
图5.1 服务器端代码结构
5.2 连接数据库模块
com.briup.jdbc是CVM模式中的低层,数据库层,包中的类是用来连接数据库和操作数据库的,其中JDBCConnectionFactory.java用来连接数据库的,连接数据库的三个变量为:
private static String url;
private static String userName;
private static String userPwd;
连接数据库需要url,username,userPassword这三个值,而这三个值放入到jdbcinfo中,通过Properties来获取,部分代码如下:
Properties pro = new Properties();
pro.load(new FileInputStream("E:\Myeclipse6.5 workspace\
LibraryService\src\com\briup\jdbc\ jdbcinfo"));
url=pro.getProperty("url");
userName = pro.getProperty("userName");
userPwd = pro.getProperty("userPwd");
new oracle.jdbc.driver.OracleDriver();
Connection conn = DriverManager.getConnection(url,userName,userPwd);
5.3 服务器功能模块
com.briup.dao是CVM模式中的Dao层,为service提供服务,封装对数据库的操作的方法。
com.briup.servlet包中就各个不同的Servlet类,其具体情况如下:
5.3.1 注册模块
提供用户注册servlet为RegisterServlet,重写其doPost()和doGet()方法,该servlet是用来处理学生用户注册请求。注册的参数有username、password、indentityid、year、gender、college,其url为:
192.168.19.1:8088/LibraryService/servlet/registerservlet
部分代码如下:
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
String indentityid = request.getParameter("indentityid");
String year = request.getParameter("year");
String gender = request.getParameter("gender");
String college = request.getParameter("college");
LibraryDao dao =new LibraryDaoImpl();
try {User user1=(User)dao.findByUsername(username);
if(user1!=null)
{xml=MakeXML.makeXml("该用户名已存在了",false);
}else{
User user=new User();
user.setUsername(username);
user.setPassword(password);
user.setIndentityid(indentityid);
user.setYear(year);
user.setGender(gender);
user.setCollege(college);
dao.save(user);
xml=MakeXML.makeXml("恭喜您注册成功了",true);
}
5.3.2 登录模块
提供用户登录的servlet为LoginServlet,重写其doPost()和doGet()方法,该servlet是用来处理学生用户和管理员登录的请求。登录的参数有username、password,其url为:
192.168.19.1:8088/LibraryService/servlet/loginservlet
部分代码如下:
PrintWriter out = response.getWriter();
System.out.println("welcome clientlogin");
String xml=null;
//获得帐号
String flag=request.getParameter("flag").trim();
String username =
request.getParameter("username").trim();
String password=
(String)request.getParameter("password").trim();
LibraryDao dao=new LibraryDaoImpl();
if(flag.equals("normal")){
if(username!=null)
{
try {
com.briup.pojo.User user=dao.findByUsername(username);
if(user!=null)
{
if(user.getPassword().equalsIgnoreCase(password))
{
xml=MakeXML.makeXml("恭喜您登录成功了",true);
}else{
xml=MakeXML.makeXml("密码不对",false);
}
}else{
xml=MakeXML.makeXml("用户名不正确",false);
}
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("网络异常");
out.println("
");
out.println("网络异常");
}
}
}else if(flag.equals("admin")){
try {
Admin admin=dao.findByAdminname(username);
if(admin!=null)
{
if(admin.getPassword().equals(password))
{
xml=MakeXML.makeXml("恭喜您登录成功了",true);
}else{
xml=MakeXML.makeXml("密码不对",false);
}
}
else{
xml=MakeXML.makeXml("用户名不存在",false);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
5.3.3 书籍查询模块
提供特定书籍查询servlet为findBookServlet,重写其doPost()和doGet()方法,该servlet是用来处理学生用户查询特定书籍的请求。查询书籍参数有bookname、bookauthor,其url为:
192.168.19.1:8088/LibraryService/servlet/findbooksservlet
部分代码如下:
String bookname=request.getParameter("bookname").trim();
String authorname=request.getParameter("authorname").trim();
String status=request.getParameter("status").trim();
//status 为yes表示被借出了 为no表示没被借出没
System.out.println("----hello i am in findBooksServlet----");
String xml=null;
List list=null;
LibraryDao dao=new LibraryDaoImpl();
if(status.equals(""))
{
try {
list=dao.findBookByName(bookname, authorname);
if(list!=null)
{
xml=MakeXML.makeXml(list,list.size()+"");
}
else{
xml=MakeXML.makeXml(
上一篇:
毕业论文选题参考
下一篇:
扛起年轻化大旗,哈弗F系玩转行业新风潮