博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记录-Hibernate+servlet实现简单的增、删、查、改
阅读量:4679 次
发布时间:2019-06-09

本文共 8936 字,大约阅读时间需要 29 分钟。

由于需要对Hibernate作个了解,所以写了个简单的实现

以上是大概目录

 

1.新建Hibernate.cfg.xml配置文件

root
jdbc:mysql://localhost:3306/hiber?characterEncoding=utf8
org.hibernate.dialect.MySQLDialect
mysqlJdbcDriver
123456
com.mysql.jdbc.Driver
true
true
update
View Code

2.修改web.xml 路径映射

tHIbe
userServlet
servlet.userServlet
userServlet
*.do
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
View Code

3.路径跳转的servlet类

package servlet;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.sun.org.apache.bcel.internal.generic.Select;import entity.User;import service.UserService;import service.impl.UserServiceImpl;public class userServlet extends HttpServlet{        /**     *      */    private static final long serialVersionUID = 1L;    UserService userService=new UserServiceImpl();    public void execute(HttpServletRequest request, HttpServletResponse response ) throws IOException{        System.out.println("进入次类");        String path = request.getServletPath();        path = path.substring(0, path.indexOf("."));        request.setCharacterEncoding("utf8");        response.setContentType("text/html;charset=utf8");        if (path.equals("/goReg")) {            RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/reg.jsp");            try {                dispatcher.forward(request, response);            } catch (ServletException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }else if(path.equals("/reg")){            regUser(request,response);            try {                request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);            } catch (ServletException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }else if(path.equals("/select")){            select(request,response);            try {                request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);            } catch (ServletException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }else if(path.equals("/delete")){            delete(request,response);            try {                request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);            } catch (Exception e) {                e.printStackTrace();            }        }            }        public void regUser(HttpServletRequest req,HttpServletResponse resp){        System.out.println("进行注册");        String name=req.getParameter("name");        String pwd=req.getParameter("pwd");        User user=new User();        user.setName(name);        user.setPwd(pwd);        userService.addUser(user);        req.setAttribute("user", user);    }        public void select(HttpServletRequest req,HttpServletResponse resp){                System.out.println("查询中");        List
list=new ArrayList<>(); list=userService.select(); req.setAttribute("list", list); } public void delete(HttpServletRequest req,HttpServletResponse resp){ Integer id=Integer.parseInt(req.getParameter("name")); int result=userService.delete(id); if(result==1){ req.setAttribute("msg", "成功kill"); } System.out.println(result); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("haha "); execute(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doGet(req, resp); }}
View Code

4.新建Hibernate工具类(主要用来在dao的实现类里面创建session、关闭session等)

package util;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil {private static final SessionFactory sessionFactory;        static    {        try        {            Configuration config = new Configuration().configure("hibernate.cfg.xml");            sessionFactory = config.buildSessionFactory();        }        catch(Throwable e)        {            throw new ExceptionInInitializerError(e);        }    }        public static final ThreadLocal session = new ThreadLocal();        public static Session currentSession() throws HibernateException    {        Session s = (Session)session.get();        //Open a new Session,if this Thread has none yet        if(s == null || !s.isOpen())        {            s = sessionFactory.openSession();            session.set(s);        }        return s;    }        public static void closeSession() throws HibernateException    {        Session s = (Session)session.get();        session.set(null);        if(s != null)            s.close();    }}
View Code

5.dao层实现类代码参考

package dao.impl;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import dao.UserDao;import entity.User;import util.HibernateUtil;public class UserDaoImpl implements UserDao {    @Override    public void addUser(User user) {        // TODO Auto-generated method stub        Session session = HibernateUtil.currentSession();        Transaction tx=session.beginTransaction();                try {            session.save(user);//保存次酒类对象            tx.commit();//提交到数据库            session.close();        } catch (Exception e) {            e.printStackTrace();            tx.rollback();        }    }    @Override    public List
select() { Session session = HibernateUtil.currentSession(); //Transaction tx=session.beginTransaction(); List
list=null; try { String hql="from User";//使用命名参数,推荐使用,易读。 Query query=session.createQuery(hql); list=query.list(); //tx.commit();//提交到数据库 session.close(); return list; } catch (Exception e) { e.printStackTrace(); } return list; } @Override public int delete(Integer id) { Session session=HibernateUtil.currentSession(); Transaction tx=session.beginTransaction(); try { User user=(User)session.get(User.class, id); session.delete(user); tx.commit(); session.close(); } catch (Exception e) { e.printStackTrace(); tx.rollback(); return 0; } return 1; }}
View Code

 6.User实体类的映射文件User.hbm.xml,和数据的关联文件(需要在Hibernate.cfg.xml配置文件中引入)

View Code

 7.User实体类(注意要实现 implements Serializable

package entity;import java.io.Serializable;/** * 持久化user类 * @author Administrator * */public class User implements Serializable{        private int id;    private String name;    private String pwd;            public User(int id, String name, String pwd) {        super();        this.id = id;        this.name = name;        this.pwd = pwd;    }            public User() {    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPwd() {        return pwd;    }    public void setPwd(String pwd) {        this.pwd = pwd;    }            }
View Code

 8.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
主页欢迎你:${suser.name},你将走向最强王者之路
点击下方按钮:
最强王者是:${list.get(1).name}
看我的

${msg}

你已成为最强王者请修改你的名称:
View Code

 

 

在项目遇到的问题有:

1.启动tomcat时 报无法启动的错误,错误可能在xml配置文件

2.xml配置的路径跳转不能跳转,同样的代码,重新建项目后又可以了,不知道什么原因

转载于:https://www.cnblogs.com/dscs/p/5162455.html

你可能感兴趣的文章
【SICP练习】112 练习3.28
查看>>
python--注释
查看>>
前端资源链接 ...
查看>>
yum install ntp 报错:Error: Package: ntp-4.2.6p5-25.el7.centos.2.x86_64 (base)
查看>>
leetcode-Single Number-136
查看>>
CF715C Digit Tree
查看>>
二分法练习1
查看>>
QT 制作串口调试小助手----(小白篇)
查看>>
前端MVC实践之hellorocket——by张舒彤
查看>>
OptimalSolution(2)--二叉树问题(3)Path路径问题
查看>>
IPC 之 Messenger 的使用
查看>>
如何joomla修改版权信息
查看>>
爱情八十六课,等得不是爱情
查看>>
企业网站建设流程
查看>>
数据库的显示、创建、使用 、用户授权管理及忘记root用户后重置密码
查看>>
ES5和ES6中的继承 图解
查看>>
macos 下usb键盘问题.
查看>>
SQL函数学习(十六):STUFF()函数
查看>>
总结基础OOP(面向对象)
查看>>
node上传包到npm公共库
查看>>