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 ...
随机推荐
- PHP实现大文件分割上传与分片上传
转载:http://www.zixuephp.com/phpstudy/phpshilie/20170829_43029.html 服务端为什么不能直接传大文件?跟php.ini里面的几个配置有关 u ...
- IIS部署网部常用问题汇总
1.unrecognized attribute 'targetframework' A: 需要注册.net framework到iis.步骤如下: (1)'Start' -> 'CMD' (2 ...
- nginx 反向代理 ,入门
入门:http://www.cnblogs.com/jjzd/p/6691500.html 启动,重新加载:http://blog.csdn.net/zhongguozhichuang/article ...
- Django 2.0 学习(08):Django 自动化测试
编写我们的第一个测试 确定bug 幸运的是,在polls应用中存在一个小小的bug急需修复:无论Question的发布日期是最近(最后)的日期,还是将来很多天的日期,Question.was_publ ...
- Python正则表达式re模块
re.compile(pattern,flags=0)将正则表达式编译成正则表达式对象.可以使用match()和search()方法进行匹配.对于常用的表达式可以先进行编译,后续可多次使用以提高效率. ...
- img 和 background-image 优劣比较
一. 简单来说,img是内容部分的东西,css的background-image是修饰性的东西. img------从页面元素来说,如果是页面中的图片是作为内容出现的,比如广告图片,比如产品图片,那么 ...
- html的body内标签之input系列1
1. Form的作用:提交当前的表单. 类似于去了银行提交的纸质单子,递到后台去办理相关业务. text,password只有输入的功能:button,submit只有点击的功能.想要把这些信息提交, ...
- [洛谷P5068][Ynoi2015]我回来了
题目大意:给你一张$n(n\leqslant10^3)$个点$m(m\leqslant10^5)$个点的无向无权图,多组询问,每次询问给你一些二元组$(x_i,y_i)$,求有多少个$u$于至少一个二 ...
- POJ1474:Video Surveillance——题解
http://poj.org/problem?id=1474 题目大意:给按照顺时针序的多边形顶点,问其是否有内核. —————————————————————————————— (和上道题目一模一样 ...
- 将微服务注册到Eureka Server
一.微服务程序编写 1.在已写好的微服务程序中添加pom依赖: <dependency> <groupId>org.springframework.cloud</grou ...