记录-Hibernate+servlet实现简单的增、删、查、改
由于需要对Hibernate作个了解,所以写了个简单的实现
以上是大概目录
1.新建Hibernate.cfg.xml配置文件
- <?xml version='1.0' encoding='UTF-8'?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <!-- Generated by MyEclipse Hibernate Tools. -->
- <hibernate-configuration>
- <session-factory>
- <property name="connection.username">root</property>
- <property name="connection.url">
- jdbc:mysql://localhost:3306/hiber?characterEncoding=utf8
- </property>
- <property name="dialect">
- org.hibernate.dialect.MySQLDialect
- </property>
- <property name="myeclipse.connection.profile">
- mysqlJdbcDriver
- </property>
- <property name="connection.password">123456</property>
- <property name="connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <property name="show_sql">true</property>
- <property name="format_sql">true</property>
- <property name="hbm2ddl.auto">update</property>
- <mapping resource="/entity/User.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
2.修改web.xml 路径映射
- <?xml version="1.0" encoding="UTF-8"?>
- <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">
- <display-name>tHIbe</display-name>
- <servlet>
- <servlet-name>userServlet</servlet-name>
- <servlet-class>servlet.userServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>userServlet</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>default.html</welcome-file>
- <welcome-file>default.htm</welcome-file>
- <welcome-file>default.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
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<User> 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);
- }
- }
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();
- }
- }
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<User> select() {
- Session session = HibernateUtil.currentSession();
- //Transaction tx=session.beginTransaction();
- List<User> 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;
- }
- }
6.User实体类的映射文件User.hbm.xml,和数据的关联文件(需要在Hibernate.cfg.xml配置文件中引入)
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="entity">
- <class name="User" table="user">
- <id name="id" column="id">
- <generator class="identity"></generator>
- </id>
- <property name="name" column="name" unique="true"></property>
- <property name="pwd" column="pwd"></property>
- </class>
- </hibernate-mapping>
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;
- }
- }
8.jsp页面
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>主页</title>
- <script type="text/javascript">
- function dianji(){
- window.location.href='select.do'
- };
- function kill(){
- window.location.href='delete.do?name=${list.get(1).id}'
- }
- function ok(){
- var name=document.getElementById("newName").value;
- window.location.href='update.do?name='+name
- }
- </script>
- </head>
- <body>
- 欢迎你:${suser.name},你将走向最强王者之路<br/>
- 点击下方按钮:<br/>
- <input type="button" value="查询最强王者" onclick="dianji()"/><br/>
- 最强王者是:${list.get(1).name}<br/>
- 看我的<br/>
- <input type="button" value="kill you!" onclick="kill()"/>
- <p>${msg}</p>
- 你已成为最强王者请修改你的名称:<input type="text" name="name" id="newName" placeholder="请输入你的新昵称" /><input type="button" value="确定" onclick="ok()"/>
- </body>
- </html>
在项目遇到的问题有:
1.启动tomcat时 报无法启动的错误,错误可能在xml配置文件
2.xml配置的路径跳转不能跳转,同样的代码,重新建项目后又可以了,不知道什么原因
记录-Hibernate+servlet实现简单的增、删、查、改的更多相关文章
- WindowsForm 增 删 查 改
首先是连接数据库 在数据库里写代码 建立一个数据库下面是代码 create database JinXiaoCun go use JinXiaoCun go create table users ( ...
- MyBatis学习--简单的增删改查
jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...
- springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能
转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包 数据库表 数据库表就不用教大家了,一张表,很简 ...
- C#+Access 员工信息管理--简单的增删改查操作和.ini配置文件的读写操作。
1.本程序的使用的语言是C#,数据库是Access2003.主要是对员工信息进行简单的增删改查操作和对.ini配置文件的读写操作. 2.代码运行效果如下: 功能比较简单.其中在得到查询结果后,在查询结 ...
- 通过JDBC进行简单的增删改查
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
- 初试KONCKOUT+WEBAPI简单实现增删改查
初试KONCKOUT+WEBAPI简单实现增删改查 前言 konckout.js本人也是刚刚接触,也是初学,本文的目的是使用ko和asp.net mvc4 webapi来实现一个简单增删改查操作.Kn ...
- SpringMVC之简单的增删改查示例(SSM整合)
本篇文章主要介绍了SpringMVC之简单的增删改查示例(SSM整合),这个例子是基于SpringMVC+Spring+Mybatis实现的.有兴趣的可以了解一下. 虽然已经在做关于SpringMVC ...
- python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作
1.通过 pip 安装 pymysql 进入 cmd 输入 pip install pymysql 回车等待安装完成: 安装完成后出现如图相关信息,表示安装成功. 2.测试连接 import ...
- 通过JDBC进行简单的增删改查(以MySQL为例) 目录
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
随机推荐
- Unity网游开发生存指南—蒸汽之城
Posted by amy on 2013.03.07 文 / 王楠(梦加网络 游戏制作人) 前段时间关于Unity是否适合国内手游/网游创业团队的讨论非常火爆,本文从<蒸汽之城>的开发历 ...
- Linux——解决RedHat6/CentOS6系统中“弹出界面eth0:设备似乎不存在”的问题
刚刚在自己的CentOS6系统中执行service network restart时,竟然提示: 弹出界面 eth0: 设备 似乎不存在, 初始化操作将被延迟. [失败] 这事可真神奇.于是手动编 ...
- Python——标准库 Sys模块
---------------------------------------------------------------------------------------------------- ...
- leetcode第一刷_Sudoku Solver
这道题简直是耻辱啊.竟然被吓得不敢做,最终開始写还犯下了各种低级错误,花了好久的时间. 事实上假设想明确81*9事实上是非常小的规模的话,早就想到用回溯法了,这不是跟八皇后全然一样的嘛.每次填入的时候 ...
- python——list访问问题
rect.append({'bbox':[(int(rect1), int(rect2)), (int(rect3), int(rect4))]}) 应这样访问 rect[0]['bbox'][0][ ...
- SurfaceView的经典写法
package com.example.test; import android.content.Context; import android.graphics.Canvas; import and ...
- 利用pandas进行数据分析之一:pandas数据结构Series
Series是一种类似于一维数组的对象,又一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即是索引)组成. 可以将Series看成是一个定长的有序字段,因为它是索引值到数据值的一个映射. ...
- 自己动手开发更好用的markdown编辑器-05(粘贴上传图片)
这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/04/28/hexomd-05/ 文章目录 1. 七牛云存储 1.1. 系统 ...
- Windows Mobile X图标如何销毁窗体而非隐藏
在Windows Mobile窗体上,有“OK”和“X”两种形式按钮.1.在Form的属性里,设置“MinimizeBox=false”,则窗体显示”OK”,点击该按钮窗体销毁并退出.2.设置“Min ...
- 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 ...