使用maven搭建Hibernate框架(web项目)

 create table USERS
(
ID NUMBER not null primary key,
NAME VARCHAR2(50),
PASSWORD VARCHAR2(50),
TELEPHONE VARCHAR2(15),
USERNAME VARCHAR2(50),
ISADMIN VARCHAR2(5)
);
create table DISTRICT
(
ID NUMBER not null primary key,
NAME VARCHAR2(50) not null
);
create table HOUSE
(
ID NUMBER,
USER_ID NUMBER,
TYPE_ID NUMBER,
TITLE NVARCHAR2(50),
DESCRIPTION NVARCHAR2(2000),
PRICE NUMBER,
PUBDATE DATE,
FLOORAGE NUMBER,
CONTACT VARCHAR2(100),
STREET_ID NUMBER
); create table STREET
(
ID NUMBER not null primary key,
NAME VARCHAR2(50),
DISTRICT_ID NUMBER
);
create table TYPE
(
ID NUMBER not null primary key,
NAME VARCHAR2(12) not null
);
--主外键关系
ALTER TABLE HOUSE ADD CONSTRAINT fk_HOUSE_STREET FOREIGN KEY(STREET_ID) REFERENCES STREET (ID);
ALTER TABLE HOUSE ADD CONSTRAINT fk_HOUSE_TYPE FOREIGN KEY(TYPE_ID) REFERENCES TYPE (ID);
ALTER TABLE HOUSE ADD CONSTRAINT fk_HOUSE_USERS FOREIGN KEY(USER_ID) REFERENCES USERS (ID) ;
ALTER TABLE STREET ADD CONSTRAINT fk_DISTRICT_STREET FOREIGN KEY(DISTRICT_ID) REFERENCES DISTRICT(ID);
--DISTRICT
insert into DISTRICT (ID, NAME)
values (1001, '东城');
insert into DISTRICT (ID, NAME)
values (1002, '西城');
insert into DISTRICT (ID, NAME)
values (1003, '石景山');
insert into DISTRICT (ID, NAME)
values (1006, '朝阳');
insert into DISTRICT (ID, NAME)
values (1000, '丰台');
insert into DISTRICT (ID, NAME)
values (1004, '海淀');
commit;
--STREET
insert into STREET (ID, NAME, DISTRICT_ID)
values (1000, '知春路', 1004);
insert into STREET (ID, NAME, DISTRICT_ID)
values (1001, '中关村大街', 1004);
insert into STREET (ID, NAME, DISTRICT_ID)
values (1002, '学院路', 1004);
insert into STREET (ID, NAME, DISTRICT_ID)
values (1003, '朝阳路', 1006);
commit;
--USERS
INSERT INTO USERS(ID,NAME,PASSWORD,TELEPHONE,USERNAME,ISADMIN) VALUES(1001,'zhangsan','','','张三','是');
INSERT INTO USERS(ID,NAME,PASSWORD,TELEPHONE,USERNAME,ISADMIN) VALUES(1002,'lisi','','','李四','否');
INSERT INTO USERS(ID,NAME,PASSWORD,TELEPHONE,USERNAME,ISADMIN) VALUES(1003,'wangxin','','','王鑫','是');
INSERT INTO USERS(ID,NAME,PASSWORD,TELEPHONE,USERNAME,ISADMIN) VALUES(1004,'zhangjian','','','张建','否');
INSERT INTO USERS(ID,NAME,PASSWORD,TELEPHONE,USERNAME,ISADMIN) VALUES(1005,'lijian','','','李健','是');
INSERT INTO USERS(ID,NAME,PASSWORD,TELEPHONE,USERNAME,ISADMIN) VALUES(1006,'jiangyiran','','','蒋以然','否');
INSERT INTO USERS(ID,NAME,PASSWORD,TELEPHONE,USERNAME,ISADMIN) VALUES(1007,'wangxiaochao','','','王晓超','否');
INSERT INTO USERS(ID,NAME,PASSWORD,TELEPHONE,USERNAME,ISADMIN) VALUES(1008,'zhangdongxue','','','张冬雪','否');
INSERT INTO USERS(ID,NAME,PASSWORD,TELEPHONE,USERNAME,ISADMIN) VALUES(1009,'sunpeng','','','孙鹏');
INSERT INTO USERS(ID,NAME,PASSWORD,TELEPHONE,USERNAME,ISADMIN) VALUES(1010,'jianglianchang','','','蒋连昌','否');
commit;
--TYPE
insert into TYPE (ID, NAME)
values (1000, '一室一厅');
insert into TYPE (ID, NAME)
values (1001, '一室两厅');
insert into TYPE (ID, NAME)
values (1002, '两室一厅');
insert into TYPE (ID, NAME)
values (1003, '两室两厅');
insert into TYPE (ID, NAME)
values (1004, '三室一厅');
insert into TYPE (ID, NAME)
values (1005, '三室两厅');
insert into TYPE (ID, NAME)
values (1006, '四室一厅');
insert into TYPE (ID, NAME)
values (1007, '四室两厅');
insert into TYPE (ID, NAME)
values (1008, '四十三厅');
commit;
--HOUSE
INSERT INTO HOUSE(ID,USER_ID,TYPE_ID,TITLE,DESCRIPTION,PRICE,PUBDATE,FLOORAGE,CONTACT,STREET_ID)
VALUES(1,1001,1002,'中关村','中关村一条街',2600,to_date('2014-02-14','yyyy-mm-dd'),100,'张三',1000);
INSERT INTO HOUSE(ID,USER_ID,TYPE_ID,TITLE,DESCRIPTION,PRICE,PUBDATE,FLOORAGE,CONTACT,STREET_ID)
VALUES(2,1002,1003,'苏州街','苏州街一条街',3600,to_date('2009-1-3','yyyy-mm-dd'),100,'李四',1001);
INSERT INTO HOUSE(ID,USER_ID,TYPE_ID,TITLE,DESCRIPTION,PRICE,PUBDATE,FLOORAGE,CONTACT,STREET_ID)
VALUES(3,1003,1004,'万泉庄','万泉庄一条街',4600,to_date('2009-1-4','yyyy-mm-dd'),130,'王鑫',1002);
INSERT INTO HOUSE(ID,USER_ID,TYPE_ID,TITLE,DESCRIPTION,PRICE,PUBDATE,FLOORAGE,CONTACT,STREET_ID)
VALUES(1,1003,1002,'万泉庄附近','万泉庄附近一条街',1500,to_date('2009-7-2','yyyy-mm-dd'),125,'张建',1003);
INSERT INTO HOUSE(ID,USER_ID,TYPE_ID,TITLE,DESCRIPTION,PRICE,PUBDATE,FLOORAGE,CONTACT,STREET_ID)
VALUES(1,1005,1002,'东单','东单很多美食',2700,to_date('2009-9-2','yyyy-mm-dd'),140,'蒋以然',1001);
INSERT INTO HOUSE(ID,USER_ID,TYPE_ID,TITLE,DESCRIPTION,PRICE,PUBDATE,FLOORAGE,CONTACT,STREET_ID)
VALUES(3,1001,1002,'中关村','中关村电脑城',2600,to_date('2009-4-1','yyyy-mm-dd'),137,'王晓超',1003);
INSERT INTO HOUSE(ID,USER_ID,TYPE_ID,TITLE,DESCRIPTION,PRICE,PUBDATE,FLOORAGE,CONTACT,STREET_ID)
VALUES(4,1004,1001,'东四','东四一条街',2000,to_date('2009-4-2','yyyy-mm-dd'),200,'王晓超',1002);
INSERT INTO HOUSE(ID,USER_ID,TYPE_ID,TITLE,DESCRIPTION,PRICE,PUBDATE,FLOORAGE,CONTACT,STREET_ID)
VALUES(5,1006,1003,'西四','西四一条街',3600,to_date('2009-1-2','yyyy-mm-dd'),210,'张冬雪',1003);
INSERT INTO HOUSE(ID,USER_ID,TYPE_ID,TITLE,DESCRIPTION,PRICE,PUBDATE,FLOORAGE,CONTACT,STREET_ID)
VALUES(5,1007,1002,'西单','西单购物城',3600,to_date('2009-4-2','yyyy-mm-dd'),240,'孙鹏',1001);
INSERT INTO HOUSE(ID,USER_ID,TYPE_ID,TITLE,DESCRIPTION,PRICE,PUBDATE,FLOORAGE,CONTACT,STREET_ID)
VALUES(6,1002,1002,'苏州街','苏州街美食',2600,to_date('2009-2-2','yyyy-mm-dd'),260,'蒋连昌',1000);
commit;

create.sql

第一步:打开idea

第二步:创建maven项目

第三步:创建项目名称

第四步:创建完成之后,选中src点击右键选择Directory创建java文件夹

第五步:选中java点击右键,选中 Mark Diectory as 选择Sources Root

第六步:选中main点击右键Directory创建resources文件夹

第七步:选中resources点击右键,选中 Mark Diectory as 选择Sources Root

第八步:点击 File — Project Structure —Facets,点击 "+" 选中hibernate

第九步:IDEA连接Oracle数据

 <?xml version="1.0" encoding="UTF-8"?>

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.bdqn</groupId>
<artifactId>Hid03</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging> <name>Hid03 Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.0.0.Final</version>
</dependency> <dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>10.2.0.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency> <dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.3</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.5</version>
</dependency>
</dependencies> </project>

pom.xml

 <?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property> <!--Oracle 数据驱动-->
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property> <!--数据库路径-->
<property name="connection.username">OT</property>
<property name="connection.password">1234</property>
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property><!--数据库方言-->
<property name="show_sql">true</property><!--生成的sql语句-->
<property name="format_sql">true</property><!--sql格式化-->
<mapping resource="mapping/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

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>
<class name="com.bdqn.entity.Users" table="Users">
<id name="id" type="java.lang.Integer" column="id">
<generator class="increment"/>
</id>
<property name="name" type="java.lang.String" column="NAME"/>
<property name="password" type="java.lang.String" column="PASSWORD"/>
<property name="telephone" type="java.lang.String" column="TELEPHONE"/>
<property name="username" type="java.lang.String" column="USERNAME"/>
<property name="isadmin" type="java.lang.String" column="ISADMIN"/> </class>
</hibernate-mapping>

User.hbm.xml

dao层

 package com.bdqn.dao;

 import com.bdqn.entity.Users;
import com.bdqn.page.Page;
import java.util.List; public interface UserDao {
/**
* 1.根据用户名和密码查询
*
* @param sname
* @param password
* @return
*/
Users findByNameAndPwd(String sname, String password); /**
* 2.延时加载:查询所有
*
* @return
*/
List<Users> findAll(); /**
* 3.保存
*
* @param stu
* @return
*/
int save(Users stu); /**
* 4.根据主键id查询单条
*
* @param sid
* @return
*/
Users findById(Integer sid); /**
* 5.修改
*/
int update(Users stu); /**
* 6.删除对象
*
* @param stu
* @return
*/
int delete(Users stu); /**
* 7.分页查询
*/
List<Users> findPage(Page page); /**
* 8.查询总条数
*/
int getTotalCount();
}

UserDao

 package com.bdqn.dao.impl;

 import com.bdqn.dao.UserDao;
import com.bdqn.entity.Users;
import com.bdqn.page.Page;
import com.bdqn.util.Hibernate_Util;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import java.util.List; public class UserDaoImpl implements UserDao {
/**
* 1.查询所有:立即加载
*/
public List<Users> findAll() {
//1.获取session对象
Session session = Hibernate_Util.getSession();
//2.定义hql语句
String hql = "from Users";
//3.Session创建Query对象
Query query = session.createQuery(hql);
//4.query对象执行操作
List<Users> it = query.list();
//5.释放资源
Hibernate_Util.closeSession();
return it;
} /**
* 2.根据用户名和密码查询
*/
public Users findByNameAndPwd(String sname, String password) {
//1.获取session对象
Session session = Hibernate_Util.getSession();
//2.定义hql语句(命名参数)
String hql = "from Users where name=:name and password=:password";
//3.Session创建Query对象
Query query = session.createQuery(hql);
//4.query对象给占位符赋值
/*query.setString("sname", sname);
query.setString("password", password);*/
query.setParameter("name", sname);
query.setParameter("password", password); //query.setProperties(user);
//5.执行操作(uniqueResult()查询的单行数据)
Users stu = (Users) query.uniqueResult();
//6.释放资源
Hibernate_Util.closeSession();
return stu; } /**
* 根据id主键查询单条
*/
public Users findById(Integer sid) {
//1.获取session对象
Session session = Hibernate_Util.getSession();
//2.利用session根据主键查询
Users stu = (Users) session.get(Users.class, sid);
/*3.
* 因为在修改时要提前查询单条,和session关联已经变成持久化对象,
* 而在修改时session执行update方法时,
* 首先会查询该主键id是否存在,
* 如果存在,则根据主键id修改该对象,此时对象已经处于持久化对象,
* 而实际session中不能同时存在两个主键id相同的对象,
* 否则会出现如下错误:
* org.hibernate.NonUniqueObjectException:
* a different object with the same identifier
* value was already associated with the
* session: [com.entity.Student#1]
*/
Hibernate_Util.closeSession();
// session.clear();
return stu;
} /**
* 删除对象
*/
public int delete(Users stu) {
int num = 1;
//1.获取session对象
Session session = Hibernate_Util.getSession(); try {
//session删除操作
session.delete(stu);
session.beginTransaction().commit();
} catch (HibernateException e) {
num = 0;
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
//5.释放资源
Hibernate_Util.closeSession();
} return num;
} /**
* 添加
*/
public int save(Users stu) {
int num = 1;
//1.获取session对象
Session session = Hibernate_Util.getSession();
//执行操作
try {
session.save(stu);
session.beginTransaction().commit();
} catch (HibernateException e) {
num = 0;
e.printStackTrace();
} finally {
//5.释放资源
Hibernate_Util.closeSession();
}
return num;
} /**
* 修改
*/
public int update(Users stu) {
int num = 1;
//1.获取session对象
Session session = Hibernate_Util.getSession();
try {
//执行操作
//该对象的主键id必须存在
session.update(stu);
session.beginTransaction().commit();
} catch (HibernateException e) {
num = 0;
e.printStackTrace();
} finally {
//5.释放资源
Hibernate_Util.closeSession();
}
return num;
} /**
* 7.分页查询
*/
public List<Users> findPage(Page page) {
//1.获取session
Session session = Hibernate_Util.getSession(); //2.定义查询最大记录数的hql
String hql = "from Users "; //3.定义查询最大记录数的Query对象
Query querypage = session.createQuery(hql); //4.查询最大记录数的数据
querypage.setMaxResults(page.getPagesize()); //5.确定查询起点
querypage.setFirstResult(page.getStartrow()); //6.分页查询
List<Users> list = querypage.list(); //7.关闭session
Hibernate_Util.closeSession(); return list;
} /**
* 8.查询总条数
*/
public int getTotalCount() {
//1.获取session
Session session = Hibernate_Util.getSession(); //2.定义查询总条数hql语句
String hqlcount = "select count(*) from Users "; //3.利用Session创建Query对象
Query querycount = session.createQuery(hqlcount); //4.获取总条数(返回单行数据uniqueResult())
Integer totalCount = Integer.parseInt(querycount.uniqueResult().toString());
//5.释放资源
Hibernate_Util.closeSession();
return totalCount;
}
}

UserDaoImpl

page层

 package com.bdqn.page;

 public class Page {
private Integer pagesize; //页面大小
private Integer pageno; //当前页
private Integer startrow; //起始行
private Integer totalpage; //总页数
private Integer totalcount; //总条数 public Page() {
} public Page(Integer pageSize, Integer pageNo, Integer totalCount) {
this.pagesize = pageSize; //页面大小
this.pageno = pageNo; //当前页
this.totalcount = totalCount; //计算总条数
this.setStartrow(pageNo, pageSize); //计算起始行
this.setTotalpage(totalCount, pageSize); //计算总页数
} public Integer getPagesize() {
return pagesize;
} public void setPagesize(Integer pageSize) {
this.pagesize = pageSize;
} public Integer getPageno() {
return pageno;
} public void setPageno(Integer pageNo) {
this.pageno = pageNo;
} public Integer getStartrow() {
return startrow;
} /**
* 计算起始行
*
* @param pageNo
* @param pageSize
*/
public void setStartrow(Integer pageNo, Integer pageSize) {
this.startrow = (pageNo - 1) * pageSize;
} public Integer getTotalpage() {
return totalpage;
} /**
* 计算总页数
*
* @param totalCount
* @param pageSize
*/
public void setTotalpage(Integer totalCount, Integer pageSize) {
this.totalpage = totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
} public Integer getTotalcount() {
return totalcount;
} public void setTotalCount(Integer totalCount) {
this.totalcount = totalCount;
} @Override
public String toString() {
return "[{\"pageno\":" + pageno + ",\"pagesize\":" + pagesize
+ ",\"startrow\":" + startrow + ",\"totalcount\":" + totalcount
+ ",\"totalpage\":" + totalpage + "}]";
}
}

Page

service层

 package com.bdqn.service;

 import com.bdqn.entity.Users;
import com.bdqn.page.Page; import java.util.List; public interface UserService {
/**
* 1.登录的业务
*
* @param sname
* @param password
* @return
*/
Users login(String sname, String password); /**
* 2.注册
*
* @param stu
* @return
*/
int register(Users stu); /**
* 3.查询所有
*/
List<Users> findAll(); /**
* 4.根据主键id查询
*
* @param sid
* @return
*/
Users findById(Integer sid); /**
* 5.修改
*/
int update(Users stu); /**
* 6.删除
*/
int delete(Users stu); /**
* 7.分页查询
*/
List<Users> findPage(Page page); /**
* 8.查询总条数
*/
int getTotalCount(); }

UserService

 package com.bdqn.service.impl;

 import com.bdqn.dao.UserDao;
import com.bdqn.dao.impl.UserDaoImpl;
import com.bdqn.entity.Users;
import com.bdqn.page.Page;
import com.bdqn.service.UserService; import java.util.List; public class UserServiceImpl implements UserService {
/**
* 使用多态引用数据访问层对象
*/
private UserDao dao = new UserDaoImpl(); /**
* 登录
*/
public Users login(String sname, String password) {
return dao.findByNameAndPwd(sname, password);
} public int delete(Users stu) {
// TODO Auto-generated method stub
return dao.delete(stu);
} public List<Users> findAll() {
// TODO Auto-generated method stub
return dao.findAll();
} public Users findById(Integer sid) {
// TODO Auto-generated method stub
return dao.findById(sid);
} public int register(Users stu) {
// TODO Auto-generated method stub
return dao.save(stu);
} public int update(Users stu) {
// TODO Auto-generated method stub
return dao.update(stu);
} public List<Users> findPage(Page page) {
// TODO Auto-generated method stub
return dao.findPage(page);
} public int getTotalCount() {
// TODO Auto-generated method stub
return dao.getTotalCount();
} }

UserServiceImpl

servlet层

实现删除功能

 package com.bdqn.servlet;

 import com.bdqn.entity.Users;
import com.bdqn.service.UserService;
import com.bdqn.service.impl.UserServiceImpl; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; public class DeleteSerlvet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8"); // 2.接受参数
Integer sid=Integer.valueOf(request.getParameter("id"));
// 3.业务处理
UserService service = new UserServiceImpl();
Users stu=service.findById(sid);
if (stu != null) {
System.out.println("根据id查询成功");
int num=service.delete(stu);
if(num>0){
System.out.println("delete success!!");
// 4.页面跳转
response.sendRedirect("FindAllServlet"); }else{
System.out.println("delete success!!"); }
} else {
System.out.println("根据id查询失败!"); } } }

DeleteSerlvet

实现统计总记录数功能

 package com.bdqn.servlet;

 import com.bdqn.entity.Users;
import com.bdqn.page.Page;
import com.bdqn.service.UserService;
import com.bdqn.service.impl.UserServiceImpl; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List; public class FindAllServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8"); /**
* ☆
* 在使用ajax往前台通过输出流对象的print方法发送json时
* 该行获取输出流对象的代码必须放在
* response.setContentType("text/html;charset=UTF-8");
* 之后,否则ajax回调时,页面拿到的中文数据就永远都是乱码,
* 原因是:如果将改行代码写在处理客户端乱码之前,表示编码格式已经确定,
* 所以,编码格式的处理应该放在获取PrintWriter对象之前
*
*/
PrintWriter out = response.getWriter(); // 2.接受参数
String no = request.getParameter("pageNo"); // 3.业务处理
UserService service = new UserServiceImpl(); int pageSize = 3; //页面大小
int pageNo = 1; //默认的pageNo为1
if (no != null && no != "") {
pageNo = Integer.valueOf(no);
}
//获取总条数
int totalCount = service.getTotalCount();
Page page = new Page(pageSize, pageNo, totalCount); List<Users> list = service.findPage(page);
if (list != null) {
System.out.println("find All page success");
request.setAttribute("list", list);
request.setAttribute("page", page);
request.getRequestDispatcher("index.jsp").forward(request, response);
} else {
System.out.println("find All page fail!"); } }
}

FindAllServlet

实现根据条件查询功能

 package com.bdqn.servlet;

 import com.bdqn.entity.Users;
import com.bdqn.service.UserService;
import com.bdqn.service.impl.UserServiceImpl; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; public class FindByIdSerlvet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8"); // 2.接受参数
Integer sid=Integer.valueOf(request.getParameter("id")); // 3.业务处理
UserService service = new UserServiceImpl(); Users stu=service.findById(sid);
System.out.println("stu:"+stu);
if(stu!=null){
System.out.println("根据id查询到对象");
request.setAttribute("stu", stu);
request.getRequestDispatcher("update.jsp").forward(request, response);
}else{
System.out.println("没有根据id查询到对象");
} }
}

FindByIdSerlvet

实现分页功能

 package com.bdqn.servlet;

 import com.bdqn.entity.Users;
import com.bdqn.page.Page;
import com.bdqn.service.UserService;
import com.bdqn.service.impl.UserServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List; public class FindPageServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
/**
* ☆
* 在使用ajax往前台通过输出流对象的print方法发送json时
* 该行获取输出流对象的代码必须放在
* response.setContentType("text/html;charset=UTF-8");
* 之后,否则ajax回调时,页面拿到的中文数据就永远都是乱码,
* 原因是:如果将改行代码写在处理客户端乱码之前,表示编码格式已经确定,
* 所以,编码格式的处理应该放在获取PrintWriter对象之前
*
*/
PrintWriter out=response.getWriter(); // 2.接受参数
String no=request.getParameter("pageNo"); // 3.业务处理
UserService service = new UserServiceImpl(); int pageSize=3; //页面大小
int pageNo=1; //默认的pageNo为1
if(no!=null && no!=""){
pageNo=Integer.valueOf(no);
}
//获取总条数
int totalCount=service.getTotalCount();
//封装分页所需字段
Page page=new Page(pageSize, pageNo, totalCount);
//分页查询
List<Users> list = service.findPage(page); ObjectMapper om=new ObjectMapper();
String str=om.writeValueAsString(list);
String pagestr=om.writeValueAsString(page);
str="{\"page\":"+pagestr+",\"list\":"+str+"}";
System.out.println(str); out.print(str); }
}

FindPageServlet

实现登录功能

 package com.bdqn.servlet;

 import com.bdqn.entity.Users;
import com.bdqn.service.UserService;
import com.bdqn.service.impl.UserServiceImpl; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8"); //2.接受参数
String name = request.getParameter("name");
String password = request.getParameter("password");
//3.业务处理
UserService service = new UserServiceImpl();
Users stu = service.login(name, password);
if (stu != null) {
System.out.println("login success!");
//4.页面跳转
request.getSession().setAttribute("name", name);
response.sendRedirect("FindAllServlet");
} else {
System.out.println("login fail!"); } }
}

LoginServlet

实现添加功能

 package com.bdqn.servlet;

 import com.bdqn.entity.Users;
import com.bdqn.service.UserService;
import com.bdqn.service.impl.UserServiceImpl; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; public class RegisterServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8"); // 2.接受参数 String name = request.getParameter("name");
String password = request.getParameter("password");
String telephone = request.getParameter("telephone");
String username = request.getParameter("username");
String isadmin = request.getParameter("isadmin"); Users stu = new Users(name, password, telephone, username,isadmin); // 3.业务处理
UserService service = new UserServiceImpl();
int num = service.register(stu);
if (num > 0) {
System.out.println("register success!");
response.sendRedirect("FindAllServlet");
} else {
System.out.println("register fail!"); } }
}

RegisterServlet

实现修改功能

 package com.bdqn.servlet;

 import com.bdqn.entity.Users;
import com.bdqn.service.UserService;
import com.bdqn.service.impl.UserServiceImpl; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; public class UpdateServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8"); // 2.接受参数
Integer id = Integer.valueOf(request.getParameter("id"));
String name = request.getParameter("name");
String password = request.getParameter("password");
String telephone = request.getParameter("telephone");
String username = request.getParameter("username");
String isadmin = request.getParameter("isadmin");
Users stu = new Users(id,name, password, telephone, username,isadmin); // 3.业务处理
UserService service = new UserServiceImpl();
int num=service.update(stu);
if(num>0){
System.out.println("update success!");
response.sendRedirect("FindAllServlet");
}else{
System.out.println("update fail!"); } }
}

UpdateServlet

Util层

Hibernate封装类

 package com.bdqn.util;

 import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class Hibernate_Util {
private static ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = null;
private static SessionFactory sessionFactory = null; static { try {
configuration = new Configuration().configure("/hibernate.cfg.xml");
sessionFactory = configuration.buildSessionFactory();
} catch (HibernateException e) {
System.out.println("解析xml和创建Session工厂error");
e.printStackTrace();
} } public static Session getSession() {
Session session = threadLocal.get();
if (session == null) {
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
} public static void closeSession() {
Session session = threadLocal.get();
if (session != null) {
threadLocal.set(null);
session.close();
}
}
}

Hibernate_Util

JSP

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="js/ajaxindex.js"></script>
</head> <body>
<CENTER> <table></table>
<div>
第<span id="pageNo"></span>/<span id="totalPage"></span>页 &nbsp;&nbsp;
<a href="javascript:void(0);" class="apage">首页</a> &nbsp;&nbsp;
<a href="javascript:void(0);" class="apage">上一页</a> &nbsp;&nbsp;
<a href="javascript:void(0);" class="apage">下一页</a> &nbsp;&nbsp;
<a href="javascript:void(0);" class="apage">末页</a>&nbsp;&nbsp;
共<span id="totalCount"></span>条
</div> </CENTER> </body>
</html> ajaxindex.jsp

ajaxindex.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<CENTER>
<table border="1px" width="60%">
<tr>
<td colspan="6">
<a href="register.jsp">注册</a>
</td>
</tr>
<tr>
<td>
用户编号
</td>
<td>
用户名
</td>
<td>
密码
</td>
<td>
电话
</td>
<td>
姓名
</td>
<td>
操作
</td>
</tr> <c:forEach var="i" items="${list}">
<tr>
<td>
${i.id }
</td>
<td>
${i.name }
</td>
<td>
${i.password }
</td>
<td>
${i.telephone }
</td> <td>
${i.username }
</td>
<td>
<a href="FindByIdSerlvet?id=${i.id}">修改</a>
&nbsp;&nbsp;
<a href="DeleteSerlvet?id=${i.id}">删除</a> </td>
</tr>
</c:forEach> </table>
<div> 第${page.pageno}/${page.totalpage}页 &nbsp;&nbsp;
<a href="FindAllServlet?pageNo=1">首页</a>
<c:choose>
<c:when test="${page.pageno gt 1}">
<a href="FindAllServlet?pageNo=${page.pageno-1 }">上一页</a>
</c:when>
<c:otherwise>
<a href="javascript:alert('已经是第一页了,没有上一页!');">上一页</a>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${page.pageno lt page.totalpage}">
<a href="FindAllServlet?pageNo=${page.pageno+1 }">下一页</a>
</c:when>
<c:otherwise>
<a href="javascript:alert('已经是最有一页了,没有下一页!');">下一页</a>
</c:otherwise>
</c:choose> <a href="FindAllServlet?pageNo=${page.totalpage}">末页</a>
&nbsp;&nbsp;
共${page.totalcount}条 </div> </CENTER> </body>
</html>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<center>
<fieldset style="width: 300px;">
<legend>
登录
</legend>
<form action="LoginServlet" method="post">
<table>
<tr>
<td>
用户名:
</td>
<td>
<input type="text" name="name" />
</td>
</tr>
<tr>
<td>
密码:
</td>
<td>
<input type="password" name="password" />
</td>
</tr>
<tr>
<td>
<input type="submit" value="提交" />
</td>
<td>
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form>
</fieldset>
</center>
</body>
</html>

long.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<center>
<fieldset style="width: 300px;">
<legend>
注册
</legend>
<form action="RegisterServlet" method="post">
<table>
<tr>
<td>
用户名:
</td>
<td>
<input type="text" name="name"/>
</td>
</tr>
<tr>
<td>
密码:
</td>
<td>
<input type="password" name="password"/>
</td>
</tr>
<tr>
<td>
电话:
</td>
<td>
<input type="text" name="telephone"/>
</td>
</tr>
<tr>
<td>
姓名:
</td>
<td>
<input type="text" name="username"/>
</td>
</tr>
<tr>
<td>
<input type="submit" value="修改"/>
</td>
<td>
<input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>
</fieldset>
</center>
</body>
</html>

register.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<center>
<fieldset style="width: 300px;">
<legend>
<br>修改
</legend>
<form action="UpdateServlet?id=${stu.id}" method="post">
<table border="1px" width="60%">
<tr>
<td>
用户名:
</td>
<td>
<input type="text" name="name" value="${stu.name}"/>
</td>
</tr>
<tr>
<td>
密码:
</td>
<td>
<input type="password" name="password" value="${stu.password}"/>
</td>
</tr>
<tr>
<td>
电话:
</td>
<td>
<input type="text" name="telephone" value="${stu.telephone}"/>
</td>
</tr>
<tr>
<td>
姓名:
</td>
<td>
<input type="text" name="username" value="${stu.username}"/>
</td>
</tr> <tr>
<td>
<input type="submit" value="修改" />
</td>
<td>
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form>
</fieldset>
</center>
</body>
</html>

update.jsp

使用maven搭建Hibernate的更多相关文章

  1. 基于maven搭建hibernate运行环境

    准备案例需要的数据库表和测试数据 建表语句: create table DEPARTMENT ( DEPT_ID integer not null, DEPT_NAME ) not null, DEP ...

  2. 使用maven搭建hibernate的pom文件配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  3. 【maven + hibernate(注解) +spring +springMVC】 使用maven搭建项目

    研究,百度,查资料+好友帮助,使用MyEcplise2015工具,通过maven搭建hibernate+springMVC+spring的项目,数据库采用MySql5.5 不过使用的版本会在项目搭建过 ...

  4. Maven搭建SpringMVC+Hibernate项目详解 【转】

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  5. Maven搭建SpringMVC+Hibernate项目详解

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  6. Maven搭建SpringMVC+Hibernate项目详解(转)

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  7. Maven搭建struts2+spring+hibernate环境

    Maven搭建struts2+spring+hibernate环境(一) 本文简单的使用STS的自带的maven插件工具搭建ssh(struts2+spring+hibernate)开发环境,图文并茂 ...

  8. 搭建项目Maven+springMVC+hibernate时,JUnit測试出现报ClassNotFoundException错误的解决

    近期在搭建Maven+springMVC+hibernate项目,正常启动项目时一切正常.但JUNIT測试时出现报ClassNotFoundException错误,经过细致排查发现没有生成class文 ...

  9. Maven+Struts+Hibernate+Spring简单项目搭建

    这段时间学习如何使用Maven+Struts+Hibernate+Spring注解方式建立项目,在这里感谢孙宇老师.    第一次写博客,主要是方便自己查看,同时分享给大家,希望对大家有所帮助,我也是 ...

随机推荐

  1. 使用idea开发分布式项目中优化tomact的方法

    1. idea内存优化 找到idea安装目录,我的是在D:\IDEA\bin目录中 找到idea.exe.vmoptions和idea64.exe.vmoptions文件 这两个文件全部改成如下配置, ...

  2. Ruby 数据类型

    Ruby 数据类型 本章节我们将为大家介绍 Ruby 的基本数据类型. Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个 ...

  3. Go 动态类型声明

    Go 动态类型声明 package main import "fmt" func main() { var x float64 = 20.0 y := 42 fmt.Println ...

  4. 归并排序c语言

    void mergeAdd(int arr[], int left, int mid, int right, int *temp){ int i = left; ; int k = left;//临时 ...

  5. java带jar编译与运行

    javac -classpath ./wxpay-sdk-0.0.3.jar HttpsTest2.java java -cp .:./wxpay-sdk-0.0.3.jar HttpsTest2

  6. Java-Class-C:java.util.HashMap

    ylbtech-Java-Class-C:java.util.HashMap 1.返回顶部 1.1. import java.util.HashMap; import java.util.Map; 1 ...

  7. js实现下拉框

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 20130330 printf数组改变 数组指针便利二维数组 二级指针遍历二维数组 ZigZag

    1.为什么printf之后数组的值会改变? #include<stdio.h> ; int * Zigzag() { ,j=,limit=; ; ; int a[N][N]; int (* ...

  9. VO和DO的区别

    阿里巴巴Java开发手册中的DO.DTO.BO.AO.VO.POJO定义 分层领域模型规约: DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象. DTO( Da ...

  10. scrapy的使用-scrapy shell

    进入     该目录下执行scrapy shell 文件, 在命令行可执行该文件中链接的xpath语法,和BeautifulSoup语法.