JavaWeb框架复习笔记-Struts2(与hibernate共同实现添加操作)

前面我们学会了如何封装表单数据、如何在页面中获取表单数据、以及如何通过重定向完成一些特定的操作、同时前段时间我也复习完了hibernate,所以这次就与hibernate来共同完成一个简单的操作逻辑:把页面数据保存到数据库,可以从数据库中查询数据然后在页面展示。

下面是具体流程

一:新建业务实体类

这里我们就假设保存一个用户的基本信息吧
在这里插入图片描述

二:生成相应的映射文件

我那些红色的不是报错,是idea工具的提示而已
在这里插入图片描述

三:编写Hibernate核心配置文件

在这里插入图片描述

四:编写Hibernate工具类测试数据库是否创建成功

就是把这个工具类运行一下,然后去数据看有没有表生成就行了(可以用单元测试,也可以写一个main方法,只要能生成sessionFactory就行了)
在这里插入图片描述

五:编写Dao接口规定数据操作方法

在这里插入图片描述

六:生成Dao接口的实现类

保存方法用的是session的save方法,查询用的是hql

import com.lfm.entity.User;
import com.lfm.utils.HibernateUtils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.query.Query;
import java.io.Serializable;
import java.util.List;

/**
 * ClassName:UserDaoImpl
 * Author:LFM
 * Date:2019/7/21 0:11
 **/
public class UserDaoImpl implements UserDao{
    //使用hibernate实现相应的功能
    //添加方法
    @Override
    public void add(User user) {
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction tx = null;
        try{
            sessionFactory = HibernateUtils.getSessionFactory();
            session = sessionFactory.openSession();
            tx = session.beginTransaction();
            //生成id值,返回id值
            Serializable id = session.save(user);

            tx.commit();
        }catch (Exception e){
            tx.rollback();
            e.printStackTrace();
        }finally {
            session.close();
        }
    }
    //查询所有方法
    @Override
    public List<User> findAll() {
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction tx = null;
        try{
            sessionFactory = HibernateUtils.getSessionFactory();
            session = sessionFactory.openSession();
            tx = session.beginTransaction();
            //查询所有记录
            Query query = session.createQuery("from User ");
            List<User> list = query.list();
            //返回这个记录
            tx.commit();
            return list;
        }catch (Exception e){
            tx.rollback();
            e.printStackTrace();
        }finally {
            session.close();
        }
        return null;
    }
}

七:生成相应的Service类

在这里插入图片描述

之所以写dao、daoimpl、service这三层结构是为了以后代码的维护,为什么要用Service类?是让表示层不依赖于业务层的具体实现。为什么要用DAO接口?是让业务层不依赖于持久层的具体实现(举个例子,用DAO接口,那么持久层用Hibernate,还是用MyBatis,还是 JDBC,随时可以替换,不用修改业务层Service类的代码。)

八:编写相应的Action

因为这里只有一个对象,所以使用模型驱动封装
在这里插入图片描述

九:生成相应的JSP页面

添加页面
在这里插入图片描述
结果页面(列表展示)
在这里插入图片描述

十:在Struts核心配置文件中配置Action和JSP页面

在这里插入图片描述

十一:如果不是工具直接生成的web项目,要记得去配置web.xml文件(配置struts过滤器)

在这里插入图片描述

十二:配置服务器(tomcat8.35)

在这里插入图片描述

十三:运行测试结果

之所以有很多数据是因为我提前测试过
在这里插入图片描述
在这里插入图片描述
当我们点击返回添加新用户的时候就会重定向到添加页面,此时再添加数据将会非常快显示数据库内容(第一次很慢),这是因为缓存问题

十四:查看数据库内容

在这里插入图片描述

通过上面流程我们可以发现,Action不做具体的业务逻辑操作,只是起到一个控制转发的效果,充当了控制器的作用,然后表现层和业务逻辑层我们通过service层实现解耦,然后业务逻辑层和持久化层我们通过dao和它的实现类实现解耦,这样的分层方式为以后的Spring管理铺垫基础,以后使用ssm框架也会得心应手。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一.功能简介 1. 实现一个图书管理系统。图书信息存放到一个数据库中。图书包含信息:图书号、图书名、作者、价格、备注字段。 2. 系统要实现如下的基本管理功能: (1)用户分为两类:系统管理员,一般用户。 (2)提供用户注册和用户登录验证功能;其中登录用户的信息有:登录用户名,登录密码等。 (3)管理员可以实现对注册用户的管理(删除),并实现对图书的创建、查询、修改和删除等有关的操作。 (4)一般用户,只能查询图书,并进行借书、还书操作,每个用户最多借阅8本,即当目前借书已经是8本,则不能再借书了,只有还书后,才可以再借阅。 二.涉及技术 Struts2框架Hibernate框架、MySQL数据库、C3P0数据池、Jsp、HTML、CSS、JavaScript等技术。 三.设计思路 1. 基于Struts2框架Hibernate框架进行编程设计,连接MySQL数据库实现数据的增删查改,应用Jsp、HTML、CSS、JavaScript对访问页面进行编写和美化。 2. 分别创建book表和user表,用以存放图书信息和用户数据。其中user表中,设有flag以区分管理员和普通用户。 3. 分别创建Book类和User类,与数据表相对应。每本书和每个用户都有唯一的id与之对应。 4. 创建映射文件User.hbm.xml和Book.hbm.xml。 5. 创建数据库配置文件hibernate.cfg.xml。 6. 创建数据库连接工具类。 7. 设计数据库操作类:UserDao类和BookDao类。UserDao用于实现所有对user表的操作,BookDao用于实现所有对book表的操作。 8. 创建分别对应UserDao类和BookDao类的Action:UserAction和BookAction。采用基于注解的方式进行Action配置。 9. 用户账号分为管理员账号和普通用户账号,注册时加以区分,登录时即可自动判断进入对应的操作主页面。 10. 管理员可实现对用户的查询显示,模糊查询,删除,批量删除,全选和取消全选等功能;可实现对图书的查询显示,模糊查询,添加,删除,批量删除,全选和取消全选等功能。 11. 普通用户可实现借书和还书功能,借书功能通过对book表的查询,将未借出的图书按照id顺序排列显示,点击表格后方的“借阅”按钮,进行确认借阅,将book表中本书的borrowperson列的值改为本用户账号。对于借阅成功的图书可以在“当前借阅”中进行查看。还书功能通过在“当前借阅”中点击“还书”按钮,进行确认还书,将book表中本书的borrowperson列的值改为“空”,本书信息将可以在“借书”界面查看。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值