记录-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基本操 ...
随机推荐
- Unity3D研究院之脚本生成Android Google Project
一般安卓自动化打包直接会生成个APK出来,但是我不想生成APK,我想生成Eclipse项目. 然后在自动化完成后面的打包工作. 1 2 3 4 5 6 7 8 9 10 11 using Un ...
- Unity Shader 效果学习
Unity上对于图像的处理,假设单纯使用代码.那么非常遗憾,程序基本会跑死,毕竟是直接对像素的操作,读取写入都是比較耗费CPU和内存的. 所以.这次由于项目须要想实现类似哈哈镜的效果.想来想去,还是认 ...
- linux crontab执行python脚本问题
在工作中我们经常会写一个python脚本,然后想通过定时任务去执行,这时我们会想到crontab. 通过 crontab -e去设置crontab 例如:0 0 * * ...
- 《深入理解Nginx:模块开发与架构解析》(一)
第1章 研究 Nginx 前的准备工作 1.1 Nginx 是什么 Web 服务器的基本功能:基于 REST 架构风格,以统一资源描述符(URI)或者统一资源定位符(URL),作为沟通依据,通过 HT ...
- WP8滑动条(Slider)控件的使用
1. <Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinit ...
- 使用CSS3实现响应式标题全屏居中和站点前端性能
要实现标题全屏居中(同一时候在垂直和水平方向居中).有若干种方法,包含使用弹性布局.表格单元.绝对定位和自己主动外边距等. 全屏居中 当中眼下比較流行也比較easy理解的方法是使用绝对定位+偏移实现. ...
- PHP 7安装使用体验,升级PHP要谨慎
一.发挥PHP 7高性能的几个要点 PHP 7相对于之前的PHP版本来说可以说性能有了质的飞跃,但是所谓“好马配好鞍,好车配风帆”,想要发挥PHP 7的性能优势,还需要从以下几个方面做准备:(此部分引 ...
- iOS 音频开发
音频基础知识 组成 音频文件的组成:文件格式(或者音频容器) + 数据格式(或者音频编码). 文件格式(或音频容器)是用于形容文件本身的格式. 我们可以通过多种不同的方法为真正的音频数据编码.例如 ...
- js中级四: 跨域
原文链接:http://www.cnblogs.com/scottckt/archive/2011/11/12/2246531.html 什么是跨域? 首先什么是跨域,简单地理解就是因为JavaScr ...
- tomcat各目录下的作用
1.tomcat的主目录下的文件 bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令). 重要: 很多环 ...