Struts2+Hibernate实现图书管理系统
效果图
部分代码
Books.java
package entity;
import java.util.Date;
public class Books {
//书籍编号
private String sid;
//书名
private String sname;
//借书日期
private Date loandate;
//书籍剩余数量
private String total;
public Books() {
}
public Books(String sid, String sname, Date loandate, String total) {
//super();
this.sid = sid;
this.sname = sname;
this.loandate = loandate;
this.total = total;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Date getLoandate() {
return loandate;
}
public void setLoandate(Date loandate) {
this.loandate = loandate;
}
public String getTotal() {
return total;
}
public void setTotal(String total) {
this.total = total;
}
@Override
public String toString() {
return "Books [sid=" + sid + ", sname=" + sname + ", loandate="
+ loandate + ", total=" + total + "]";
}
}
Books.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="entity.Books" table="BOOKS">
<!-- 主键 -->
<id name="sid" type="java.lang.String" length="8">
<!-- 主键生成方式:自动生成 -->
<generator class="assigned"></generator>
</id>
<property name="sname" type="java.lang.String"></property>
<property name="loandate" type="date"></property>
<property name="total" type="java.lang.String"></property>
</class>
</hibernate-mapping>
BooksAction.java
package action;
import java.text.SimpleDateFormat;
import java.util.List;
import service.BooksDAO;
import service.impl.BooksDAOImpl;
import entity.Books;
public class BooksAction extends SuperAction {
private static final long serialVersionUID = 1L;
// 查询所有书籍
public String query() {
BooksDAO sdao = new BooksDAOImpl();
List<Books> list = sdao.queryAllBooks();
// 放进session中
if (list != null && list.size() > 0) {
session.setAttribute("books_list", list);// !!!!
}
return "query_success";
}
// 删除书籍
public String delete() {
BooksDAO sdao = new BooksDAOImpl();
String sid = request.getParameter("sid");
sdao.deleteBook(sid);// 调用删除方法
return "delete_success";
}
// 添加书籍
public String add() throws Exception {
Books s = new Books();
// 获得学生姓名
s.setSname(request.getParameter("sname"));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 判断管理员输入的日期是否为空
// 不为空则继续后面的工作,为空则跳转到添加书籍失败界面
if (request.getParameter("loandate") != "") {
s.setLoandate(sdf.parse(request.getParameter("loandate")));
s.setTotal(request.getParameter("total"));
BooksDAO sdao = new BooksDAOImpl();
sdao.addBooks(s);
return "add_success";
} else {
return "add_failure";
}
}
// 修改书籍
public String modify() {
// 获取学生编号
String sid = request.getParameter("sid");
BooksDAO sdao = new BooksDAOImpl();
Books s = sdao.queryBooksBySid(sid);
// 保存在会话中
session.setAttribute("modify_books", s);// !!!!!
return "modify_success";
}
// 保存修改后的书籍资料动作
public String save() throws Exception {
Books s = new Books();
s.setSid(request.getParameter("sid"));
s.setSname(request.getParameter("sname"));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 判断管理员输入的日期是否为空
// 不为空则继续后面的工作,为空则跳转到添加书籍失败界面
if (request.getParameter("loandate") != "") {
s.setLoandate(sdf.parse(request.getParameter("loandate")));
s.setTotal(request.getParameter("total"));// !!!
BooksDAO sdao = new BooksDAOImpl();
sdao.updateBook(s);
return "save_success";
} else {
return "modify";
}
}
}
BooksDAO.java
```java
package service;
import java.util.List;
import entity.Books;
/**
* @ClassName: BooksDAO.java
* @Description: 书籍业务逻辑接口
* @version: "1.8.0_131"
* @author: 寇爽
* @date: 2017年11月14日 下午8:19:19
*/
public interface BooksDAO {
//查询所有书籍资料
public List<Books> queryAllBooks();
// 根据书籍编号查询书籍资料
public Books queryBooksBySid(String sid);
// 添加书籍资料
public boolean addBooks(Books s);
// 修改书籍资料
public boolean updateBook(Books s);
//删除书籍资料
public boolean deleteBook(String sid);
}
<div class="se-preview-section-delimiter"></div>
BooksDAOImpl.java
package service.impl;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import db.MyHibernateSessionFactory;
import entity.Books;
import service.BooksDAO;
/**
* @ClassName: BooksDAOImpl.java
* @Description: 书籍业务逻辑接口实现类
* @version: "1.8.0_131"
* @author: 寇爽
* @date: 2017年11月14日 下午8:34:05
*/
public class BooksDAOImpl implements BooksDAO {
/**
* 查询所有书籍资料
*/
@SuppressWarnings("unchecked")
@Override
public List<Books> queryAllBooks() {
Transaction tx = null;
List<Books> list = null;
String hql = "";
try {
Session session = MyHibernateSessionFactory.getSessionFactory()
.getCurrentSession();
tx = session.beginTransaction();
hql = "from Books";
Query query = session.createQuery(hql);
list = query.list();
tx.commit();
return list;
} catch (Exception ex) {
ex.printStackTrace();
tx.commit();
return list;
} finally {
if (tx != null) {
tx = null;
}
}
}
/**
* 根据书籍编号查询书籍资料
*/
@Override
public Books queryBooksBySid(String sid) {
Transaction tx = null;
Books s = null;
try {
Session session = MyHibernateSessionFactory.getSessionFactory()
.getCurrentSession();
tx = session.beginTransaction();
s = (Books) session.get(Books.class, sid);
tx.commit();
return s;
} catch (Exception ex) {
ex.printStackTrace();
tx.commit();
return s;
} finally {
if (tx != null) {
tx = null;
}
}
}
/**
* 添加书籍资料
*/
@Override
public boolean addBooks(Books s) {
// 设置学生学号为getNewSid()生成的学号
s.setSid(getNewSid());
Transaction tx = null;
try {
Session session = MyHibernateSessionFactory.getSessionFactory()
.getCurrentSession();
tx = session.beginTransaction();
session.save(s);
tx.commit();
return true;
} catch (Exception ex) {
ex.printStackTrace();
tx.commit();
return false;
} finally {
if (tx != null) {
tx = null;
}
}
}
/**
* 修改书籍资料
*/
@Override
public boolean updateBook(Books s) {
// TODO Auto-generated method stub
Transaction tx = null;
try {
Session session = MyHibernateSessionFactory.getSessionFactory()
.getCurrentSession();
tx = session.beginTransaction();
session.update(s);
tx.commit();
return true;
} catch (Exception ex) {
ex.printStackTrace();
tx.commit();
return false;
} finally {
if (tx != null) {
tx = null;
}
}
}
/**
* 删除书籍资料
*/
@Override
public boolean deleteBook(String sid) {
// TODO Auto-generated method stub
Transaction tx = null;
String hql = "";
try {
Session session = MyHibernateSessionFactory.getSessionFactory()
.getCurrentSession();
tx = session.beginTransaction();
Books s = (Books) session.get(Books.class, sid);
session.delete(s);
tx.commit();
return true;
} catch (Exception ex) {
ex.printStackTrace();
tx.commit();
return false;
} finally {
if (tx != null) {
tx = null;
}
}
}
/**
* 生成书籍编号的方法
*
* @return 书籍号
*/
private String getNewSid() {
Transaction tx = null;
String hql = "";
String sid = null;
try {
Session session = MyHibernateSessionFactory.getSessionFactory()
.getCurrentSession();
tx = session.beginTransaction();
// 获得当前学生的最大编号
hql = "select max(sid) from Books";
Query query = session.createQuery(hql);
sid = (String) query.uniqueResult();
if (sid == null || "".equals(sid)) {
// 给一个默认的最大编号
sid = "B0000001";
} else {
// 取后7位
String temp = sid.substring(1);
// 转成数字
int i = Integer.parseInt(temp);
i++;
// 还原成字符串
temp = String.valueOf(i);
int len = temp.length();
// 凑够7位
for (int j = 0; j < 7 - len; j++) {
temp = "0" + temp;
}
sid = "B" + temp;
}
tx.commit();
return sid;
} catch (Exception ex) {
ex.printStackTrace();
tx.commit();
return null;
} finally {
if (tx != null) {
tx = null;
}
}
}
}
<div class="se-preview-section-delimiter"></div>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
</package>
<package name="users" namespace="/users" extends="default">
<action name="*_*" class="action.{1}Action" method="{2}">
<result name="login_success">/users/Users_login_success.jsp</result>
<result name="login_failure">/users/Users_login.jsp</result>
<result name="logout_success">/users/Users_login.jsp</result>
<result name="input">/users/Users_login.jsp</result>
</action>
</package>
<package name="students" namespace="/students" extends="default">
<action name="*_*" class="action.{1}Action" method="{2}">
<result name="query_success">/students/Students_query_success.jsp</result>
<result name="modify_success">/students/Students_modify.jsp</result>
<result name="modify">/students/Students_modify.jsp</result>
<result name="add_success">/students/Students_add_success.jsp</result>
<result name="add_failure">/students/Students_add_failure.jsp</result>
<result name="save_success">/students/Students_modify_success.jsp</result>
<result name="delete_success" type="chain">Students_query</result>
</action>
</package>
<package name="books" namespace="/books" extends="default">
<action name="*_*" class="action.{1}Action" method="{2}">
<result name="query_success">/books/Books_query_success.jsp</result>
<result name="modify_success">/books/Books_modify.jsp</result>
<result name="modify">/books/Books_modify.jsp</result>
<result name="add_success">/books/Books_add_success.jsp</result>
<result name="add_failure">/books/Books_add_failure.jsp</result>
<result name="save_success">/books/Books_modify_success.jsp</result>
<result name="delete_success" type="chain">Books_query</result>
</action>
</package>
</struts>
项目源码:
https://github.com/Snailclimb/JavaWebProject/tree/master/immoc_sh (推荐star不要fork,还在继续改动中),后续还会上传SSH,SSM的项目。
Struts2+Hibernate实现图书管理系统的更多相关文章
- struts2+hibernate 项目实战:图书管理系统
经典项目,练手必备. 图书管理系统 需求分析(大致,并不专业):1.需要有用户管理: 1.1 用户注册: 1.2 用户登录: 1.3 用户信息修改: 1.4 用户修改密码: 2.需要有书本管理: 2. ...
- JAVA图书管理系统汇总共27个
好多人都在搜索图书管理系统,感觉这个挺受欢迎的,所以整理了一系列的图书管理系统,让大家选择.java图书馆管理系统[优秀毕业设计论文+源码]http://down.51cto.com/data/683 ...
- JAVA图书管理系统汇总共27个[转]
java图书馆管理系统[优秀毕业设计论文+源码]http://down.51cto.com/data/68350java+sql server图书管理系统 http://down.51cto.com/ ...
- Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)
1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...
- 基于jsp+servlet图书管理系统之后台万能模板
前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...
- [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)
[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date 周六 10 一月 2015 By 钟谢伟 Category website develop ...
- struts2+hibernate整合-实现登录功能
最近一直学习struts2+hibernate框架,于是想把两个框架整合到一起,做一个小的登录项目.其他不多说,直接看例子. 1).Struts2 和hibernate的环境配置 包括jar包.web ...
- JQuery+Ajax+Struts2+Hibernate 实现完整的登录注册
写在最前: 下午有招聘会,不想去,总觉得没有准备好,而且都是一些不对口的公司,可是又静不下心来,就来写个博客. 最近在仿造一个书城的网站:http://www.yousuu.com ,UI直接拿来用, ...
- 基于TXT文本的简单图书管理系统
1 ////////////////////////////////////////////////////////////////////////////////////// //SqList.h ...
随机推荐
- .NET环境下,通过LINQ操作SQLite数据库
//对应数据库中的某个表 [Table(Name = "main.Student")] public class Student { [Column(Na ...
- Android基础------SQLite数据库(二)
1.操作SQLite数据库 1.1 execSQL() 可以执行insert.delete.update和CREATE TABLE之类有更改行为的SQL语句 1.2 rawQuery() 可以执行se ...
- html5 js canvas中画星星的函数
function drawStar(cxt, x, y, outerR, innerR, rot) { cxt.beginPath(); ; i < ; i++) { cxt.lineTo(Ma ...
- BZOJ4897 THUSC2016成绩单(区间dp)
拿走一个区间的代价只与最大最小值有关,并且如果最后一次拿走包含区间右端点的子序列一定不会使答案更劣,于是设f[i][j][x][y]为使i~j区间剩余最小值为x最大值为y且若有数剩余一定包含j的最小代 ...
- bzoj 1797: [Ahoi2009]Mincut 最小割 (网络流)
太神了直接看了hzwer的题解,有个新认识,一条路径上满流的一定是这条路径上所有边的最小值. type arr=record toward,next,cap,from:longint; end; co ...
- POJ3648:Wedding——题解(配2-SAT简易讲解)
http://poj.org/problem?id=3648 (在家,而且因为2-SAT写的不明不白的,所以这篇详细写) 题目大意: 有一对新人结婚,邀请了n-1 对夫妇去参加婚礼.婚礼上所有人要坐在 ...
- BZOJ5312:冒险——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5312 Kaiser终于成为冒险协会的一员,这次冒险协会派他去冒险,他来到一处古墓,却被大门上的守护 ...
- JavaScript in 操作符
JavaScript的in操作符可以用来判断一个属性是否属于一个对象,也可以用来变量一个对象的属性 1. 判断属性属于对象 var mycar = {make: "Honda", ...
- ACE的安装
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/03/580714.html ACE的安装是一件比较麻烦的事情,这里简单的记录了我在VS2005 ...
- Android HandlerThread分析
基础概念:HandlerThread 是一个包含 Looper 的 Thread,我们可以直接使用这个 Looper 创建 Handler,本质上还是Thread Handler 必须要和 Loope ...