1.创建一个web工程

2.导入jar包

3.创建Student表

4.创建实体类

  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. }

5.配置映射文件

  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. <!--1.实体类的字段和数据库的字段一一映射
  5. name:实体类的全名
  6. table:对应的数据库表名,默认值为类名
  7. -->
  8. <class name="com.entity.Student" table="STUDENT">
  9.  
  10. <!--1.1主键配置
  11. id:对应表中的主键
  12. name:实体类中的属性名
  13. type:主键属性的数据类型
  14. column:属性名对应表的字段名,默认值为属性名-->
  15. <id name="sid" type="java.lang.Integer" column="SID">
  16.  
  17. <!--generator:为持久化实例产生一个唯一标识-->
  18. <generator class="sequence">
  19.  
  20. <!--数据库的序列名-->
  21. <param name="sequence">SEQ_STUDENT</param>
  22. </generator>
  23. </id>
  24.  
  25. <!--1.2普通字段配置-->
  26. <property name="sname" type="java.lang.String" column="SNAME"/>
  27. <property name="password" type="java.lang.String" column="PASSWORD"/>
  28. <property name="sex" type="java.lang.String" column="SEX"/>
  29. <property name="cid" type="java.lang.Integer" column="CID"/>
  30. </class>
  31. </hibernate-mapping>

6.配置主配置文件

  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.  
  5. <!--通常一个session-factory节点代表一个数据库-->
  6. <session-factory>
  7. <!--1.配置数据库的驱动-->
  8. <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
  9.  
  10. <!--2.配置数据库的url地址-->
  11. <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
  12.  
  13. <!--3,配置数据库的username-->
  14. <property name="connection.username">holly</property>
  15.  
  16. <!--4.配置数据库的密码-->
  17. <property name="connection.password">sys</property>
  18.  
  19. <!--5.配置数据库的方言-->
  20. <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
  21.  
  22. <!--6.显示sql语句-->
  23. <property name="show_sql">true</property>
  24.  
  25. <!--7.sql语句格式化-->
  26. <property name="format_sql">true</property>
  27.  
  28. <!--8.加载映射文件-->
  29. <mapping resource="com/entity/Student.hbm.xml"/>
  30. </session-factory>
  31. </hibernate-configuration>

7.创建一个工具类

  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. }

8.创建分页实体类

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

9.创建Dao类

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

10.实现Dao接口

  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. * 根据id主键查询单条
  58. */
  59. public Student findById(Integer sid) {
  60. //1.获取session对象
  61. Session session=Hibernate_Util.getSession();
  62. //2.利用session根据主键查询
  63. Student stu=(Student) session.get(Student.class, sid);
  64. /*3.
  65. * 因为在修改时要提前查询单条,和session关联已经变成持久化对象,
  66. * 而在修改时session执行update方法时,
  67. * 首先会查询该主键id是否存在,
  68. * 如果存在,则根据主键id修改该对象,此时对象已经处于持久化对象,
  69. * 而实际session中不能同时存在两个主键id相同的对象,
  70. * 否则会出现如下错误:
  71. * org.hibernate.NonUniqueObjectException:
  72. * a different object with the same identifier
  73. * value was already associated with the
  74. * session: [com.entity.Student#1]
  75. */
  76. Hibernate_Util.closeSession();
  77. // session.clear();
  78. return stu;
  79. }
  80. /**
  81. * 删除对象
  82. */
  83. public int delete(Student stu) {
  84. int num=1;
  85. //1.获取session对象
  86. Session session=Hibernate_Util.getSession();
  87.  
  88. try {
  89. //session删除操作
  90. session.delete(stu);
  91. session.beginTransaction().commit();
  92. } catch (HibernateException e) {
  93. num=0;
  94. // TODO Auto-generated catch block
  95. e.printStackTrace();
  96. }finally{
  97. //5.释放资源
  98. Hibernate_Util.closeSession();
  99. }
  100.  
  101. return num;
  102. }
  103. /**
  104. * 添加
  105. */
  106. public int save(Student stu) {
  107. int num=1;
  108. //1.获取session对象
  109. Session session=Hibernate_Util.getSession();
  110. //执行操作
  111. try {
  112. session.save(stu);
  113. session.beginTransaction().commit();
  114. } catch (HibernateException e) {
  115. num=0;
  116. e.printStackTrace();
  117. }finally{
  118. //5.释放资源
  119. Hibernate_Util.closeSession();
  120. }
  121. return num;
  122. }
  123. /**
  124. * 修改
  125. */
  126. public int update(Student stu) {
  127. int num=1;
  128. //1.获取session对象
  129. Session session=Hibernate_Util.getSession();
  130. try {
  131. //执行操作
  132. //该对象的主键id必须存在
  133. session.update(stu);
  134. session.beginTransaction().commit();
  135. } catch (HibernateException e) {
  136. num=0;
  137. e.printStackTrace();
  138. }finally{
  139. //5.释放资源
  140. Hibernate_Util.closeSession();
  141. }
  142. return num;
  143. }
  144. /**
  145. * 7.分页查询
  146. */
  147. public List<Student> findPage(Page page) {
  148. //1.获取session
  149. Session session=Hibernate_Util.getSession();
  150.  
  151. //2.定义查询最大记录数的hql
  152. String hql="from Student";
  153.  
  154. //3.定义查询最大记录数的Query对象
  155. Query querypage=session.createQuery(hql);
  156.  
  157. //4.查询最大记录数的数据
  158. querypage.setMaxResults(page.getPagesize());
  159.  
  160. //5.确定查询起点
  161. querypage.setFirstResult(page.getStartrow());
  162.  
  163. //6.分页查询
  164. List<Student> list=querypage.list();
  165.  
  166. //7.关闭session
  167. Hibernate_Util.closeSession();
  168.  
  169. return list;
  170. }
  171. /**
  172. * 8.查询总条数
  173. */
  174. public int getTotalCount() {
  175. //1.获取session
  176. Session session=Hibernate_Util.getSession();
  177.  
  178. //2.定义查询总条数hql语句
  179. String hqlcount="select count(*) from Student";
  180.  
  181. //3.利用Session创建Query对象
  182. Query querycount=session.createQuery(hqlcount);
  183.  
  184. //4.获取总条数(返回单行数据uniqueResult())
  185. Integer totalCount=Integer.parseInt(querycount.uniqueResult().toString());
  186. //5.释放资源
  187. Hibernate_Util.closeSession();
  188. return totalCount;
  189. }
  190.  
  191. }

11.创建业务层的接口

  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. }

12.实现业务层接口

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

13.创建Servlet类

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

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

代码

  1. package com.servlet;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9.  
  10. import com.entity.Student;
  11. import com.service.StudentService;
  12. import com.service.impl.StudentServiceImpl;
  13.  
  14. public class LoginServlet extends HttpServlet {
  15. private static final long serialVersionUID = 1L;
  16.  
  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. String sname=request.getParameter("sname");
  31. String password=request.getParameter("password");
  32. //3.业务处理
  33. StudentService service=new StudentServiceImpl();
  34. Student stu=service.login(sname, password);
  35. if(stu!=null){
  36. System.out.println("login success!");
  37. //4.页面跳转
  38. request.getSession().setAttribute("sname", sname);
  39. response.sendRedirect("FindAllServlet");
  40. }else{
  41. System.out.println("login fail!");
  42.  
  43. }
  44. }
  45.  
  46. }
  1. package com.servlet;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9.  
  10. import com.entity.Student;
  11. import com.service.StudentService;
  12. import com.service.impl.StudentServiceImpl;
  13. import com.util.Hibernate_Util;
  14.  
  15. public class FindByIdSerlvet extends HttpServlet {
  16. private static final long serialVersionUID = 1L;
  17.  
  18. public void doGet(HttpServletRequest request, HttpServletResponse response)
  19. throws ServletException, IOException {
  20.  
  21. this.doPost(request, response);
  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. Integer sid=Integer.valueOf(request.getParameter("sid"));
  32.  
  33. // 3.业务处理
  34. StudentService service = new StudentServiceImpl();
  35.  
  36. Student stu=service.findById(sid);
  37. System.out.println("stu:"+stu);
  38. if(stu!=null){
  39. System.out.println("根据id查询到对象");
  40. request.setAttribute("stu", stu);
  41. request.getRequestDispatcher("update.jsp").forward(request, response);
  42. }else{
  43. System.out.println("没有根据id查询到对象");
  44. }
  45. }
  46. }
  1. package com.servlet;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9.  
  10. import com.entity.Student;
  11. import com.service.StudentService;
  12. import com.service.impl.StudentServiceImpl;
  13.  
  14. public class UpdateServlet extends HttpServlet {
  15. private static final long serialVersionUID = 1L;
  16.  
  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. String sname = request.getParameter("sname");
  32. String password = request.getParameter("password");
  33. String sex = request.getParameter("sex");
  34. Integer cid=Integer.valueOf(request.getParameter("cid"));
  35. Student stu=new Student(sid,sname, password, sex, cid);
  36.  
  37. // 3.业务处理
  38. StudentService service = new StudentServiceImpl();
  39. int num=service.update(stu);
  40. if(num>0){
  41. System.out.println("update success!");
  42. response.sendRedirect("FindAllServlet");
  43. }else{
  44. System.out.println("update fail!");
  45. }
  46. }
  47. }
  1. package com.servlet;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9.  
  10. import com.entity.Student;
  11. import com.service.StudentService;
  12. import com.service.impl.StudentServiceImpl;
  13.  
  14. public class DeleteSerlvet extends HttpServlet {
  15. private static final long serialVersionUID = 1L;
  16.  
  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. // 3.业务处理
  32. StudentService service = new StudentServiceImpl();
  33. Student stu=service.findById(sid);
  34. if (stu != null) {
  35. System.out.println("根据id查询成功");
  36. int num=service.delete(stu);
  37. if(num>0){
  38. System.out.println("delete success!!");
  39. // 4.页面跳转
  40. response.sendRedirect("FindAllServlet");
  41.  
  42. }else{
  43. System.out.println("delete success!!");
  44.  
  45. }
  46. } else {
  47. System.out.println("根据id查询失败!");
  48. }
  49. }
  50. }

14.配置web.xml

  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.  
  8. <servlet>
  9. <servlet-name>LoginServlet</servlet-name>
  10. <servlet-class>com.servlet.LoginServlet</servlet-class>
  11. </servlet>
  12. <servlet>
  13. <servlet-name>FindAllServlet</servlet-name>
  14. <servlet-class>com.servlet.FindAllServlet</servlet-class>
  15. </servlet>
  16. <servlet>
  17. <servlet-name>FindByIdSerlvet</servlet-name>
  18. <servlet-class>com.servlet.FindByIdSerlvet</servlet-class>
  19. </servlet>
  20. <servlet>
  21. <servlet-name>UpdateServlet</servlet-name>
  22. <servlet-class>com.servlet.UpdateServlet</servlet-class>
  23. </servlet>
  24. <servlet>
  25. <servlet-name>DeleteSerlvet</servlet-name>
  26. <servlet-class>com.servlet.DeleteSerlvet</servlet-class>
  27. </servlet>
  28. <servlet>
  29. <servlet-name>RegisterServlet</servlet-name>
  30. <servlet-class>com.servlet.RegisterServlet</servlet-class>
  31. </servlet>
  32. <servlet>
  33. <servlet-name>FindPageServlet</servlet-name>
  34. <servlet-class>com.servlet.FindPageServlet</servlet-class>
  35. </servlet>
  36.  
  37. <servlet-mapping>
  38. <servlet-name>LoginServlet</servlet-name>
  39. <url-pattern>/LoginServlet</url-pattern>
  40. </servlet-mapping>
  41. <servlet-mapping>
  42. <servlet-name>FindAllServlet</servlet-name>
  43. <url-pattern>/FindAllServlet</url-pattern>
  44. </servlet-mapping>
  45. <servlet-mapping>
  46. <servlet-name>FindByIdSerlvet</servlet-name>
  47. <url-pattern>/FindByIdSerlvet</url-pattern>
  48. </servlet-mapping>
  49. <servlet-mapping>
  50. <servlet-name>UpdateServlet</servlet-name>
  51. <url-pattern>/UpdateServlet</url-pattern>
  52. </servlet-mapping>
  53. <servlet-mapping>
  54. <servlet-name>DeleteSerlvet</servlet-name>
  55. <url-pattern>/DeleteSerlvet</url-pattern>
  56. </servlet-mapping>
  57. <servlet-mapping>
  58. <servlet-name>RegisterServlet</servlet-name>
  59. <url-pattern>/RegisterServlet</url-pattern>
  60. </servlet-mapping>
  61. <servlet-mapping>
  62. <servlet-name>FindPageServlet</servlet-name>
  63. <url-pattern>/FindPageServlet</url-pattern>
  64. </servlet-mapping>
  65. <welcome-file-list>
  66. <welcome-file>login.jsp</welcome-file>
  67. </welcome-file-list>
  68. </web-app>

15.首页

  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. <h3>学生信息表</h3>
  29. <table border="2">
  30. <tr>
  31. <td>
  32. 序号
  33. </td>
  34. <td>
  35. 姓名
  36. </td>
  37. <td>
  38. 性别
  39. </td>
  40. <td align="center">
  41. 操作
  42. </td>
  43. </tr>
  44.  
  45. <c:forEach var="i" items="${list}" varStatus="f">
  46. <tr <c:if test="${f.index%2==0}">style="background-color:orange;"</c:if>>
  47. <td>
  48. ${i.sid }
  49. </td>
  50. <td>
  51. ${i.sname }
  52. </td>
  53. <td>
  54. ${i.sex }
  55. </td>
  56. <td>
  57. <a href="register.jsp">添加</a>
  58. &nbsp;&nbsp;
  59. <a href="FindByIdSerlvet?sid=${i.sid}">修改</a>
  60. &nbsp;&nbsp;
  61. <a href="DeleteSerlvet?sid=${i.sid}">删除</a>
  62.  
  63. </td>
  64. </tr>
  65. </c:forEach>
  66.  
  67. </table>
  68. <div>
  69.  
  70. 第${page.pageno}/${page.totalpage}页 &nbsp;&nbsp;
  71. <a href="FindAllServlet?pageNo=1">首页</a>
  72. <c:choose>
  73. <c:when test="${page.pageno gt 1}">
  74. <a href="FindAllServlet?pageNo=${page.pageno-1 }">上一页</a>
  75. </c:when>
  76. <c:otherwise>
  77. <a href="javascript:alert('已经是第一页了,没有上一页!');">上一页</a>
  78. </c:otherwise>
  79. </c:choose>
  80. <c:choose>
  81. <c:when test="${page.pageno lt page.totalpage}">
  82. <a href="FindAllServlet?pageNo=${page.pageno+1 }">下一页</a>
  83. </c:when>
  84. <c:otherwise>
  85. <a href="javascript:alert('已经是最有一页了,没有下一页!');">下一页</a>
  86. </c:otherwise>
  87. </c:choose>
  88.  
  89. <a href="FindAllServlet?pageNo=${page.totalpage}">末页</a>
  90. &nbsp;&nbsp;
  91. 共${page.totalcount}条
  92.  
  93. </div>
  94.  
  95. </CENTER>
  96.  
  97. </body>
  98. </html>

16.登录页面

  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="width: 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>

17.注册页面

  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="width: 500px;">
  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>

18.修改

  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="width: 500px;">
  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>

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

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

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

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

    公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...

  2. SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)

    前言 说起整合自然离开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4. ...

  3. node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)

    最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. Mongoose是在node.js ...

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

    1>接口(主要是增删改查的接口)BaseDao.java /** * * @author fly.zhou */ public interface IBaseDao { //增加对应实体的一条记 ...

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

    (这是一个故事--) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已 ...

  6. Hibernate的增删改查

    一.搭建Hibernate开发环境,这里就不说了,直接说环境搭好后的事情. 二.项目的目录结构

  7. hibernate之增删改查demo

    package dao; import java.util.ArrayList; import java.util.List; import org.hibernate.Query; import o ...

  8. Hibernate基础增删改查语法

    1.创建好Hibernate项目,创建好实体类和测试类,如果不会创建Hibernate项目的同学,点此处:http://www.cnblogs.com/zhaojinyan/p/9336174.htm ...

  9. graphql 数据增删改查分页及关联操作(三)

    说明: 接第二篇文章,代码也是在第二篇文章之上 本文只是针对mondodb来操作 一.添加相关的包 yarn add Mongoose 二.初始化Mongodb 修改server.ts 导入 impo ...

随机推荐

  1. 多线程条件通行工具——CountDownLatch

    CountDownLatch的作用是,线程进入等待后,需要计数器达到0才能通行. CountDownLatch(int)构造方法,指定初始计数. await()等待计数减至0. await(long, ...

  2. canvas快速绘制圆形、三角形、矩形、多边形

    想看前面整理的canvas常用API的同学可以点下面: canvas学习之API整理笔记(一) canvas学习之API整理笔记(二) 本系列文章涉及的所有代码都将上传至:项目代码github地址,喜 ...

  3. sqlyog导出json数据格式支持mysql数据转存mongodb

    <!-------------知识的力量是无限的(当然肯定还有更简单的方法)-----------!> 当我考虑将省市区三级联动数据从mysql转入mongodb时遇到了网上无直接插入mo ...

  4. [DJANGO] excel十几万行数据快速导入数据库研究

    先贴原来的导入数据代码: 8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.setting ...

  5. NYOJ 455

    1.应该交代清楚,参加宴会的人不知道一共有多少顶帽子.假如知道有n顶帽子的话,第一次开灯看见有n-1只,自然就知道自己是第n顶黑帽子,所以应该是这n个人在第一次关灯就打自己脸,不过这么一来就没意思了, ...

  6. 抛弃jQuery:DOM API之选择元素

    原文链接:http://blog.garstasio.com/you-dont-need-jquery/selectors/ 我的Blog:http://cabbit.me/you-dont-need ...

  7. C++ std::priority_queue

    std::priority_queue template <class T, class Container = vector<T>, class Compare = less< ...

  8. Vue2.0用components替换render报错

    怀疑是webpack配置的问题,改了一下午也没弄好.去群里问了一轮,也没个解决的. 在研究的过程中,发现了一篇好的讨论帖,看这个帖子能学到不少东西.暂时放弃这个问题的研究了,太费时间,要深入学习编译原 ...

  9. hibernate一对一主键双向关联

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  10. epoll LT/ET 深度剖析

    EPOLL事件的两种模型: Level Triggered (LT) 水平触发 .socket接收缓冲区不为空 有数据可读 读事件一直触发 .socket发送缓冲区不满 可以继续写入数据 写事件一直触 ...