记录-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基本操 ...
随机推荐
- js 值和类型
js中变量是没有类型的,只有值才有类型. 变量随时可以持有任何类型的值. <!DOCTYPE html> <html lang="zh"> <head ...
- css3组件实战--绚丽效果篇
代码地址如下:http://www.demodashi.com/demo/11656.html 一.3D风景动态骰子 在线演示 1.css3D.动画基础知识预备 2.创建一个3D场景 先放置一个.bo ...
- android-seekbar的thumb图片不居中显示的处理办法
seekbar更换图片后,发现thumb的图片不会居中(竖直方向)显示了,代码如下: <SeekBar android:id="@+id/wb_seekbar" androi ...
- php中的可变变量、可变函数、匿名函数
1.可变变量 简而言之:获取一个普通变量的值作为这个可变变量的变量名. 如: $a = "hello"; $$a = " world"; /* $a 的值为&q ...
- 安装SDK后打开安卓project后有例如以下错误:发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。
Error: Error parsing D:\Program Files\SDK\android-sdk-windows\system-images\android-22\android-wear\ ...
- 在iis6里使用没有扩展名的mvc
这2天mvc第二个预览终于出来了.赶紧拿过来测试.在装了3.5的虚拟主机上运行正常.应该已经可以到能正常使用的阶段了.不过我前面一篇翻译的文章中说到,如果使用的是iis6的话就只能忍气吞声的使用带扩展 ...
- chrome 非安全模式解决开发跨域问题
这个参数可以降低chrome浏览器的安全性,禁用同源策略,利于开发人员本地调试. ps:如果是mac用户(记得 Command + Q 关闭chrome): open -a Google\ Chro ...
- linux中的dd复制命令
dd命令用于复制文件并对原文件的内容进行转换和格式化处理.dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果.用的比较多的还是用dd来备份裸设备.但是不推荐,如果需要 ...
- jquery,js,checkbox多选框复选框取值和赋值
今天一个同事不太会多选框的取值和赋值的问题,我帮他解决了一下,不想自己想的朋友可以参考一下. 获取checkBox的值,checkBox的html如下 <input type=" na ...
- 75. Find Peak Element 【medium】
75. Find Peak Element [medium] There is an integer array which has the following features: The numbe ...