Java理论和实践:了解泛型和实例

    技术2022-05-20  59

    单态模式实现分页

       步骤如下

         首先,创建一个web项目  例如:2011firstweb

         其次,创建包命

                  创建所需包命  如:

                  1.cn.csdn.domain(主要封装bean)

                  2.cn.csdn.util(工具类)

                  3,cn.csdn.web.dao(主要写dao方法)

                   4,cn.csdn.web.serivice(主要连接服务)

                   5.cn.csdn.web.servlet(主要封装请求)

        三 ,进入编程阶段

               1,创建一个连接数据库类  如:DBConn

                     package cn.csdn.util;

    import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;

    import com.mysql.jdbc.Connection;

    public class DBConn {  private static Connection conn; private DBConn(){} public static Connection getConn(){  if(conn==null){   try {    Class.forName("com.mysql.jdbc.Driver");    try {     conn=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/db?user=root&password=123&useUnicode=true&characterEncoding=utf8");    } catch (SQLException e) {     // TODO Auto-generated catch block     e.printStackTrace();    }   } catch (ClassNotFoundException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }        }  return conn; } //关闭 public static void coles(ResultSet rs,PreparedStatement pstmt){  if(rs!=null){  try {   rs.close();  } catch (SQLException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }  }  if(pstmt!=null){  try {   pstmt.close();  } catch (SQLException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }    } }  public static void main(String[] args) {  DBConn.getConn(); }

    }     2.封装数据 

    package cn.csdn.domain;

    public class Student { public Student() { }

     public Student(String name, int age, String email) {          this.name=name;          this.age=age;          this.email=email;           }

     private int id; private String name; private String email; private int age; public int getId() {  return id; }

     public void setId(int id) {  this.id = id; }

     public String getName() {  return name; }

     public void setName(String name) {  this.name = name; }

     public String getEmail() {  return email; }

     public void setEmail(String email) {  this.email = email; }

     public int getAge() {  return age; }

     public void setAge(int age) {  this.age = age; }

       3.写DAO方法

           接口类

         package cn.csdn.web.dao;

    import java.util.List;

    import cn.csdn.domain.Student;

    public interface StudentDao { int getCountRecord(); int getCountPage(); List<Student> getNowPageInfo(int nowpage);

    }   方法 

       package cn.csdn.web.dao;

    import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;

     

    import cn.csdn.domain.Student;import cn.csdn.util.DBConn;

    public class StudentDaoImpl implements StudentDao { private Connection conn; private PreparedStatement pstmt; private ResultSet rs; private static final int PAGESIZE = 5;

     // 获取总页数 public int getCountPage() {

      return getCountRecord() % PAGESIZE == 0 ? getCountRecord() / PAGESIZE    : getCountRecord() / PAGESIZE + 1; }

     // 获取总信息 public int getCountRecord() {  // 定义返回变量  int countrecord = 0;  // 创建数据库连接  conn = DBConn.getConn();  //  String sql = "select count(*) from student";  try {   pstmt = conn.prepareStatement(sql);   rs = pstmt.executeQuery();   if (rs.next()) {    countrecord = rs.getInt(1);

       }  } catch (SQLException e) {   // TODO Auto-generated catch block   e.printStackTrace();  } finally {

       DBConn.coles(rs, pstmt);  }

      return countrecord; }

     public List<Student> getNowPageInfo(int nowpage) {  List<Student> allentities = new ArrayList<Student>();  conn = DBConn.getConn();  String sql = "select id,name,age,email from student limit ?,?";  try {   pstmt = conn.prepareStatement(sql);   int index = 1;   pstmt.setInt(index++, (nowpage-1)*PAGESIZE);   pstmt.setInt(index++, PAGESIZE);   rs = pstmt.executeQuery();   while (rs.next()) {    Student entity = new Student();    entity.setId(rs.getInt("id"));    entity.setAge(rs.getInt("age"));    entity.setName(rs.getString("name"));    entity.setEmail(rs.getString("email"));    allentities.add(entity);

       }  } catch (SQLException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }finally{   DBConn.coles(rs, pstmt);     }  return allentities; }     public static void main(String[] args) {      StudentDaoImpl sdi = new StudentDaoImpl();     /* int  countecord=sdi.getCountRecord();      System.out.println(countecord);      System.out.println(sdi.getCountPage());*/     List<Student> allentities=sdi.getNowPageInfo(2);     for(Student entity:allentities){      System.out.println(entity.getAge());           } }}  4,连接服务

          服务接口

    package cn.csdn.web.service;

    import java.util.List;

    import cn.csdn.domain.Student;

    public interface StudentService { int getCountRecord(); //获取总页数 int getCountPage(); //获取当前页的信息 List<Student> getNowPageInfo(int nowpage);} 方法

      package cn.csdn.web.service;

    import java.util.List;

    import cn.csdn.domain.Student;import cn.csdn.web.dao.StudentDaoImpl;

    public class StudentServiceImpl implements StudentService { private StudentDaoImpl sdi = new StudentDaoImpl();

     public int getCountPage() {  // TODO Auto-generated method stub  System.out.println("-----");  return sdi.getCountPage();   }

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

     public List<Student> getNowPageInfo(int nowpage) {  // TODO Auto-generated method stub  return sdi.getNowPageInfo(nowpage); }

     public static void main(String[] args) {  StudentServiceImpl ass=new StudentServiceImpl();  ass.getCountPage(); }}5,封装请求

       package cn.csdn.web.servlet;

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

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

    import cn.csdn.domain.Student;import cn.csdn.web.service.StudentServiceImpl;

    public class ListStudentsServlet extends HttpServlet {

     /**  *   */ private static final long serialVersionUID = 4438133059395214446L;

     @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp)   throws ServletException, IOException {  this.doPost(req, resp); }

     @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp)   throws ServletException, IOException {        //1、设置编码  req.setCharacterEncoding("UTF-8");  //2、获取当前页  //定义当前页的变量  int nowpage =1;  String npage = req.getParameter("nowpage");    if(npage!=null){   nowpage = Integer.parseInt(npage);  }      //3、创业业务操作的实现类的对象  StudentServiceImpl ssi = new StudentServiceImpl();    int lastpage = ssi.getCountPage();  List<Student> allentities = ssi.getNowPageInfo(nowpage);      //存入当前页  最后一页  当前页的记录信息  req.setAttribute("nowpage", nowpage);  req.setAttribute("lastpage", lastpage);  req.setAttribute("allentities", allentities);        req.getRequestDispatcher("fend.jsp").forward(req, resp); }

    }

    6,创建JSP/HTML

     

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0">     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> -->  </head>    <body>    <h1><a href="listStudents.do">查询所有学生信息</a></h1>  </body></html>

          跳转页面

       <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'sc.jsp' starting page</title>     <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0">     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> -->

      </head>    <body>         <div align="center">           <h1>显示所有的学员信息</h1>          <table border="1px" cellpadding="0" cellspacing="0">             <caption>学员信息</caption>           <tr>              <th>全选</th>              <th>序列</th>              <th>姓名</th>              <th>年龄</th>              <th>邮箱</th>              <th>操作</th>           </tr>                     <c:forEach items="${allentities}" var="entity">           <tr>              <td><input type="checkbox" name="chk"/></td>              <td>${entity.id}</td>              <td>${entity.name}</td>              <td>${entity.age}</td>              <td>${entity.email}</td>              <td>编辑|删除</td>           </tr>          </c:forEach>           </table>                    <div>              <span><a href="./listStudents.do?nowpage=1">首页</a></span>              <span><a href="./listStudents.do?nowpage=${nowpage-1}">上一页</a></span>              <span><a href="./listStudents.do?nowpage=${nowpage+1}">下一页</a></span>              <span><a href="./listStudents.do?nowpage=${lastpage}">最后一页</a></span>          </div>       </div>               </body></html>

    创建数据库

    /*Column Information For - db.student*/---------------------------------------

    Field   Type         Collation        Null    Key     Default  Extra           Privileges                       Comment------  -----------  ---------------  ------  ------  -------  --------------  -------------------------------  -------id      int(11)      (NULL)           NO      PRI     (NULL)   auto_increment  select,insert,update,references         name    varchar(40)  utf8_general_ci  YES             (NULL)                   select,insert,update,references         age     int(11)      (NULL)           YES             (NULL)                   select,insert,update,references         email   varchar(50)  utf8_general_ci  YES             (NULL)                   select,insert,update,references        

    /*Index Information For - db.student*/--------------------------------------

    Table    Non_unique  Key_name  Seq_in_index  Column_name  Collation  Cardinality  Sub_part  Packed  Null    Index_type  Comment-------  ----------  --------  ------------  -----------  ---------  -----------  --------  ------  ------  ----------  -------student           0  PRIMARY              1  id           A                   19    (NULL)  (NULL)          BTREE             

    /*DDL Information For - db.student*/------------------------------------

    Table    Create Table                             -------  -----------------------------------------student  CREATE TABLE `student` (                            `id` int(11) NOT NULL auto_increment,             `name` varchar(40) default NULL,                  `age` int(11) default NULL,                       `email` varchar(50) default NULL,                 PRIMARY KEY  (`id`)                             ) ENGINE=InnoDB DEFAULT CHARSET=utf8    

     

    7,发布启动服务

    QQ:


    最新回复(0)