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

以上是大概目录

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

  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5.  
  6. <!-- Generated by MyEclipse Hibernate Tools. -->
  7. <hibernate-configuration>
  8.  
  9. <session-factory>
  10. <property name="connection.username">root</property>
  11. <property name="connection.url">
  12. jdbc:mysql://localhost:3306/hiber?characterEncoding=utf8
  13. </property>
  14. <property name="dialect">
  15. org.hibernate.dialect.MySQLDialect
  16. </property>
  17. <property name="myeclipse.connection.profile">
  18. mysqlJdbcDriver
  19. </property>
  20. <property name="connection.password">123456</property>
  21. <property name="connection.driver_class">
  22. com.mysql.jdbc.Driver
  23. </property>
  24. <property name="show_sql">true</property>
  25. <property name="format_sql">true</property>
  26. <property name="hbm2ddl.auto">update</property>
  27. <mapping resource="/entity/User.hbm.xml"/>
  28.  
  29. </session-factory>
  30.  
  31. </hibernate-configuration>

2.修改web.xml 路径映射

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  3. <display-name>tHIbe</display-name>
  4. <servlet>
  5. <servlet-name>userServlet</servlet-name>
  6. <servlet-class>servlet.userServlet</servlet-class>
  7. </servlet>
  8. <servlet-mapping>
  9. <servlet-name>userServlet</servlet-name>
  10. <url-pattern>*.do</url-pattern>
  11. </servlet-mapping>
  12. <welcome-file-list>
  13. <welcome-file>index.html</welcome-file>
  14. <welcome-file>index.htm</welcome-file>
  15. <welcome-file>index.jsp</welcome-file>
  16. <welcome-file>default.html</welcome-file>
  17. <welcome-file>default.htm</welcome-file>
  18. <welcome-file>default.jsp</welcome-file>
  19. </welcome-file-list>
  20. </web-app>

3.路径跳转的servlet类

  1. package servlet;
  2.  
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. import javax.servlet.RequestDispatcher;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12.  
  13. import com.sun.org.apache.bcel.internal.generic.Select;
  14.  
  15. import entity.User;
  16. import service.UserService;
  17. import service.impl.UserServiceImpl;
  18.  
  19. public class userServlet extends HttpServlet{
  20.  
  21. /**
  22. *
  23. */
  24. private static final long serialVersionUID = 1L;
  25. UserService userService=new UserServiceImpl();
  26. public void execute(HttpServletRequest request, HttpServletResponse response ) throws IOException{
  27. System.out.println("进入次类");
  28. String path = request.getServletPath();
  29. path = path.substring(0, path.indexOf("."));
  30. request.setCharacterEncoding("utf8");
  31. response.setContentType("text/html;charset=utf8");
  32.  
  33. if (path.equals("/goReg")) {
  34. RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/reg.jsp");
  35. try {
  36. dispatcher.forward(request, response);
  37. } catch (ServletException e) {
  38. // TODO Auto-generated catch block
  39. e.printStackTrace();
  40. }
  41. }else if(path.equals("/reg")){
  42. regUser(request,response);
  43. try {
  44. request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);
  45. } catch (ServletException e) {
  46. // TODO Auto-generated catch block
  47. e.printStackTrace();
  48. }
  49. }else if(path.equals("/select")){
  50. select(request,response);
  51. try {
  52. request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);
  53. } catch (ServletException e) {
  54. // TODO Auto-generated catch block
  55. e.printStackTrace();
  56. }
  57. }else if(path.equals("/delete")){
  58. delete(request,response);
  59. try {
  60. request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);
  61. } catch (Exception e) {
  62. e.printStackTrace();
  63. }
  64. }
  65.  
  66. }
  67.  
  68. public void regUser(HttpServletRequest req,HttpServletResponse resp){
  69. System.out.println("进行注册");
  70. String name=req.getParameter("name");
  71. String pwd=req.getParameter("pwd");
  72. User user=new User();
  73. user.setName(name);
  74. user.setPwd(pwd);
  75. userService.addUser(user);
  76. req.setAttribute("user", user);
  77. }
  78.  
  79. public void select(HttpServletRequest req,HttpServletResponse resp){
  80.  
  81. System.out.println("查询中");
  82. List<User> list=new ArrayList<>();
  83. list=userService.select();
  84. req.setAttribute("list", list);
  85. }
  86.  
  87. public void delete(HttpServletRequest req,HttpServletResponse resp){
  88. Integer id=Integer.parseInt(req.getParameter("name"));
  89. int result=userService.delete(id);
  90. if(result==1){
  91. req.setAttribute("msg", "成功kill");
  92. }
  93. System.out.println(result);
  94. }
  95.  
  96. @Override
  97. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  98. System.out.println("haha ");
  99. execute(req,resp);
  100. }
  101.  
  102. @Override
  103. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  104. // TODO Auto-generated method stub
  105. doGet(req, resp);
  106. }
  107. }

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

  1. package util;
  2.  
  3. import org.hibernate.HibernateException;
  4. import org.hibernate.Session;
  5. import org.hibernate.SessionFactory;
  6. import org.hibernate.cfg.Configuration;
  7.  
  8. public class HibernateUtil {
  9. private static final SessionFactory sessionFactory;
  10.  
  11. static
  12. {
  13. try
  14. {
  15. Configuration config = new Configuration().configure("hibernate.cfg.xml");
  16. sessionFactory = config.buildSessionFactory();
  17. }
  18. catch(Throwable e)
  19. {
  20. throw new ExceptionInInitializerError(e);
  21. }
  22. }
  23.  
  24. public static final ThreadLocal session = new ThreadLocal();
  25.  
  26. public static Session currentSession() throws HibernateException
  27. {
  28. Session s = (Session)session.get();
  29. //Open a new Session,if this Thread has none yet
  30. if(s == null || !s.isOpen())
  31. {
  32. s = sessionFactory.openSession();
  33. session.set(s);
  34. }
  35. return s;
  36. }
  37.  
  38. public static void closeSession() throws HibernateException
  39. {
  40. Session s = (Session)session.get();
  41. session.set(null);
  42. if(s != null)
  43. s.close();
  44. }
  45. }

5.dao层实现类代码参考

  1. package dao.impl;
  2.  
  3. import java.util.List;
  4.  
  5. import org.hibernate.Query;
  6. import org.hibernate.Session;
  7. import org.hibernate.Transaction;
  8.  
  9. import dao.UserDao;
  10. import entity.User;
  11. import util.HibernateUtil;
  12.  
  13. public class UserDaoImpl implements UserDao {
  14.  
  15. @Override
  16. public void addUser(User user) {
  17. // TODO Auto-generated method stub
  18. Session session = HibernateUtil.currentSession();
  19. Transaction tx=session.beginTransaction();
  20.  
  21. try {
  22. session.save(user);//保存次酒类对象
  23. tx.commit();//提交到数据库
  24. session.close();
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. tx.rollback();
  28. }
  29. }
  30.  
  31. @Override
  32. public List<User> select() {
  33. Session session = HibernateUtil.currentSession();
  34. //Transaction tx=session.beginTransaction();
  35. List<User> list=null;
  36. try {
  37. String hql="from User";//使用命名参数,推荐使用,易读。
  38. Query query=session.createQuery(hql);
  39. list=query.list();
  40. //tx.commit();//提交到数据库
  41. session.close();
  42. return list;
  43.  
  44. } catch (Exception e) {
  45. e.printStackTrace();
  46. }
  47. return list;
  48. }
  49.  
  50. @Override
  51. public int delete(Integer id) {
  52. Session session=HibernateUtil.currentSession();
  53. Transaction tx=session.beginTransaction();
  54. try {
  55. User user=(User)session.get(User.class, id);
  56. session.delete(user);
  57. tx.commit();
  58. session.close();
  59. } catch (Exception e) {
  60. e.printStackTrace();
  61. tx.rollback();
  62. return 0;
  63. }
  64. return 1;
  65. }
  66.  
  67. }

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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="entity">
  6. <class name="User" table="user">
  7. <id name="id" column="id">
  8. <generator class="identity"></generator>
  9. </id>
  10. <property name="name" column="name" unique="true"></property>
  11. <property name="pwd" column="pwd"></property>
  12. </class>
  13. </hibernate-mapping>

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

  1. package entity;
  2.  
  3. import java.io.Serializable;
  4.  
  5. /**
  6. * 持久化user类
  7. * @author Administrator
  8. *
  9. */
  10. public class User implements Serializable{
  11.  
  12. private int id;
  13. private String name;
  14. private String pwd;
  15.  
  16. public User(int id, String name, String pwd) {
  17. super();
  18. this.id = id;
  19. this.name = name;
  20. this.pwd = pwd;
  21. }
  22.  
  23. public User() {
  24. }
  25.  
  26. public int getId() {
  27. return id;
  28. }
  29. public void setId(int id) {
  30. this.id = id;
  31. }
  32. public String getName() {
  33. return name;
  34. }
  35. public void setName(String name) {
  36. this.name = name;
  37. }
  38. public String getPwd() {
  39. return pwd;
  40. }
  41. public void setPwd(String pwd) {
  42. this.pwd = pwd;
  43. }
  44.  
  45. }

8.jsp页面

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>主页</title>
  8. <script type="text/javascript">
  9. function dianji(){
  10. window.location.href='select.do'
  11. };
  12.  
  13. function kill(){
  14. window.location.href='delete.do?name=${list.get(1).id}'
  15. }
  16.  
  17. function ok(){
  18. var name=document.getElementById("newName").value;
  19. window.location.href='update.do?name='+name
  20. }
  21. </script>
  22. </head>
  23. <body>
  24. 欢迎你:${suser.name},你将走向最强王者之路<br/>
  25. 点击下方按钮:<br/>
  26. <input type="button" value="查询最强王者" onclick="dianji()"/><br/>
  27. 最强王者是:${list.get(1).name}<br/>
  28.  
  29. 看我的<br/>
  30. <input type="button" value="kill you!" onclick="kill()"/>
  31. <p>${msg}</p>
  32.  
  33. 你已成为最强王者请修改你的名称:<input type="text" name="name" id="newName" placeholder="请输入你的新昵称" /><input type="button" value="确定" onclick="ok()"/>
  34. </body>
  35. </html>

在项目遇到的问题有:

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

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

记录-Hibernate+servlet实现简单的增、删、查、改的更多相关文章

  1. WindowsForm 增 删 查 改

    首先是连接数据库  在数据库里写代码 建立一个数据库下面是代码 create database JinXiaoCun go use JinXiaoCun go create table users ( ...

  2. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...

  3. springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能

    转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包     数据库表 数据库表就不用教大家了,一张表,很简 ...

  4. C#+Access 员工信息管理--简单的增删改查操作和.ini配置文件的读写操作。

    1.本程序的使用的语言是C#,数据库是Access2003.主要是对员工信息进行简单的增删改查操作和对.ini配置文件的读写操作. 2.代码运行效果如下: 功能比较简单.其中在得到查询结果后,在查询结 ...

  5. 通过JDBC进行简单的增删改查

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

  6. 初试KONCKOUT+WEBAPI简单实现增删改查

    初试KONCKOUT+WEBAPI简单实现增删改查 前言 konckout.js本人也是刚刚接触,也是初学,本文的目的是使用ko和asp.net mvc4 webapi来实现一个简单增删改查操作.Kn ...

  7. SpringMVC之简单的增删改查示例(SSM整合)

    本篇文章主要介绍了SpringMVC之简单的增删改查示例(SSM整合),这个例子是基于SpringMVC+Spring+Mybatis实现的.有兴趣的可以了解一下. 虽然已经在做关于SpringMVC ...

  8. python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作

    1.通过 pip 安装 pymysql 进入 cmd  输入  pip install pymysql   回车等待安装完成: 安装完成后出现如图相关信息,表示安装成功. 2.测试连接 import ...

  9. 通过JDBC进行简单的增删改查(以MySQL为例) 目录

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

随机推荐

  1. Unity网游开发生存指南—蒸汽之城

    Posted by amy on 2013.03.07 文 / 王楠(梦加网络 游戏制作人) 前段时间关于Unity是否适合国内手游/网游创业团队的讨论非常火爆,本文从<蒸汽之城>的开发历 ...

  2. Linux——解决RedHat6/CentOS6系统中“弹出界面eth0:设备似乎不存在”的问题

    刚刚在自己的CentOS6系统中执行service network restart时,竟然提示: 弹出界面 eth0: 设备 似乎不存在, 初始化操作将被延迟.   [失败] 这事可真神奇.于是手动编 ...

  3. Python——标准库 Sys模块

    ---------------------------------------------------------------------------------------------------- ...

  4. leetcode第一刷_Sudoku Solver

    这道题简直是耻辱啊.竟然被吓得不敢做,最终開始写还犯下了各种低级错误,花了好久的时间. 事实上假设想明确81*9事实上是非常小的规模的话,早就想到用回溯法了,这不是跟八皇后全然一样的嘛.每次填入的时候 ...

  5. python——list访问问题

    rect.append({'bbox':[(int(rect1), int(rect2)), (int(rect3), int(rect4))]}) 应这样访问 rect[0]['bbox'][0][ ...

  6. SurfaceView的经典写法

    package com.example.test; import android.content.Context; import android.graphics.Canvas; import and ...

  7. 利用pandas进行数据分析之一:pandas数据结构Series

    Series是一种类似于一维数组的对象,又一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即是索引)组成. 可以将Series看成是一个定长的有序字段,因为它是索引值到数据值的一个映射. ...

  8. 自己动手开发更好用的markdown编辑器-05(粘贴上传图片)

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/04/28/hexomd-05/   文章目录 1. 七牛云存储 1.1. 系统 ...

  9. Windows Mobile X图标如何销毁窗体而非隐藏

    在Windows Mobile窗体上,有“OK”和“X”两种形式按钮.1.在Form的属性里,设置“MinimizeBox=false”,则窗体显示”OK”,点击该按钮窗体销毁并退出.2.设置“Min ...

  10. 170. Two Sum III - Data structure design【easy】

    170. Two Sum III - Data structure design[easy] Design and implement a TwoSum class. It should suppor ...