自己向上——ページング


最近のすべてはすべて积み重ねていっしょにいて、事はとても多くて、本当に学ぶ时间はとても少なくて、毎日すべてあちこち奔走して、おや、これは私の想像する修仙の普通の大学の生活と异なって(1毛はすべて异なっています)、言わないで、私の自分のページの机能を実现しましょう
実現はJDBC、サーブレット、JSPによって実現されたもので、初心者は、そんなに高い方法を使うことはありません-->主にできない、読めない、読めないのは使えないに等しい.
まず基本的なファイルを構成します
//       
public class pageInformation {
     
    //    
    private int page;
    //   
    private int sumPage;
    
    public int getPage() {
     
        return page;
    }

    public void setPage(int page) {
     
        this.page = page;
    }
  
    public int getSumPage() {
     
        return sumPage;
    }

    public void setSumPage(int sumPage) {
     
        this.sumPage = sumPage;
    }

}

もう1つのオブジェクトを作成した後、SQL文を使用する必要があります.SQL文にはlimitキーワードがあります.このキーワードの後ろには2つのパラメータがあり、1つのパラメータに対して開始位置を示し、1つのパラメータに対して後ろにいくつかのデータを読み取ることを示します.また、MySQLでは0から始まることを理解する必要があります.
String sql="select * from user order by id limit 0,5";

この文は、最初から、後の5つのデータを読み出すことを示します.そこで,Nページ目のデータは,(N−1)x Qという宮殿のQから自分で設計され,いくつかのデータを下に読み,上のsql文の「5」とする式を得ることができる.この特性を知ってから、総ページの計算を始めましたが、データの総数を知っておく必要があります.後の除算演算を便利にしなければなりません.
select count(*) as count from user; 

これはSQL文で、このテーブルのデータの総量をクエリーする役割を果たし、JDBCでデータの合計数を取得することができます.
			//   number    
            //ResultSet rs=null;
       		//PreparedStatement ps=null;
       		//int number =0;
 String sql="select count(*) as count from data";
            ps=conn.prepareStatement(sql);
            rs=ps.executeQuery();
            if (rs.next()) {
     
            //       ,     int 
                number=Integer.valueOf(rs.getString("count")) ;
            }

上記の方法でデータの総量を取得できます.ここでは、データが消去できない場合、ページ数+1が必要であることを知る必要があります.そうしないと、データが消去できない場合、データの表示はいつも少ないことに気づきます.
//              ,   3        ,    
//       ,    
 if (number % 3 != 0) {
     
 //    3  ,        ,         +1
            sumUser=number/3+1;
        }else{
     
            sumUser=number/3;
        }

今私达は総ページ数、総データ量があって、それでは残りはJSPページで展示して、それではどのように展示して、私はここで一部のコードをJSPページに书くことを选んで、これは确かに私自身の间违いで、1人の合格したJavaプログラマーが自分のJSPページの上で1行のJavaコードが现れないため、私は反省して、私は検讨して、次回は本題に戻って、私はここで1つのsessionを運用して、このsessionの作用はあなたの望むページ数を伝えることで、彼の任務を完成した後についでに彼をクリアして、省の次回のページにアクセスする時sessionのと原因でアクセスするページは第1ページからではありません.
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
//       ,        XML        
@WebServlet("/paging")
public class paging extends HttpServlet {
     
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse
     resp) throws ServletException, IOException {
     
    //         
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        pageInformation pageInformation=new pageInformation();
        int page= Integer.parseInt(req.getParameter("page"));
        sumPage sumPage=new sumPage();
        //     
        pageInformation.setSumPage(sumPage.sumPage());
        if (page>=pageInformation.getSumPage()){
     
            page=pageInformation.getSumPage()-1;
        }
        if (page<0){
     
            page=0;
        }
        //Session   
        HttpSession session=req.getSession(true);
        session.setAttribute("page",page);
        resp.sendRedirect(req.getContextPath()+"/Watch/show01.jsp");
    }
}

私たちのJSPページにはこのセッションを読み取り、セッションをクリアする文があります.線面のこの行のコードは実はこのページ数ボタンを印刷するためです.
<form method="get" action="${pageContext.request.contextPath}/paging">
<table>
<tr>
    <th>
        <td>
        <%--         0  ,       0--%>
    <button name="page" value="0">  </button>
        </td>
    <td>
        <button name="page" value="">   </button>
    </td>
    <%
        pageInformation pageInformation=new pageInformation();
        sumPage sumPage=new sumPage();
        pageInformation.setSumPage(sumPage.sumPage());
        <%--  for                ,    --%>
        for (int i = 0; i< pageInformation.getSumPage(); i++){
     
%>
    <td>
        <button name="page" value=""><%=i+1%></button>
    </td>
    <%
        }
    %>
    <td>
        <button name="page" value="">   </button>
    </td>
    <td>
    <%--             ,          -1--%>
        <button name="page" value="">  </button>
    </td>

    </th>
</tr>
</table>
</form>

この冒頭では、0から(あるいは最初のページから)始める必要があります.このとき、私たちはこのセッションを持っていません.つまり、このセッションはnullです.この特性に基づいて、私たちはこのように判断することができます.
	//   request          
	request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
    int num=0;
    //  session   null;   null; num      
    //            ,     、   、   !!!
    if (session.getAttribute("page")!=null){
     
            num= (int) session.getAttribute("page");
            session.removeAttribute("page");
        }

ここでは、sql文に入力するだけで必要なページ番号を取得しました.
String sql="select * from filepath order by id limit ?,3";
        ps=conn.prepareStatement(sql);
        ps.setInt(1,num*3);
        ps.executeQuery();
        rs=ps.executeQuery();

はいはいはいはい、これだけです.その中でどのように記入すればいいかは自分次第です.私のところは情報の展示です.情報を漏らすのは申し訳ありません.2333