Hibernate全套增删改查+分页

1.创建一个web工程

2.导入jar包

3.创建Student表

4.创建实体类

package com.entity;

public class Student {
    private Integer sid;
    private String sname;
    private String password;
    private String sex;
    private Integer cid;

    public Student() {
    }
    public Student(Integer sid, String sname, String password, String sex,
            Integer cid) {
        this.sid = sid;
        this.sname = sname;
        this.password = password;
        this.sex = sex;
        this.cid = cid;
    }
    public Student(String sname, String password, String sex,
            Integer cid) {
        this.sname = sname;
        this.password = password;
        this.sex = sex;
        this.cid = cid;
    }
    public Integer getSid() {
        return sid;
    }
    public void setSid(Integer sid) {
        this.sid = sid;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Integer getCid() {
        return cid;
    }
    public void setCid(Integer cid) {
        this.cid = cid;
    }
    @Override
    public String toString() {
        return "Student [cid=" + cid + ", password=" + password + ", sex="
                + sex + ", sid=" + sid + ", sname=" + sname + "]";
    }

}

5.配置映射文件

<?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>
    <!--1.实体类的字段和数据库的字段一一映射
        name:实体类的全名
        table:对应的数据库表名,默认值为类名
    -->
   <class name="com.entity.Student" table="STUDENT">

   <!--1.1主键配置
          id:对应表中的主键
          name:实体类中的属性名
       type:主键属性的数据类型
       column:属性名对应表的字段名,默认值为属性名-->
       <id name="sid" type="java.lang.Integer" column="SID">

             <!--generator:为持久化实例产生一个唯一标识-->
          <generator class="sequence">

              <!--数据库的序列名-->
            <param name="sequence">SEQ_STUDENT</param>
          </generator>
       </id>

       <!--1.2普通字段配置-->
       <property name="sname" type="java.lang.String" column="SNAME"/>
       <property name="password" type="java.lang.String" column="PASSWORD"/>
       <property name="sex" type="java.lang.String" column="SEX"/>
       <property name="cid" type="java.lang.Integer" column="CID"/>
   </class>
</hibernate-mapping>

6.配置主配置文件

<?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" >
<hibernate-configuration>

  <!--通常一个session-factory节点代表一个数据库-->
  <session-factory>
      <!--1.配置数据库的驱动-->
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

    <!--2.配置数据库的url地址-->
    <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>

    <!--3,配置数据库的username-->
    <property name="connection.username">holly</property>

       <!--4.配置数据库的密码-->
    <property name="connection.password">sys</property>

    <!--5.配置数据库的方言-->
    <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>

    <!--6.显示sql语句-->
    <property name="show_sql">true</property>

    <!--7.sql语句格式化-->
    <property name="format_sql">true</property>

    <!--8.加载映射文件-->
    <mapping resource="com/entity/Student.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

7.创建一个工具类

package com.util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 * Hibernate打开session和关闭session的工具包
 * @author Holly
 *
 */
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();
        }
    }

}

8.创建分页实体类

package com.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 + "}]";
    }

}

9.创建Dao类

package com.dao;

import java.util.List;

import com.entity.Student;
import com.page.Page;

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

}

10.实现Dao接口

package com.dao.impl;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

import com.dao.StudentDao;
import com.entity.Student;
import com.page.Page;
import com.util.Hibernate_Util;

public class StudentDaoImpl implements StudentDao{
    /**
     * 1.查询所有:立即加载
     */
    public List<Student> findAll() {
        //1.获取session对象
        Session session=Hibernate_Util.getSession();
        //2.定义hql语句
        String hql="from Student";
        //3.Session创建Query对象
        Query query=session.createQuery(hql);
        //4.query对象执行操作
        List<Student> it=query.list();
        //5.释放资源
        Hibernate_Util.closeSession();
        return it;
    }
    /**
     * 2.根据用户名和密码查询
     */
    public Student findByNameAndPwd(String sname, String password) {
        //1.获取session对象
        Session session=Hibernate_Util.getSession();
        //2.定义hql语句(命名参数)
        String hql="from Student where sname=:sname and password=:password";
        //3.Session创建Query对象
        Query query=session.createQuery(hql);
        //4.query对象给占位符赋值
        /*query.setString("sname", sname);
        query.setString("password", password);*/
        query.setParameter("sname", sname);
        query.setParameter("password", password);

//        query.setProperties(user);
        //5.执行操作(uniqueResult()查询的单行数据)
        Student stu=(Student) query.uniqueResult();
        //6.释放资源
        Hibernate_Util.closeSession();
        return stu;

    }

   /**
    * 根据id主键查询单条
    */
    public Student findById(Integer sid) {
        //1.获取session对象
        Session session=Hibernate_Util.getSession();
        //2.利用session根据主键查询
        Student stu=(Student) session.get(Student.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(Student 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(Student 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(Student 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<Student> findPage(Page page) {
    //1.获取session
    Session session=Hibernate_Util.getSession();

    //2.定义查询最大记录数的hql
    String hql="from Student";

    //3.定义查询最大记录数的Query对象
    Query querypage=session.createQuery(hql);

    //4.查询最大记录数的数据
    querypage.setMaxResults(page.getPagesize());

    //5.确定查询起点
    querypage.setFirstResult(page.getStartrow());

    //6.分页查询
    List<Student> 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 Student";

    //3.利用Session创建Query对象
    Query querycount=session.createQuery(hqlcount);

    //4.获取总条数(返回单行数据uniqueResult())
    Integer totalCount=Integer.parseInt(querycount.uniqueResult().toString());
    //5.释放资源
    Hibernate_Util.closeSession();
    return totalCount;
}

}

11.创建业务层的接口

package com.service;

import java.util.List;

import com.entity.Student;
import com.page.Page;

/**
 * 业务接口
 * @author pc
 *
 */
public interface StudentService {
    /**
     * 1.登录的业务
     * @param sname
     * @param password
     * @return
     */
    Student login(String sname,String password);
    /**
     * 2.注册
     * @param stu
     * @return
     */
    int register(Student stu);

    /**
     * 3.查询所有
     */
    List<Student> findAll();
    /**
     * 4.根据主键id查询
     * @param sid
     * @return
     */
    Student findById(Integer sid);
    /**
     * 5.修改
     */
    int update(Student stu);
    /**
     * 6.删除
     */
    int delete(Student stu);

    /**
     * 7.分页查询
     */
    List<Student> findPage(Page page);
    /**
     * 8.查询总条数
     */
    int getTotalCount();

}

12.实现业务层接口

package com.service.impl;

import java.util.List;

import com.dao.StudentDao;
import com.dao.impl.StudentDaoImpl;
import com.entity.Student;
import com.page.Page;
import com.service.StudentService;

public class StudentServiceImpl implements StudentService {
    /**
     * 使用多态引用数据访问层对象
     */
    private StudentDao dao = new StudentDaoImpl();

    /**
     * 登录
     */
    public Student login(String sname, String password) {
        return dao.findByNameAndPwd(sname, password);
    }

    public int delete(Student stu) {
        // TODO Auto-generated method stub
        return dao.delete(stu);
    }

    public List<Student> findAll() {
        // TODO Auto-generated method stub
        return dao.findAll();
    }

    public Student findById(Integer sid) {
        // TODO Auto-generated method stub
        return dao.findById(sid);
    }

    public int register(Student stu) {
        // TODO Auto-generated method stub
        return dao.save(stu);
    }

    public int update(Student stu) {
        // TODO Auto-generated method stub
        return dao.update(stu);
    }

    public List<Student> findPage(Page page) {
        // TODO Auto-generated method stub
        return dao.findPage(page);
    }

    public int getTotalCount() {
        // TODO Auto-generated method stub
        return dao.getTotalCount();
    }

}

13.创建Servlet类

Servlet类里的增删改查我是分开写的,所以就不一一粘贴代码,这里只粘贴部分

package com.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.entity.Student;
import com.service.StudentService;
import com.service.impl.StudentServiceImpl;

public class RegisterServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    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 sname = request.getParameter("sname");
        String password = request.getParameter("password");
        String sex = request.getParameter("sex");
        Integer cid = Integer.valueOf(request.getParameter("cid"));
        Student stu = new Student(sname, password, sex, cid);

        // 3.业务处理
        StudentService service = new StudentServiceImpl();
        int num = service.register(stu);
        if (num > 0) {
            System.out.println("register success!");
            response.sendRedirect("FindAllServlet");
        } else {
            System.out.println("register fail!");

        }

    }

}
package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.codehaus.jackson.map.ObjectMapper;

import com.entity.Student;
import com.page.Page;
import com.service.StudentService;
import com.service.impl.StudentServiceImpl;

/**
 * 分页查询
 *
 * @author pc
 *
 */
public class FindPageServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    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.业务处理
        StudentService service = new StudentServiceImpl();

        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<Student> 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);
        /*if (list != null) {
            System.out.println("find page success");
            request.setAttribute("list", list);
            request.setAttribute("page", page);
            request.getRequestDispatcher("index.jsp").forward(request, response);
        } else {
            System.out.println("find page fail!");

        }*/

    }

}
package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.entity.Student;
import com.page.Page;
import com.service.StudentService;
import com.service.impl.StudentServiceImpl;

public class FindAllServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    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对象之前
         *
         */

        // 2.接受参数
        String no=request.getParameter("pageNo");

        // 3.业务处理
        StudentService service = new StudentServiceImpl();

        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<Student> 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!");
        }
    }    

    }

代码

package com.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.entity.Student;
import com.service.StudentService;
import com.service.impl.StudentServiceImpl;

public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    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 sname=request.getParameter("sname");
        String password=request.getParameter("password");
        //3.业务处理
        StudentService service=new StudentServiceImpl();
        Student stu=service.login(sname, password);
        if(stu!=null){
            System.out.println("login success!");
            //4.页面跳转
            request.getSession().setAttribute("sname", sname);
            response.sendRedirect("FindAllServlet");
        }else{
            System.out.println("login fail!");

        }
    }

}
package com.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.entity.Student;
import com.service.StudentService;
import com.service.impl.StudentServiceImpl;
import com.util.Hibernate_Util;

public class FindByIdSerlvet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    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("sid"));

        // 3.业务处理
        StudentService service = new StudentServiceImpl();

         Student 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查询到对象");
         }
    }
}
package com.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.entity.Student;
import com.service.StudentService;
import com.service.impl.StudentServiceImpl;

public class UpdateServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    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("sid"));
        String sname = request.getParameter("sname");
        String password = request.getParameter("password");
        String sex = request.getParameter("sex");
        Integer cid=Integer.valueOf(request.getParameter("cid"));
        Student stu=new Student(sid,sname, password, sex, cid);

        // 3.业务处理
        StudentService service = new StudentServiceImpl();
        int num=service.update(stu);
        if(num>0){
            System.out.println("update success!");
            response.sendRedirect("FindAllServlet");
        }else{
            System.out.println("update fail!");
        }
    }
}
package com.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.entity.Student;
import com.service.StudentService;
import com.service.impl.StudentServiceImpl;

public class DeleteSerlvet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    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("sid"));
        // 3.业务处理
        StudentService service = new StudentServiceImpl();
        Student 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查询失败!");
        }
    }
}

14.配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FindAllServlet</servlet-name>
    <servlet-class>com.servlet.FindAllServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FindByIdSerlvet</servlet-name>
    <servlet-class>com.servlet.FindByIdSerlvet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>UpdateServlet</servlet-name>
    <servlet-class>com.servlet.UpdateServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>DeleteSerlvet</servlet-name>
    <servlet-class>com.servlet.DeleteSerlvet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>RegisterServlet</servlet-name>
    <servlet-class>com.servlet.RegisterServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FindPageServlet</servlet-name>
    <servlet-class>com.servlet.FindPageServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FindAllServlet</servlet-name>
    <url-pattern>/FindAllServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FindByIdSerlvet</servlet-name>
    <url-pattern>/FindByIdSerlvet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>UpdateServlet</servlet-name>
    <url-pattern>/UpdateServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>DeleteSerlvet</servlet-name>
    <url-pattern>/DeleteSerlvet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>RegisterServlet</servlet-name>
    <url-pattern>/RegisterServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FindPageServlet</servlet-name>
    <url-pattern>/FindPageServlet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

15.首页

<%@ 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>
        <h3>学生信息表</h3>
        <table border="2">
            <tr>
                <td>
                    序号
                </td>
                <td>
                    姓名
                </td>
                <td>
                    性别
                </td>
                <td align="center">
                    操作
                </td>
            </tr>

            <c:forEach var="i" items="${list}"  varStatus="f">
                <tr <c:if test="${f.index%2==0}">style="background-color:orange;"</c:if>>
                    <td>
                        ${i.sid }
                    </td>
                    <td>
                        ${i.sname }
                    </td>
                    <td>
                        ${i.sex }
                    </td>
                    <td>
                        <a href="register.jsp">添加</a>
                        &nbsp;&nbsp;
                        <a href="FindByIdSerlvet?sid=${i.sid}">修改</a>
                        &nbsp;&nbsp;
                        <a href="DeleteSerlvet?sid=${i.sid}">删除</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>

16.登录页面

<%@ 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="sname" />
                            </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>

17.注册页面

<%@ 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: 500px;">
                <legend>
                    注册
                </legend>
                <form action="RegisterServlet" method="post">
                    <table>
                        <tr>
                            <td>
                                用户名:
                            </td>
                            <td>
                                <input type="text" name="sname"/>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                密码:
                            </td>
                            <td>
                                <input type="password" name="password"/>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                性别:
                            </td>
                            <td>
                                    <input type="radio" name="sex" value="男" checked="checked"/>男
                                    <input type="radio" name="sex" value="女"/>女
                            </td>
                        </tr>
                        <tr>
                            <td>
                                班级编号:
                            </td>
                            <td>
                                <select name="cid">
                                  <option value="1">TB07</option>
                                  <option value="2">TB13</option>
                                  <option value="3">TB24</option>
                                  <option value="4">TB31</option>
                                </select>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <input type="submit" value="注册" />
                            </td>
                            <td>
                                <input type="reset" value="重置" />
                            </td>
                        </tr>
                    </table>
                </form>
            </fieldset>
        </center>
    </body>
</html>

18.修改

<%@ 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: 500px;">
                <legend>
                    <br>修改
                </legend>
                <form action="UpdateServlet?sid=${stu.sid}" method="post">
                    <table>
                        <tr>
                            <td>
                                用户名:
                            </td>
                            <td>
                                <input type="text" name="sname" value="${stu.sname}"/>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                密码:
                            </td>
                            <td>
                                <input type="password" name="password" value="${stu.password}"/>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                性别:
                            </td>
                            <td>
                                <c:choose>
                                  <c:when test="${stu.sex eq ‘男‘}">
                                    <input type="radio" name="sex" value="男" checked="checked"/>男
                                    <input type="radio" name="sex" value="女"/>女
                                  </c:when>
                                  <c:otherwise>
                                     <input type="radio" name="sex" value="男"/>男
                                    <input type="radio" name="sex" value="女" checked="checked"/>女
                                  </c:otherwise>
                                </c:choose>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                班级编号:
                            </td>
                            <td>
                                <select name="cid">
                                  <option value="1">TB07</option>
                                  <option value="2">TB13</option>
                                  <option value="3">TB24</option>
                                  <option value="4">TB31</option>
                                </select>
                            </td>
                        </tr>

                        <tr>
                            <td>
                                <input type="submit" value="修改" />
                            </td>
                            <td>
                                <input type="reset" value="重置" />
                            </td>
                        </tr>
                    </table>
                </form>
            </fieldset>
        </center>
    </body>
</html>

部分截图       2016-09-2415:21:19

注:希望各路大神多多指点!!!

时间: 2024-10-25 11:01:14

Hibernate全套增删改查+分页的相关文章

hibernate+springMVC增删改查

原文:hibernate+springMVC增删改查 源代码下载地址:http://www.zuidaima.com/share/1550463770610688.htm 1,开发环境:MyEclipse 2013 字符集"UTF-8" 2,Web服务器:Tomcat 6-7都可以 3,SQL Server 2008 需要自己添加数据库db_new,也可以自己改配置文件. 4,使用技术:hibernate,springmvc     官方验证: 程序是没问题的,如楼主描述的功能,他没有

hibernate 入门增删改查demo

原文:hibernate 入门增删改查demo 源代码下载地址:http://www.zuidaima.com/share/1550463648238592.htm

OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)

公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当然,可以用代码生成器,不过配套的代码生成器暂时没有):又从网上找了一个封装了泛型方法的OracleHelper类,整合到一起,但貌似数据增删改查依然不方便:于是花了两天时间,在原有基础上对增删改查分页查询操作进行了面向对象的封装,并且对批量增删改操作进行事务封装,写事务代码更方便. 原理: 1.利用

Hibernate 批量增删改查操作

上文介绍Hibernate基本的增删改查,本例将介绍更实用的批量增删改查的操作的实现.本文中增删改查的操作,仅供参考.如果读者需要应用到实际的应用场景需要的话,需要在此基础上扩展与丰富. [转载使用,请注明出处:http://blog.csdn.net/mahoking] 在学习本例时,需要扩展一下Hibernate中Session的知识.Hibernate中的Session是一级缓存,可以理解为进程级的缓存.在进程运行期间一直存在.Session可以理解为一个可以操作数据库的对象 具体如何操作

EasyUI + Spring MVC + hibernate实现增删改查导入导出

(这是一个故事……) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已经搭建好的框架平台,在平台上进行编码,不限制技术. 虽然说不限制技术,但还是得根据已经搭建的框架平台进行编码. 所以首先第一步,分析框架平台结构组成. 入手:看目录.看配置.看jar包.看js库.看数据库... 不难发现项目是基于:Spring + Hibernate + Spring MVC +

hibernate实现增删改查的各种方法

1>接口(主要是增删改查的接口)BaseDao.java /** * * @author fly.zhou */ public interface IBaseDao { //增加对应实体的一条记录 public boolean save(Object o); //更新对应实体的一条记录 public boolean update(Object o); //增加或者更新对应实体的一条记录 public boolean saveOrUpdate(Object o); //保存一系列对象集合 publ

Hibernate 基本增删改查操作

本文将要介绍Hibernate基本的增删改查的操作的实现,首先我们创建一个对象实例.一般情况下会创建User,本例也不例外需要创建这样的对象. [转载使用,请注明出处:http://blog.csdn.net/mahoking] User对象 public class User { private Integer id; private String userName; private String password; /*以下省略getter与setter*/ } 配置User.hbm.xml

hibernate之增删改查demo

1 package dao; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import org.hibernate.Query; 7 import org.hibernate.SQLQuery; 8 import org.hibernate.Transaction; 9 10 import com.sun.org.apache.bcel.internal.generic.GETSTATIC; 11 12 import

Hibernate的增删改查

一.搭建Hibernate开发环境,这里就不说了,直接说环境搭好后的事情. 二.项目的目录结构 三.base_image.hbm.xml配置文件内容 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://w