• 5.Hibernate实现全套增删改查和ajax异步分页


    1.1 创建如下oracle数据库脚本

     1 drop sequence seq_stu;
     2 
     3 create sequence SEQ_STU
     4 minvalue 1
     5 maxvalue 999999999999999999999999999
     6 start with 1
     7 increment by 1
     8 cache 20;
     9 
    10 drop table student;
    11 
    12 create table STUDENT
    13 (
    14   sid      NUMBER not null,
    15   sname    VARCHAR2(20) not null,
    16   password VARCHAR2(20) default '123',
    17   sex     VARCHAR2(10) default '',
    18   cid      NUMBER not null
    19 );
    20 alter table STUDENT
    21   add constraint pk_SID primary key (SID);
    22   
    23 alter table STUDENT
    24   add constraint CK_STUDENT_CID
    25   check (cid between 1 and 50);
    26 
    27 insert into STUDENT (sid, sname, password, sex, cid)
    28 values (SEQ_STU.NEXTVAL, '潜逃', '123', '', 1);
    29 insert into STUDENT (sid, sname, password, sex, cid)
    30 values (SEQ_STU.NEXTVAL, '周强', '123', '', 1);
    31 insert into STUDENT (sid, sname, password, sex, cid)
    32 values (SEQ_STU.NEXTVAL, '薛东', '123', '', 1);
    33 insert into STUDENT (sid, sname, password, sex, cid)
    34 values (SEQ_STU.NEXTVAL, '帅天威', '123', '', 2);
    35 insert into STUDENT (sid, sname, password, sex, cid)
    36 values (SEQ_STU.NEXTVAL, '汤帅', '123', '', 2);
    37 insert into STUDENT (sid, sname, password, sex, cid)
    38 values (SEQ_STU.NEXTVAL, '刘亮', '123', '', 2);
    39 insert into STUDENT (sid, sname, password, sex, cid)
    40 values (SEQ_STU.NEXTVAL, '李杰', '123', '', 3);
    41 insert into STUDENT (sid, sname, password, sex, cid)
    42 values (SEQ_STU.NEXTVAL, '唐龙', '123', '', 3);
    43 insert into STUDENT (sid, sname, password, sex, cid)
    44 values (SEQ_STU.NEXTVAL, '胡强', '123', '', 3);
    45 insert into STUDENT (sid, sname, password, sex, cid)
    46 values (SEQ_STU.NEXTVAL, '李文宝', '123', '', 4);
    47 insert into STUDENT (sid, sname, password, sex, cid)
    48 values (SEQ_STU.NEXTVAL, '程秀秀', '123', '', 4);
    49 insert into STUDENT (sid, sname, password, sex, cid)
    50 values (SEQ_STU.NEXTVAL, '陆羽', '123', '', 4);
    51 insert into STUDENT (sid, sname, password, sex, cid)
    52 values (SEQ_STU.NEXTVAL, 'holly', '123', '', 4);
    53 commit;
    54 
    55 --只修改列表 列名重命名
    56 alter table student rename column ssex to sex;
    57 
    58 select * from student;
    59 
    60 commit;
    student.sql

    1.2 创建如下项目结构

    1.3 在项目的src根目录下创建hibernate.cfg.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
     3 <hibernate-configuration>
     4   <session-factory>
     5     <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
     6     <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
     7     <property name="connection.username">holly</property>
     8     <property name="connection.password">sys</property>
     9     <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
    10     <property name="show_sql">true</property>
    11     <property name="format_sql">true</property>
    12     <mapping resource="com/entity/Student.hbm.xml"/>
    13   </session-factory>
    14 </hibernate-configuration>
    hibernate.cfg.xml

    1.4 在项目的src下的com.entity包下创建Student.java

     1 package com.entity;
     2 
     3 public class Student {
     4     private Integer sid;
     5     private String sname;
     6     private String password;
     7     private String sex;
     8     private Integer cid;
     9     
    10     public Student() {
    11     }
    12     public Student(Integer sid, String sname, String password, String sex,
    13             Integer cid) {
    14         this.sid = sid;
    15         this.sname = sname;
    16         this.password = password;
    17         this.sex = sex;
    18         this.cid = cid;
    19     }
    20     public Student(String sname, String password, String sex,
    21             Integer cid) {
    22         this.sname = sname;
    23         this.password = password;
    24         this.sex = sex;
    25         this.cid = cid;
    26     }
    27     public Integer getSid() {
    28         return sid;
    29     }
    30     public void setSid(Integer sid) {
    31         this.sid = sid;
    32     }
    33     public String getSname() {
    34         return sname;
    35     }
    36     public void setSname(String sname) {
    37         this.sname = sname;
    38     }
    39     public String getPassword() {
    40         return password;
    41     }
    42     public void setPassword(String password) {
    43         this.password = password;
    44     }
    45     public String getSex() {
    46         return sex;
    47     }
    48     public void setSex(String sex) {
    49         this.sex = sex;
    50     }
    51     public Integer getCid() {
    52         return cid;
    53     }
    54     public void setCid(Integer cid) {
    55         this.cid = cid;
    56     }
    57     @Override
    58     public String toString() {
    59         return "Student [cid=" + cid + ", password=" + password + ", sex="
    60                 + sex + ", sid=" + sid + ", sname=" + sname + "]";
    61     }
    62     
    63     
    64 
    65 }
    Student.java

    1.5 在项目的src下的com.entity包下创建Student.hbm.xml映射文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
     3 <hibernate-mapping>
     4    <class name="com.entity.Student" table="STUDENT">
     5        <id name="sid" type="java.lang.Integer" column="SID">
     6           <generator class="sequence">
     7             <param name="sequence">SEQ_STU</param>
     8           </generator>
     9        </id>
    10        <property name="sname" type="java.lang.String" column="SNAME"/>
    11        <property name="password" type="java.lang.String" column="PASSWORD"/>
    12        <property name="sex" type="java.lang.String" column="SEX"/>
    13        <property name="cid" type="java.lang.Integer" column="CID"/>
    14    </class>
    15 </hibernate-mapping>
    Student.hbm.xml

    1.6 在项目的src下的com.page包下创建Page.java

     1 package com.page;
     2 
     3 public class Page {
     4     private Integer pagesize; //页面大小
     5     private Integer pageno; //当前页
     6     private Integer startrow; //起始行
     7     private Integer totalpage; //总页数
     8     private Integer totalcount; //总条数
     9     
    10     
    11     public Page() {
    12     }
    13     public Page(Integer pageSize, Integer pageNo, Integer totalCount) {
    14         this.pagesize = pageSize; //页面大小 
    15         this.pageno = pageNo;  //当前页
    16         this.totalcount = totalCount; //计算总条数
    17         this.setStartrow(pageNo, pageSize); //计算起始行
    18         this.setTotalpage(totalCount, pageSize); //计算总页数
    19     }
    20     public Integer getPagesize() {
    21         return pagesize;
    22     }
    23     public void setPagesize(Integer pageSize) {
    24         this.pagesize = pageSize;
    25     }
    26     public Integer getPageno() {
    27         return pageno;
    28     }
    29     public void setPageno(Integer pageNo) {
    30         this.pageno = pageNo;
    31     }
    32     public Integer getStartrow() {
    33         return startrow;
    34     }
    35     /**
    36      * 计算起始行
    37      * @param pageNo
    38      * @param pageSize
    39      */
    40     public void setStartrow(Integer pageNo,Integer pageSize) {
    41         this.startrow = (pageNo-1)*pageSize;
    42     }
    43     public Integer getTotalpage() {
    44         return totalpage;
    45     }
    46     /**
    47      * 计算总页数
    48      * @param totalCount
    49      * @param pageSize
    50      */
    51     public void setTotalpage(Integer totalCount,Integer pageSize) {
    52         this.totalpage = totalCount%pageSize==0?totalCount/pageSize:totalCount/pageSize+1;
    53     }
    54     public Integer getTotalcount() {
    55         return totalcount;
    56     }
    57     public void setTotalCount(Integer totalCount) {
    58         this.totalcount = totalCount;
    59     }
    60     @Override
    61     public String toString() {
    62         return "[{"pageno":" + pageno + ","pagesize":" + pagesize
    63                 + ","startrow":" + startrow + ","totalcount":" + totalcount
    64                 + ","totalpage":" + totalpage + "}]";
    65     }
    66 
    67 }
    Page.java

    1.7 在项目的src下的com.util包下创建Hibernate_Util.java

     1 package com.util;
     2 
     3 import org.hibernate.HibernateException;
     4 import org.hibernate.Session;
     5 import org.hibernate.SessionFactory;
     6 import org.hibernate.cfg.Configuration;
     7 
     8 /**
     9  * Hibernate打开session和关闭session
    10  * @author Holly
    11  *
    12  */
    13 public class Hibernate_Util {
    14     private static ThreadLocal<Session> threadLocal=new ThreadLocal<Session>();
    15     private static Configuration configuration=null;
    16     private static SessionFactory sessionFactory=null;
    17     static{
    18         
    19      try {
    20         configuration=new Configuration().configure("/hibernate.cfg.xml");
    21         sessionFactory=configuration.buildSessionFactory();
    22      } catch (HibernateException e) {
    23          System.out.println("解析xml和创建Session工厂error");
    24         e.printStackTrace();
    25     }
    26       
    27     }
    28    
    29     public static Session getSession(){
    30         Session session=threadLocal.get();
    31         if(session==null){
    32             session=sessionFactory.openSession();
    33             threadLocal.set(session);
    34         }
    35         return session;
    36     }
    37     public static void closeSession(){
    38         Session session=threadLocal.get();
    39         if(session!=null){
    40               threadLocal.set(null);
    41               session.close();
    42         }
    43     }
    44     
    45 }
    Hibernate_Util.java

    1.8 在项目的src下的com.dao包下创建StudentDao.java

     1 package com.dao;
     2 
     3 import java.util.Iterator;
     4 import java.util.List;
     5 
     6 import org.hibernate.Hibernate;
     7 import org.hibernate.Session;
     8 
     9 import com.entity.Student;
    10 import com.page.Page;
    11 import com.util.Hibernate_Util;
    12 
    13 import sun.print.resources.serviceui;
    14 
    15 public interface StudentDao {
    16     /**
    17      * 1.根据用户名和密码查询
    18      * @param sname
    19      * @param password
    20      * @return
    21      */
    22     Student findByNameAndPwd(String sname,String password);
    23     /**
    24      * 2.延时加载:查询所有
    25      * @return
    26      */
    27     List<Student> findAll();
    28     /**
    29      * 3.保存
    30      * @param stu
    31      * @return
    32      */
    33     int save(Student stu);
    34     /**
    35      * 4.根据主键id查询单条
    36      * @param sid
    37      * @return
    38      */
    39     Student findById(Integer sid);
    40     /**
    41      * 5.修改
    42      */
    43     int update(Student stu);
    44     /**
    45      * 6.删除对象
    46      * @param stu
    47      * @return
    48      */
    49     int delete(Student stu);
    50     /**
    51      * 7.分页查询
    52      */
    53     List<Student> findPage(Page page);
    54     /**
    55      * 8.查询总条数
    56      */
    57     int getTotalCount();
    58     
    59 }
    StudentDao.java

    1.9 在项目的src下的com.dao.impl包下创建StudentDaoImpl.java

      1 package com.dao.impl;
      2 
      3 import java.util.List;
      4 
      5 import org.hibernate.HibernateException;
      6 import org.hibernate.Query;
      7 import org.hibernate.Session;
      8 
      9 import com.dao.StudentDao;
     10 import com.entity.Student;
     11 import com.page.Page;
     12 import com.util.Hibernate_Util;
     13 
     14 public class StudentDaoImpl implements StudentDao{
     15     /**
     16      * 1.查询所有:立即加载
     17      */
     18     public List<Student> findAll() {
     19         //1.获取session对象
     20         Session session=Hibernate_Util.getSession();
     21         //2.定义hql语句
     22         String hql="from Student";
     23         //3.Session创建Query对象
     24         Query query=session.createQuery(hql);
     25         //4.query对象执行操作
     26         List<Student> it=query.list();
     27         //5.释放资源
     28         Hibernate_Util.closeSession();
     29         return it;
     30     }
     31     /**
     32      * 2.根据用户名和密码查询
     33      */
     34     public Student findByNameAndPwd(String sname, String password) {
     35         //1.获取session对象
     36         Session session=Hibernate_Util.getSession();
     37         //2.定义hql语句(命名参数)
     38         String hql="from Student where sname=:sname and password=:password";
     39         //3.Session创建Query对象
     40         Query query=session.createQuery(hql);
     41         //4.query对象给占位符赋值
     42         /*query.setString("sname", sname);
     43         query.setString("password", password);*/
     44         query.setParameter("sname", sname);
     45         query.setParameter("password", password);
     46     
     47 //        query.setProperties(user);
     48         //5.执行操作(uniqueResult()查询的单行数据)
     49         Student stu=(Student) query.uniqueResult();
     50         //6.释放资源
     51         Hibernate_Util.closeSession();
     52         return stu;
     53         
     54     }
     55     
     56 
     57    /**
     58     * 根据id主键查询单条
     59     */
     60     public Student findById(Integer sid) {
     61         //1.获取session对象
     62         Session session=Hibernate_Util.getSession();
     63         //2.利用session根据主键查询
     64         Student stu=(Student) session.get(Student.class, sid);
     65         /*3.
     66          * 因为在修改时要提前查询单条,和session关联已经变成持久化对象,
     67          * 而在修改时session执行update方法时,
     68          * 首先会查询该主键id是否存在,
     69          * 如果存在,则根据主键id修改该对象,此时对象已经处于持久化对象,
     70          * 而实际session中不能同时存在两个主键id相同的对象,
     71          * 否则会出现如下错误:
     72          * org.hibernate.NonUniqueObjectException: 
     73          * a different object with the same identifier 
     74          * value was already associated with the 
     75          * session: [com.entity.Student#1]
     76          */
     77           Hibernate_Util.closeSession();
     78          // session.clear();
     79         return stu;
     80     }
     81     /**
     82      * 删除对象
     83      */
     84     public int delete(Student stu) {
     85         int num=1;
     86         //1.获取session对象
     87         Session session=Hibernate_Util.getSession();
     88         
     89         try {
     90             //session删除操作
     91             session.delete(stu);
     92             session.beginTransaction().commit();
     93         } catch (HibernateException e) {
     94              num=0;
     95             // TODO Auto-generated catch block
     96             e.printStackTrace();
     97         }finally{
     98             //5.释放资源
     99             Hibernate_Util.closeSession();
    100         }
    101         
    102         return num;
    103     }
    104     /**
    105      * 添加
    106      */
    107     public int save(Student stu) {
    108         int num=1;
    109         //1.获取session对象
    110         Session session=Hibernate_Util.getSession();
    111         //执行操作
    112         try {
    113             session.save(stu);
    114             session.beginTransaction().commit();
    115         } catch (HibernateException e) {
    116             num=0;
    117             e.printStackTrace();
    118         }finally{
    119             //5.释放资源
    120             Hibernate_Util.closeSession();
    121         }
    122         return num;
    123     }
    124    /**
    125     * 修改
    126     */
    127     public int update(Student stu) {
    128         int num=1;
    129         //1.获取session对象
    130         Session session=Hibernate_Util.getSession();
    131         try {
    132             //执行操作
    133             //该对象的主键id必须存在
    134             session.update(stu);
    135             session.beginTransaction().commit();
    136         } catch (HibernateException e) {
    137             num=0;
    138             e.printStackTrace();
    139         }finally{
    140             //5.释放资源
    141             Hibernate_Util.closeSession();
    142         }
    143         return num;
    144     }
    145     /**
    146      * 7.分页查询
    147      */
    148 public List<Student> findPage(Page page) {
    149     //1.获取session
    150     Session session=Hibernate_Util.getSession();
    151     
    152     //2.定义查询最大记录数的hql
    153     String hql="from Student";
    154     
    155     //3.定义查询最大记录数的Query对象
    156     Query querypage=session.createQuery(hql);
    157     
    158     //4.查询最大记录数的数据
    159     querypage.setMaxResults(page.getPagesize());
    160     
    161     //5.确定查询起点
    162     querypage.setFirstResult(page.getStartrow());
    163     
    164     //6.分页查询
    165     List<Student> list=querypage.list();
    166     
    167     //7.关闭session
    168     Hibernate_Util.closeSession();
    169     
    170     return list;
    171 }
    172 /**
    173  * 8.查询总条数
    174  */
    175 public int getTotalCount() {
    176     //1.获取session
    177     Session session=Hibernate_Util.getSession();
    178     
    179     //2.定义查询总条数hql语句
    180     String hqlcount="select count(*) from Student";
    181     
    182     //3.利用Session创建Query对象
    183     Query querycount=session.createQuery(hqlcount);
    184     
    185     //4.获取总条数(返回单行数据uniqueResult())
    186     Integer totalCount=Integer.parseInt(querycount.uniqueResult().toString());
    187     //5.释放资源
    188     Hibernate_Util.closeSession();
    189     return totalCount;
    190 }
    191     
    192 
    193 }
    StudentDaoImpl.java

    1.10 在项目的src下的com.service包下创建StudentService.java

     1 package com.service;
     2 
     3 import java.util.List;
     4 
     5 import com.entity.Student;
     6 import com.page.Page;
     7 
     8 /**
     9  * 业务接口
    10  * @author pc
    11  *
    12  */
    13 public interface StudentService {
    14     /**
    15      * 1.登录的业务
    16      * @param sname
    17      * @param password
    18      * @return
    19      */
    20     Student login(String sname,String password);
    21     /**
    22      * 2.注册
    23      * @param stu
    24      * @return
    25      */
    26     int register(Student stu);
    27     
    28     /**
    29      * 3.查询所有
    30      */
    31     List<Student> findAll();
    32     /**
    33      * 4.根据主键id查询
    34      * @param sid
    35      * @return
    36      */
    37     Student findById(Integer sid);
    38     /**
    39      * 5.修改
    40      */
    41     int update(Student stu);
    42     /**
    43      * 6.删除
    44      */
    45     int delete(Student stu);
    46     
    47     /**
    48      * 7.分页查询
    49      */
    50     List<Student> findPage(Page page);
    51     /**
    52      * 8.查询总条数
    53      */
    54     int getTotalCount();
    55     
    56 
    57 }
    StudentService.java

    1.11 在项目的src下的com.service.impl包下创建StudentServiceImpl.java

     1 package com.service.impl;
     2 
     3 import java.util.Iterator;
     4 import java.util.List;
     5 
     6 import com.dao.StudentDao;
     7 import com.dao.impl.StudentDaoImpl;
     8 import com.entity.Student;
     9 import com.page.Page;
    10 import com.service.StudentService;
    11 
    12 public class StudentServiceImpl implements StudentService {
    13     /**
    14      * 使用多态引用数据访问层对象
    15      */
    16     private StudentDao dao = new StudentDaoImpl();
    17 
    18     /**
    19      * 登录
    20      */
    21     public Student login(String sname, String password) {
    22         return dao.findByNameAndPwd(sname, password);
    23     }
    24 
    25     public int delete(Student stu) {
    26         // TODO Auto-generated method stub
    27         return dao.delete(stu);
    28     }
    29 
    30     public List<Student> findAll() {
    31         // TODO Auto-generated method stub
    32         return dao.findAll();
    33     }
    34 
    35     public Student findById(Integer sid) {
    36         // TODO Auto-generated method stub
    37         return dao.findById(sid);
    38     }
    39 
    40     public int register(Student stu) {
    41         // TODO Auto-generated method stub
    42         return dao.save(stu);
    43     }
    44 
    45     public int update(Student stu) {
    46         // TODO Auto-generated method stub
    47         return dao.update(stu);
    48     }
    49 
    50     public List<Student> findPage(Page page) {
    51         // TODO Auto-generated method stub
    52         return dao.findPage(page);
    53     }
    54 
    55     public int getTotalCount() {
    56         // TODO Auto-generated method stub
    57         return dao.getTotalCount();
    58     }
    59 
    60 }
    StudentServiceImpl.java

     1.12 在项目的WebRoot下创建login.jsp页面

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 <%
     3     String path = request.getContextPath();
     4     String basePath = request.getScheme() + "://"
     5             + request.getServerName() + ":" + request.getServerPort()
     6             + path + "/";
     7 %>
     8 
     9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    10 <html>
    11     <head>
    12         <base href="<%=basePath%>">
    13 
    14         <title>My JSP 'index.jsp' starting page</title>
    15         <meta http-equiv="pragma" content="no-cache">
    16         <meta http-equiv="cache-control" content="no-cache">
    17         <meta http-equiv="expires" content="0">
    18         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    19         <meta http-equiv="description" content="This is my page">
    20         <!--
    21     <link rel="stylesheet" type="text/css" href="styles.css">
    22     -->
    23     </head>
    24 
    25     <body>
    26         <center>
    27             <fieldset style=" 300px;">
    28                 <legend>
    29                     登录
    30                 </legend>
    31                 <form action="LoginServlet" method="post">
    32                     <table>
    33                         <tr>
    34                             <td>
    35                                 用户名:
    36                             </td>
    37                             <td>
    38                                 <input type="text" name="sname" />
    39                             </td>
    40                         </tr>
    41                         <tr>
    42                             <td>
    43                                 密码:
    44                             </td>
    45                             <td>
    46                                 <input type="password" name="password" />
    47                             </td>
    48                         </tr>
    49                         <tr>
    50                             <td>
    51                                 <input type="submit" value="提交" />
    52                             </td>
    53                             <td>
    54                                 <input type="reset" value="重置" />
    55                             </td>
    56                         </tr>
    57                     </table>
    58                 </form>
    59             </fieldset>
    60         </center>
    61     </body>
    62 </html>
    login.jsp

    1. 13 在项目的src下的com.servlet包下创建LoginServlet.java

     1 package com.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 import com.entity.Student;
    12 import com.service.StudentService;
    13 import com.service.impl.StudentServiceImpl;
    14 
    15 public class LoginServlet extends HttpServlet {
    16 
    17     public void doGet(HttpServletRequest request, HttpServletResponse response)
    18             throws ServletException, IOException {
    19 
    20        this.doPost(request, response);
    21     }
    22 
    23     
    24     public void doPost(HttpServletRequest request, HttpServletResponse response)
    25             throws ServletException, IOException {
    26         request.setCharacterEncoding("UTF-8");
    27         response.setCharacterEncoding("UTF-8");
    28         response.setContentType("text/html;charset=UTF-8");
    29         
    30         //2.接受参数
    31         String sname=request.getParameter("sname");
    32         String password=request.getParameter("password");
    33         //3.业务处理
    34         StudentService service=new StudentServiceImpl();
    35         Student stu=service.login(sname, password);
    36         if(stu!=null){
    37             System.out.println("login success!");
    38             //4.页面跳转
    39             request.getSession().setAttribute("sname", sname);
    40             response.sendRedirect("FindAllServlet");
    41         }else{
    42             System.out.println("login fail!");
    43             
    44         }
    45         
    46     }
    47 
    48 }
    LoginServlet.java

    1.14 在项目WebRoot下的WEB-INF下的web.xml中配置servlet

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.5" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     7   <servlet>
     8     <servlet-name>LoginServlet</servlet-name>
     9     <servlet-class>com.servlet.LoginServlet</servlet-class>
    10   </servlet>
    11   <servlet-mapping>
    12     <servlet-name>LoginServlet</servlet-name>
    13     <url-pattern>/LoginServlet</url-pattern>
    14   </servlet-mapping>
    15   <welcome-file-list>
    16     <welcome-file>login.jsp</welcome-file>
    17   </welcome-file-list>
    18 </web-app>
    web.xml

    1.15 在项目的src下的com.servlet包下创建FindAllServlet.java

     1 package com.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 import java.util.Iterator;
     6 import java.util.List;
     7 
     8 import javax.servlet.ServletException;
     9 import javax.servlet.http.HttpServlet;
    10 import javax.servlet.http.HttpServletRequest;
    11 import javax.servlet.http.HttpServletResponse;
    12 
    13 import com.entity.Student;
    14 import com.page.Page;
    15 import com.service.StudentService;
    16 import com.service.impl.StudentServiceImpl;
    17 
    18 public class FindAllServlet extends HttpServlet {
    19 
    20 
    21     public void doGet(HttpServletRequest request, HttpServletResponse response)
    22             throws ServletException, IOException {
    23 
    24        this.doPost(request, response);
    25     }
    26 
    27     
    28     public void doPost(HttpServletRequest request, HttpServletResponse response)
    29             throws ServletException, IOException {
    30         request.setCharacterEncoding("UTF-8");
    31         response.setCharacterEncoding("UTF-8");
    32         response.setContentType("text/html;charset=UTF-8");
    33         
    34         /**
    35          * ☆
    36          * 在使用ajax往前台通过输出流对象的print方法发送json时
    37          * 该行获取输出流对象的代码必须放在
    38          * response.setContentType("text/html;charset=UTF-8");
    39          * 之后,否则ajax回调时,页面拿到的中文数据就永远都是乱码,
    40          * 原因是:如果将改行代码写在处理客户端乱码之前,表示编码格式已经确定,
    41          * 所以,编码格式的处理应该放在获取PrintWriter对象之前
    42          * 
    43          */
    44         PrintWriter out=response.getWriter();
    45         
    46 
    47         // 2.接受参数
    48         String no=request.getParameter("pageNo");
    49         
    50 
    51         // 3.业务处理
    52         StudentService service = new StudentServiceImpl();
    53         
    54         int pageSize=3; //页面大小
    55         int pageNo=1; //默认的pageNo为1
    56         if(no!=null && no!=""){
    57             pageNo=Integer.valueOf(no);
    58         }
    59         //获取总条数
    60         int totalCount=service.getTotalCount();
    61         Page page=new Page(pageSize, pageNo, totalCount);
    62         
    63         List<Student> list = service.findPage(page);
    64         if(list!=null){
    65              System.out.println("find All page success");
    66               request.setAttribute("list", list);
    67               request.setAttribute("page", page);
    68               request.getRequestDispatcher("index.jsp").forward(request, response);
    69         }else{
    70             System.out.println("find All page fail!");
    71             
    72         
    73         }
    74         
    75     }    
    76         
    77     }
    FindAllServlet.java

    1.16. 在项目的WebRoot下创建index.jsp页面

      1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
      2 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
      3 <%
      4     String path = request.getContextPath();
      5     String basePath = request.getScheme() + "://"
      6             + request.getServerName() + ":" + request.getServerPort()
      7             + path + "/";
      8 %>
      9 
     10 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     11 <html>
     12     <head>
     13         <base href="<%=basePath%>">
     14 
     15         <title>My JSP 'index.jsp' starting page</title>
     16         <meta http-equiv="pragma" content="no-cache">
     17         <meta http-equiv="cache-control" content="no-cache">
     18         <meta http-equiv="expires" content="0">
     19         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
     20         <meta http-equiv="description" content="This is my page">
     21         <!--
     22     <link rel="stylesheet" type="text/css" href="styles.css">
     23     -->
     24     </head>
     25 
     26     <body>
     27     <CENTER>
     28         <table>
     29             <tr>
     30                 <td colspan="4">
     31                     <a href="register.jsp">注册</a>
     32                 </td>
     33             </tr>
     34             <tr>
     35                 <td>
     36                     序号
     37                 </td>
     38                 <td>
     39                     姓名
     40                 </td>
     41                 <td>
     42                     性别
     43                 </td>
     44                 <td>
     45                     操作
     46                 </td>
     47             </tr>
     48             
     49             <c:forEach var="i" items="${list}">
     50                 <tr>
     51                     <td>
     52                         ${i.sid }
     53                     </td>
     54                     <td>
     55                         ${i.sname }
     56                     </td>
     57                     <td>
     58                         ${i.sex }
     59                     </td>
     60                     <td>
     61                         <a href="FindByIdSerlvet?sid=${i.sid}">修改</a>
     62                         &nbsp;&nbsp;
     63                         <a href="DeleteSerlvet?sid=${i.sid}">删除</a>
     64                         
     65                     </td>
     66                 </tr>
     67             </c:forEach>
     68             
     69         </table>
     70         <div>
     71         
     72         
     73         第${page.pageno}/${page.totalpage}页 &nbsp;&nbsp;
     74         <a href="FindAllServlet?pageNo=1">首页</a>
     75         <c:choose>
     76           <c:when test="${page.pageno gt 1}">
     77             <a href="FindAllServlet?pageNo=${page.pageno-1 }">上一页</a>
     78           </c:when>
     79           <c:otherwise>
     80             <a href="javascript:alert('已经是第一页了,没有上一页!');">上一页</a>
     81           </c:otherwise>
     82         </c:choose>
     83         <c:choose>
     84           <c:when test="${page.pageno lt page.totalpage}">
     85             <a href="FindAllServlet?pageNo=${page.pageno+1 }">下一页</a>
     86           </c:when>
     87           <c:otherwise>
     88             <a href="javascript:alert('已经是最有一页了,没有下一页!');">下一页</a>
     89           </c:otherwise>
     90         </c:choose>
     91         
     92         <a href="FindAllServlet?pageNo=${page.totalpage}">末页</a>
     93         &nbsp;&nbsp;
     94         共${page.totalcount}条
     95         
     96         </div>
     97         
     98     </CENTER>
     99         
    100     </body>
    101 </html>
    index.jsp

    1.17 运行登录和查询的效果

    1.18 在项目的WebRoot下创建register.jsp页面

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     3 <%
     4     String path = request.getContextPath();
     5     String basePath = request.getScheme() + "://"
     6             + request.getServerName() + ":" + request.getServerPort()
     7             + path + "/";
     8 %>
     9 
    10 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    11 <html>
    12     <head>
    13         <base href="<%=basePath%>">
    14 
    15         <title>My JSP 'index.jsp' starting page</title>
    16         <meta http-equiv="pragma" content="no-cache">
    17         <meta http-equiv="cache-control" content="no-cache">
    18         <meta http-equiv="expires" content="0">
    19         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    20         <meta http-equiv="description" content="This is my page">
    21         <!--
    22     <link rel="stylesheet" type="text/css" href="styles.css">
    23     -->
    24     </head>
    25 
    26     <body> 
    27         <center>
    28             <fieldset style=" 300px;">
    29                 <legend> 
    30                     注册 
    31                 </legend>
    32                 <form action="RegisterServlet" method="post">
    33                     <table>
    34                         <tr>
    35                             <td>
    36                                 用户名:
    37                             </td>
    38                             <td>
    39                                 <input type="text" name="sname"/>
    40                             </td>
    41                         </tr>
    42                         <tr>
    43                             <td>
    44                                 密码:
    45                             </td>
    46                             <td>
    47                                 <input type="password" name="password"/>
    48                             </td>
    49                         </tr>
    50                         <tr>
    51                             <td>
    52                                 性别:
    53                             </td>
    54                             <td>
    55                                     <input type="radio" name="sex" value="男" checked="checked"/>56                                     <input type="radio" name="sex" value="女"/>57                             </td>
    58                         </tr>
    59                         <tr>
    60                             <td>
    61                                 班级编号:
    62                             </td>
    63                             <td>
    64                                 <select name="cid">
    65                                   <option value="1">TB07</option>
    66                                   <option value="2">TB13</option>
    67                                   <option value="3">TB24</option>
    68                                   <option value="4">TB31</option>
    69                                 </select>
    70                             </td>
    71                         </tr>
    72                         <tr>
    73                             <td>
    74                                 <input type="submit" value="修改" />
    75                             </td>
    76                             <td>
    77                                 <input type="reset" value="重置" />
    78                             </td>
    79                         </tr>
    80                     </table>
    81                 </form>
    82             </fieldset>
    83         </center>
    84     </body>
    85 </html>
    register.jsp

    1.19.在项目的src下的com.servlet包下创建RegisterServlet.java

     1 package com.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 import com.entity.Student;
    12 import com.service.StudentService;
    13 import com.service.impl.StudentServiceImpl;
    14 
    15 public class RegisterServlet extends HttpServlet {
    16     public void doGet(HttpServletRequest request, HttpServletResponse response)
    17             throws ServletException, IOException {
    18 
    19         this.doPost(request, response);
    20     }
    21 
    22     public void doPost(HttpServletRequest request, HttpServletResponse response)
    23             throws ServletException, IOException {
    24         request.setCharacterEncoding("UTF-8");
    25         response.setCharacterEncoding("UTF-8");
    26         response.setContentType("text/html;charset=UTF-8");
    27 
    28         // 2.接受参数
    29         String sname = request.getParameter("sname");
    30         String password = request.getParameter("password");
    31         String sex = request.getParameter("sex");
    32         Integer cid = Integer.valueOf(request.getParameter("cid"));
    33         Student stu = new Student(sname, password, sex, cid);
    34 
    35         // 3.业务处理
    36         StudentService service = new StudentServiceImpl();
    37         int num = service.register(stu);
    38         if (num > 0) {
    39             System.out.println("register success!");
    40             response.sendRedirect("FindAllServlet");
    41         } else {
    42             System.out.println("register fail!");
    43 
    44         }
    45 
    46     }
    47 
    48 }
    RegisterServlet.java

    1.20 在上面点击注册超链接出现如下页面

    1.21  在项目的WebRoot下创建update.jsp页面

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     3 <%
     4     String path = request.getContextPath();
     5     String basePath = request.getScheme() + "://"
     6             + request.getServerName() + ":" + request.getServerPort()
     7             + path + "/";
     8 %>
     9 
    10 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    11 <html>
    12     <head>
    13         <base href="<%=basePath%>">
    14         <title>My JSP 'index.jsp' starting page</title>
    15         <meta http-equiv="pragma" content="no-cache">
    16         <meta http-equiv="cache-control" content="no-cache">
    17         <meta http-equiv="expires" content="0">
    18         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    19         <meta http-equiv="description" content="This is my page">
    20         <!--
    21     <link rel="stylesheet" type="text/css" href="styles.css">
    22     -->
    23     </head>
    24 
    25     <body> 
    26         <center>
    27             <fieldset style=" 300px;">
    28                 <legend>  
    29                     <br>修改  
    30                 </legend>
    31                 <form action="UpdateServlet?sid=${stu.sid}" method="post">
    32                     <table>
    33                         <tr>
    34                             <td>
    35                                 用户名:
    36                             </td>
    37                             <td>
    38                                 <input type="text" name="sname" value="${stu.sname}"/>
    39                             </td>
    40                         </tr>
    41                         <tr>
    42                             <td>
    43                                 密码:
    44                             </td>
    45                             <td>
    46                                 <input type="password" name="password" value="${stu.password}"/>
    47                             </td>
    48                         </tr>
    49                         <tr>
    50                             <td>
    51                                 性别:
    52                             </td>
    53                             <td>
    54                                 <c:choose>
    55                                   <c:when test="${stu.sex eq '男'}">
    56                                     <input type="radio" name="sex" value="男" checked="checked"/>57                                     <input type="radio" name="sex" value="女"/>58                                   </c:when>
    59                                   <c:otherwise>
    60                                      <input type="radio" name="sex" value="男"/>61                                     <input type="radio" name="sex" value="女" checked="checked"/>62                                   </c:otherwise>
    63                                 </c:choose>
    64                             </td>
    65                         </tr>
    66                         <tr>
    67                             <td>
    68                                 班级编号:
    69                             </td>
    70                             <td>
    71                                 <select name="cid">
    72                                   <option value="1">TB07</option>
    73                                   <option value="2">TB13</option>
    74                                   <option value="3">TB24</option>
    75                                   <option value="4">TB31</option>
    76                                 </select>
    77                             </td>
    78                         </tr>
    79                         
    80                         <tr>
    81                             <td>
    82                                 <input type="submit" value="修改" />
    83                             </td>
    84                             <td>
    85                                 <input type="reset" value="重置" />
    86                             </td>
    87                         </tr>
    88                     </table>
    89                 </form>
    90             </fieldset>
    91         </center>
    92     </body>
    93 </html>
    update.jsp

    1.22  在项目的src下的com.servlet包下创建FindByIdSerlvet.java

     1 package com.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 import com.entity.Student;
    12 import com.service.StudentService;
    13 import com.service.impl.StudentServiceImpl;
    14 import com.util.Hibernate_Util;
    15 
    16 public class FindByIdSerlvet extends HttpServlet {
    17     public void doGet(HttpServletRequest request, HttpServletResponse response)
    18             throws ServletException, IOException {
    19 
    20         this.doPost(request, response);
    21     }
    22 
    23     public void doPost(HttpServletRequest request, HttpServletResponse response)
    24             throws ServletException, IOException {
    25         request.setCharacterEncoding("UTF-8");
    26         response.setCharacterEncoding("UTF-8");
    27         response.setContentType("text/html;charset=UTF-8");
    28 
    29         // 2.接受参数
    30         Integer sid=Integer.valueOf(request.getParameter("sid"));
    31         
    32         // 3.业务处理
    33         StudentService service = new StudentServiceImpl();
    34          
    35          Student stu=service.findById(sid);
    36          System.out.println("stu:"+stu);
    37          if(stu!=null){
    38              System.out.println("根据id查询到对象");
    39              request.setAttribute("stu", stu);
    40              request.getRequestDispatcher("update.jsp").forward(request, response);
    41          }else{
    42              System.out.println("没有根据id查询到对象");
    43          }
    44 
    45     }
    46 
    47 }
    48 
    49 FindByIdSerlvet.java
    FindByIdServlet.java

    1.23  在项目的src下的com.servlet包下创建UpdateServlet.java

     1 package com.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 import com.entity.Student;
    12 import com.service.StudentService;
    13 import com.service.impl.StudentServiceImpl;
    14 
    15 public class UpdateServlet extends HttpServlet {
    16     public void doGet(HttpServletRequest request, HttpServletResponse response)
    17             throws ServletException, IOException {
    18 
    19         this.doPost(request, response);
    20     }
    21 
    22     public void doPost(HttpServletRequest request, HttpServletResponse response)
    23             throws ServletException, IOException {
    24         request.setCharacterEncoding("UTF-8");
    25         response.setCharacterEncoding("UTF-8");
    26         response.setContentType("text/html;charset=UTF-8");
    27 
    28         // 2.接受参数
    29         Integer sid=Integer.valueOf(request.getParameter("sid"));
    30         String sname = request.getParameter("sname");
    31         String password = request.getParameter("password");
    32         String sex = request.getParameter("sex");
    33         Integer cid=Integer.valueOf(request.getParameter("cid"));
    34         Student stu=new Student(sid,sname, password, sex, cid);
    35         
    36         // 3.业务处理
    37         StudentService service = new StudentServiceImpl();
    38         int num=service.update(stu);
    39         if(num>0){
    40             System.out.println("update success!");
    41             response.sendRedirect("FindAllServlet");
    42         }else{
    43             System.out.println("update fail!");
    44             
    45         }
    46 
    47     }
    48 
    49 }
    UpdateServlet.java

    1.24  点击修改超链接,进行修改会出现如下页面

    1. 25 在项目的src下的com.servlet包下创建DeleteSerlvet.java

     1 package com.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 import com.entity.Student;
    12 import com.service.StudentService;
    13 import com.service.impl.StudentServiceImpl;
    14 
    15 public class DeleteSerlvet extends HttpServlet {
    16     public void doGet(HttpServletRequest request, HttpServletResponse response)
    17             throws ServletException, IOException {
    18 
    19         this.doPost(request, response);
    20     }
    21 
    22     public void doPost(HttpServletRequest request, HttpServletResponse response)
    23             throws ServletException, IOException {
    24         request.setCharacterEncoding("UTF-8");
    25         response.setCharacterEncoding("UTF-8");
    26         response.setContentType("text/html;charset=UTF-8");
    27 
    28         // 2.接受参数
    29         Integer sid=Integer.valueOf(request.getParameter("sid"));
    30         // 3.业务处理
    31         StudentService service = new StudentServiceImpl();
    32         Student stu=service.findById(sid);
    33         if (stu != null) {
    34             System.out.println("根据id查询成功");
    35              int num=service.delete(stu);
    36              if(num>0){
    37                  System.out.println("delete success!!");
    38                  // 4.页面跳转
    39                  response.sendRedirect("FindAllServlet");
    40                  
    41              }else{
    42                  System.out.println("delete success!!");
    43                  
    44              }
    45         } else {
    46             System.out.println("根据id查询失败!");
    47 
    48         }
    49 
    50     }
    51 
    52 }
    DeleteSerlvet.java

    1.26 点击第一条删除

    1.26 在项目的src下的com.servlet包下创建FindPageServlet.java

     1 package com.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 import java.util.ArrayList;
     6 import java.util.Hashtable;
     7 import java.util.List;
     8 
     9 import javax.servlet.ServletException;
    10 import javax.servlet.http.HttpServlet;
    11 import javax.servlet.http.HttpServletRequest;
    12 import javax.servlet.http.HttpServletResponse;
    13 
    14 import org.codehaus.jackson.map.ObjectMapper;
    15 
    16 import com.entity.Student;
    17 import com.page.Page;
    18 import com.service.StudentService;
    19 import com.service.impl.StudentServiceImpl;
    20 
    21 /**
    22  * 分页查询
    23  * 
    24  * @author pc
    25  * 
    26  */
    27 public class FindPageServlet extends HttpServlet {
    28 
    29     public void doGet(HttpServletRequest request, HttpServletResponse response)
    30             throws ServletException, IOException {
    31 
    32         this.doPost(request, response);
    33     }
    34 
    35     public void doPost(HttpServletRequest request, HttpServletResponse response)
    36             throws ServletException, IOException {
    37         response.setContentType("text/html;charset=UTF-8");
    38         request.setCharacterEncoding("UTF-8");
    39         response.setCharacterEncoding("UTF-8");
    40         /**
    41          * ☆
    42          * 在使用ajax往前台通过输出流对象的print方法发送json时
    43          * 该行获取输出流对象的代码必须放在
    44          * response.setContentType("text/html;charset=UTF-8");
    45          * 之后,否则ajax回调时,页面拿到的中文数据就永远都是乱码,
    46          * 原因是:如果将改行代码写在处理客户端乱码之前,表示编码格式已经确定,
    47          * 所以,编码格式的处理应该放在获取PrintWriter对象之前
    48          * 
    49          */
    50         PrintWriter out=response.getWriter();
    51         
    52 
    53         // 2.接受参数
    54         String no=request.getParameter("pageNo");
    55         
    56 
    57         // 3.业务处理
    58         StudentService service = new StudentServiceImpl();
    59         
    60         int pageSize=3; //页面大小
    61         int pageNo=1; //默认的pageNo为1
    62         if(no!=null && no!=""){
    63             pageNo=Integer.valueOf(no);
    64         }
    65         //获取总条数
    66         int totalCount=service.getTotalCount();
    67         //封装分页所需字段
    68         Page page=new Page(pageSize, pageNo, totalCount);
    69         //分页查询
    70         List<Student> list = service.findPage(page);
    71         
    72         ObjectMapper om=new ObjectMapper();
    73         String str=om.writeValueAsString(list);
    74         String pagestr=om.writeValueAsString(page);
    75         str="{"page":"+pagestr+","list":"+str+"}";
    76         System.out.println(str);
    77         
    78         out.print(str);
    79         /*if (list != null) {
    80             System.out.println("find page success");
    81             request.setAttribute("list", list);
    82             request.setAttribute("page", page);
    83             request.getRequestDispatcher("index.jsp").forward(request, response);
    84         } else {
    85             System.out.println("find page fail!");
    86 
    87         }*/
    88 
    89     }
    90 
    91 }
    FindPageServlet.java

    1. 27 在项目WebRoot下创建ajaxindex.jsp

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
     3 <%
     4     String path = request.getContextPath();
     5     String basePath = request.getScheme() + "://"
     6             + request.getServerName() + ":" + request.getServerPort()
     7             + path + "/";
     8 %>
     9 
    10 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    11 <html>
    12     <head>
    13         <base href="<%=basePath%>">
    14 
    15         <title>My JSP 'index.jsp' starting page</title>
    16         <meta http-equiv="pragma" content="no-cache">
    17         <meta http-equiv="cache-control" content="no-cache">
    18         <meta http-equiv="expires" content="0">
    19         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    20         <meta http-equiv="description" content="This is my page">
    21         <!--
    22     <link rel="stylesheet" type="text/css" href="styles.css">
    23     -->
    24     <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
    25     <script type="text/javascript" src="js/ajaxindex.js"></script>
    26     </head>
    27 
    28     <body>
    29     <CENTER>
    30        
    31         <table></table>
    32         <div> 
    33<span id="pageNo"></span>/<span id="totalPage"></span>&nbsp;&nbsp;
    34             <a href="javascript:void(0);" class="apage">首页</a>  &nbsp;&nbsp;
    35             <a href="javascript:void(0);" class="apage">上一页</a> &nbsp;&nbsp;
    36             <a href="javascript:void(0);" class="apage">下一页</a> &nbsp;&nbsp;
    37             <a href="javascript:void(0);" class="apage">末页</a>&nbsp;&nbsp;
    38<span id="totalCount"></span>39         </div>
    40         
    41     </CENTER>
    42         
    43     </body>
    44 </html>
    ajaxindex.jsp

    1.28 在项目WebRoot下的WEB-INF下的web.xml中配置servlet

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.5" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     7   <servlet>
     8     <servlet-name>LoginServlet</servlet-name>
     9     <servlet-class>com.servlet.LoginServlet</servlet-class>
    10   </servlet>
    11   <servlet-mapping>
    12     <servlet-name>LoginServlet</servlet-name>
    13     <url-pattern>/LoginServlet</url-pattern>
    14   </servlet-mapping>
    15   <servlet>
    16     <servlet-name>FindAllServlet</servlet-name>
    17     <servlet-class>com.servlet.FindAllServlet</servlet-class>
    18   </servlet>
    19  <servlet-mapping>
    20     <servlet-name>FindAllServlet</servlet-name>
    21     <url-pattern>/FindAllServlet</url-pattern>
    22   </servlet-mapping>
    23     <servlet>
    24     <servlet-name>RegisterServlet</servlet-name>
    25     <servlet-class>com.servlet.RegisterServlet</servlet-class>
    26   </servlet>
    27   <servlet-mapping>
    28     <servlet-name>RegisterServlet</servlet-name>
    29     <url-pattern>/RegisterServlet</url-pattern>
    30   </servlet-mapping>
    31  
    32  
    33   <servlet>
    34     <servlet-name>FindByIdSerlvet</servlet-name>
    35     <servlet-class>com.servlet.FindByIdSerlvet</servlet-class>
    36   </servlet>
    37      <servlet-mapping>
    38     <servlet-name>FindByIdSerlvet</servlet-name>
    39     <url-pattern>/FindByIdSerlvet</url-pattern>
    40   </servlet-mapping>
    41   
    42   <servlet>
    43     <servlet-name>UpdateServlet</servlet-name>
    44     <servlet-class>com.servlet.UpdateServlet</servlet-class>
    45   </servlet>
    46  <servlet-mapping>
    47     <servlet-name>UpdateServlet</servlet-name>
    48     <url-pattern>/UpdateServlet</url-pattern>
    49   </servlet-mapping>
    50    <servlet>
    51     <servlet-name>DeleteSerlvet</servlet-name>
    52     <servlet-class>com.servlet.DeleteSerlvet</servlet-class>
    53   </servlet>
    54   
    55   <servlet-mapping>
    56     <servlet-name>DeleteSerlvet</servlet-name>
    57     <url-pattern>/DeleteSerlvet</url-pattern>
    58   </servlet-mapping>
    59    <servlet>
    60     <servlet-name>FindPageServlet</servlet-name>
    61     <servlet-class>com.servlet.FindPageServlet</servlet-class>
    62   </servlet>
    63   <servlet-mapping>
    64     <servlet-name>FindPageServlet</servlet-name>
    65     <url-pattern>/FindPageServlet</url-pattern>
    66   </servlet-mapping> 
    67   
    68   <welcome-file-list>
    69     <welcome-file>login.jsp</welcome-file>
    70   </welcome-file-list>
    71 </web-app>
    web.xml

    1.29 在项目WebRoot下的js文件中创建ajaxindex.js

      1 $(function() {
      2     /*1.获取页面上span标签中显示的pageNo的值
      3      * 因为第一次span标签里没有,所以为空,
      4      * 此时后台因为前台接到的是空,后台就会默认给1,
      5      * 然后再返回前台页面,
      6      * 所以第一次使用ajax回调时pageNo传过去为null,
      7      * 第二次是页面点击分页超链接重新赋值pageNo
      8      * 所以这里ajax第一次访问和点击分页查询可以提取成一个方法
      9      */
     10     var pageNo = $("#pageNo").text();
     11 
     12     /*
     13      * 2.ajax第一次通过页面去后台服务器回调数据
     14      * 调用ajax公共函数实现回调(第一次访问参数是null,
     15      * 等第一次访问从后代服务器回来时,将会带一个pageNo的值回来,
     16      * 然后将该值放入分页的span标签id为pageNo中,
     17      * 所以第二次访问的pageNo就有值了,该值是上一次访问从后台带回来的值
     18      */
     19     getAjaxPage(pageNo);
     20 
     21     /*
     22      * 3.超链接分页查询
     23      * ajax非第一次去后台获取数据
     24      */
     25     $(".apage").click(function() {
     26         /*
     27          * 3.1获取pageNo的值
     28          * 获取的是上一次回调过后放在id为pageNo的span标签的值
     29          */
     30         var pageNo = parseInt($("#pageNo").text());
     31         /*
     32          * 3.2 获取totalPage的值
     33          * 获取的是上一次回调过后放在id为totalPage的span标签的值
     34          */
     35         var totalPage = parseInt($("#totalPage").text());
     36 
     37         /*
     38          * 3.3获取分页超链接的文本
     39          * 因为要判断是首页?上一页?下一页?末页?
     40          * 从而重新给pageNo设值
     41          */
     42         var pagetext = $(this).html();
     43         //去 alert(pagetext);
     44 
     45             /*
     46              * 4.判断是首页?上一页?下一页?末页?
     47              * 从而重新给pageNo设值
     48              * */
     49             if (pagetext == "首页") {
     50                 pageNo = 1;
     51             } else if (pagetext == "上一页") {
     52                 if (pageNo > 1) {
     53                     pageNo = pageNo - 1;
     54                 } else {
     55                     alert("已经是第一页了!");
     56                     //如果已经是第一页了,则不容许接下来的操作再进行所以return
     57                     return;
     58                 }
     59             } else if (pagetext == "下一页") {
     60                 if (pageNo < totalPage) {
     61                     pageNo = pageNo + 1;
     62                 } else {
     63                     alert("已经是最后一页了!");
     64                     //如果已经是最后一页了,则不容许接下来的操作再进行所以return
     65                     return;
     66                 }
     67             } else if (pagetext == "末页") {
     68                 pageNo = totalPage;
     69             }
     70 
     71             //去 alert("pageNo:"+pageNo);
     72             /*
     73              * 5.调用ajax公共函数实现回调
     74              * 注意:此时调用时非第一次调用,而且pageNo是肯定有值的
     75              */
     76             getAjaxPage(pageNo);
     77 
     78         });
     79 
     80 });
     81 
     82 /*二. ajax异步分页公共函数*/
     83 function getAjaxPage(pageNo) {
     84     /**
     85      * url:要回调的地址
     86      * type:是请求的方式,post或get
     87      * dataType:是回调函数得到的数据类型
     88      * data:表示的发到后台的的参数,
     89      * 后台回去的时候是通过request.getParameter("key")获取
     90      * 参数名建议用双引号引起来
     91      * contenttype:设置页面发送到后台服务器的文字进行乱码处理
     92      * async:ajax异步属性,默认值为true表示异步,为false表示同步
     93      * success:表示数据成功回调后处理的函数,obj是承载后台数据的参数默认是Object类型
     94      * error:表示数据回调失败的处理的函数, 
     95      * 
     96      */
     97     $.ajax( {
     98         url:'FindPageServlet',
     99         type:'post',
    100         dataType:'json',
    101         data:{"pageNo":pageNo},
    102         async:true,
    103         contenttype:"application/x-www-form-urlencoded;charset=UTF-8",
    104         success:function(obj) {
    105             /*
    106              * 2.1 由于每一次回调的数据不一样,但却是放在同一个table标签中
    107              * 所以在每次添加新数据之前,要将上一次内容清空,再添加新的
    108              */
    109             $("table").html(" ");
    110             
    111             /*
    112              * 2.2 获取后台回来的pageNo的值,
    113              * 并添加到页面id为pageNo的span标签中,
    114              * 以备下一次点击分页超链接时使用*/
    115             //var pageNo = obj.page[0].pageno;
    116             var pageNo = obj.page.pageno;
    117             $("#pageNo").text(pageNo);
    118             
    119             /*
    120              * 2.3 获取后台回来的totalPage的值,
    121              * 并添加到页面id为totalPage的span标签中,
    122              * 以备下一次点击分页超链接时使用*/
    123             //var totalPage = obj.page[0].totalpage;
    124             var totalPage = obj.page.totalpage;
    125             $("#totalPage").text(totalPage);
    126             
    127             /*
    128              * 2.4 获取后台回来的totalCount的值,
    129              * 并添加到页面id为totalCount的span标签中,
    130              * 以备下一次点击分页超链接时使用*/
    131             //var totalCount = obj.page[0].totalcount;
    132             var totalCount = obj.page.totalcount;
    133             $("#totalCount").text(totalCount);
    134             
    135             /*
    136              * 2.5 拼接table行数据*/
    137             str = "<tr><td><a href='register.jsp'>注册</a><td></tr>";
    138             str += "<tr><td>序号</td><td>姓名</td><td>性别</td><td>操作</td></tr>";
    139             
    140             /*2.6
    141              * 循环后台回调的list对象数组中的数据,
    142              * 并将数据取出拼接成tr行进行显示
    143              * */
    144             $.each(obj.list, function(i) {
    145                 str += "<tr><td>" + obj.list[i].sid + "</td><td>"
    146                         + obj.list[i].sname + "</td><td>" + obj.list[i].sex
    147                         + "</td><td><a href='FindByIdSerlvet?sid="+obj.list[i].sid+"'>修改</a>&nbsp;&nbsp;<a href=''>删除</a></td></tr>";
    148             });
    149             
    150             /*2.7 将拼接好的数据行放入table中*/
    151             $("table").append(str);
    152         },
    153         error : function() {
    154             alert("error");
    155         }
    156     });
    157 }
    ajaxindex.js

    1.30 运行页面

  • 相关阅读:
    我的五年百度博客文章列表
    servlet过滤器2 解决用户非法在线 filter
    flexpaper实例在浏览器无法显示的解决办法
    我的五年百度博客文章列表(带链接版)
    servlet过滤器1 解决字符集乱码 filter
    GBK和UTF8之间的战争,websphere6.1乱码解决方案
    ORACLE SQL性能优化系列 (一)
    ORACLE SQL性能优化系列 (四)
    Oracle优化SQL查询优化研究
    用SQL*Loader将Excel数据导出到Oracle
  • 原文地址:https://www.cnblogs.com/holly8/p/5756284.html
Copyright © 2020-2023  润新知