質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Q&A

1回答

7271閲覧

javaを使ったページング処理の方法について(現在ページの取得)

game

総合スコア10

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

0グッド

0クリップ

投稿2016/06/25 21:39

##背景・困っていること
現在、簡易掲示板プログラムに下記機能を追加したいと考えています。
ページング処理は、javaで書きたいと思っています。(PHPやjavascript等は使いません。)

・フッター部分に「現在ページ番号/全ページ番号」の取得(JSPに表示)

全ページ番号は、メッセージの総件数 ➗ 1ページの表示する件数で求めることができましたが、
現在ページについては、色々と調べて見たのですが、どのように求めたら良いかわかりませんでした。
皆さまのお力をお貸しください。よろしくお願いします。
下記にソースコードを記載しておきます。

ちなみに、この掲示板は、1ページ最大5件までのメッセージを表示します。

##ソースコード(bbs.jsp)

<CENTER><% bbsdata.getNowPage() %>/<%= bbsdata.getAllPage() %></CENTER> ``` ##ソースコード(bbsManagerBeasn)…全メッセージを管理する ```ここに言語を入力 ///////////////////// メッセージを取得 /////////////////// protected BBSItem GetItem(int index) { BBSItem item; try { item = (BBSItem)bbsItems.get(index); } catch(IndexOutOfBoundsException e) { item = null; } return item; } ///////////////////// メッセージを追加 /////////////////// public void AddItem(BBSItem item) { bbsItems.add(0,item); WriteDataFile(); } ///////////////////// メッセージを削除 /////////////////// public void DeleteItem(int index, String deleteKey) { BBSItem item; try { item = (BBSItem)bbsItems.get(index); } catch(IndexOutOfBoundsException e) { return; } if (item == null) { return; } if (deleteKey.compareTo(item.deleteKey) != 0) { return; } bbsItems.set(index, null); WriteDataFile(); } ///////////////////// メッセージ数を取得 /////////////////// public int GetMaxItems() { return bbsItems.size(); } /////////////////////全メッセージ番号を取得 /////////////////// public void AllPage(BBSDataBeans bbsData) { int page = bbsItems.size() / 5; if(bbsItems.size() % 5 != 0) { page = pager+1; } ///////////////////// BBSDataBeansへメッセージを詰め込む /////////////////// public void ReadArticles(int index, BBSDataBeans bbsData) { int maxitems = GetMaxItems(); int items = 0; for(int i = 0; items < BBSDataBeans.maxItemsPerPage && index + i < maxitems; i ++) { BBSItem item = GetItem(index + i); if (item == null) continue; item.index = index + i; bbsData.setItem(items, item); items ++; bbsData.numOfItems ++; bbsData.lastIndex = index + i; if (items == BBSDataBeans.maxItemsPerPage) break; } } ``` ##ソースコード(bbsDataBeans)…1ページ分のメッセージを管理 ```ここに言語を入力 public class BBSDataBeans { ///////////////////// メンバ変数 /////////////////// static final int maxItemsPerPage = 5; BBSItem[] bbsItems; int numOfItems; int lastIndex; int nowpage; int allpage; ///////////////////// コンストラクタ /////////////////// public BBSDataBeans() { bbsItems = new BBSItem[20]; for(int i = 0; i < maxItemsPerPage; i ++) { bbsItems[i] = new BBSItem(); } if (bbsItems[0] == null) { return; } numOfItems = 0; lastIndex = 0; nowpage = 1; allpage = 0; } ///////////////////// メッセージの追加 /////////////////// public void setItem(int index, BBSItem item) { if (index >= maxItemsPerPage) { return; } if (item == null) { return; } if (bbsItems[index] == null) { return; } bbsItems[index].name = item.name; bbsItems[index].email = item.email; bbsItems[index].content = item.content; bbsItems[index].subject = item.subject; bbsItems[index].deleteKey = item.deleteKey; } ///////////////////// アクセスメソッド /////////////////// // メッセージ数 public int getNumOfItems() { return numOfItems; } // 投稿者名 public String getName(int index) { return bbsItems[index].name; } // メールアドレス public String getEmail(int index) { return bbsItems[index].email; } // サブジェクト public String getSubject(int index) { return bbsItems[index].subject; } // 内容 public String getContent(int index) { return bbsItems[index].content; } // メッセージ番号 public int getIndex(int index) { return bbsItems[index].index; } // 最後のメッセージ番号 public int getLastIndex() { return lastIndex; } // 現在のページ番号 public int getNowPage() { return nowpage; } // 全ページ番号 public int getAllPage() { return allpage; } } ``` ##ソースコード(bbsServlet) ```ここに言語を入力 ///////////////////// "POST"メソッド /////////////////// public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } ///////////////////// "GET"メソッド /////////////////// public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { BBSDataBeans bbsData = new BBSDataBeans(); String data = request.getParameter("function"); if (data == null) { doBBSRead(request, response, bbsData); } else if (data.compareTo("WRITE") == 0) { doBBSWrite(request, response, bbsData); } else if (data.compareTo("DELETE") == 0) { doBBSDelete(request, response, bbsData); } request.setAttribute("bbsdata",bbsData); sc.getRequestDispatcher("/bbs.jsp").forward(request, response); } ///////////////////// メッセージの削除 /////////////////// public void doBBSDelete(HttpServletRequest request, HttpServletResponse response, BBSDataBeans bbsData) throws IOException, ServletException { String delindex = request.getParameter("delIndex"); if (delindex == null) { bbsManager.ReadArticles(0, bbsData); return; } int index = Integer.parseInt(delindex); String password = request.getParameter("pwd"); if (password == null) { bbsManager.ReadArticles(0, bbsData); return; } bbsManager.DeleteItem(index, password); bbsManager.ReadArticles(0, bbsData); bbsManager.AllPage(bbsData); } ///////////////////// メッセージの投稿 /////////////////// public void doBBSWrite(HttpServletRequest request, HttpServletResponse response, BBSDataBeans bbsData) throws IOException, ServletException { BBSItem item = new BBSItem(); item.name = KanjiConv.ConvJStr(request.getParameter("name")); if (item.name == null) item.name = ""; item.email = KanjiConv.ConvJStr(request.getParameter("email")); if (item.email == null) item.email = ""; item.subject = KanjiConv.ConvJStr(request.getParameter("subject")); if (item.subject == null) item.subject = ""; item.content = KanjiConv.ConvJStr(request.getParameter("content")); if (item.content == null) item.content = ""; item.deleteKey = KanjiConv.ConvJStr(request.getParameter("pass")); if (item.deleteKey == null) item.deleteKey = ""; bbsManager.AddItem(item); bbsManager.ReadArticles(0, bbsData); bbsManager.AllPage(bbsData); } ///////////////////// メッセージの読み出す /////////////////// public void doBBSRead(HttpServletRequest request, HttpServletResponse response, BBSDataBeans bbsData) throws IOException, ServletException { int index, lastIndex; String strIndex = request.getParameter("index"); if (strIndex != null) { index = Integer.parseInt(strIndex); } else { index = 0; } bbsManager.ReadArticles(index, bbsData); bbsManager.AllPage(bbsData); } public void destroy() { } } ```

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ページ番号はURLのパラメタとして渡すのではダメですか?下のpage=1のような感じです。

http://example.com/column?id=1&page=1

1ページ目を表示するときは「次へ」のリンクは2ページ目へのリンクを生成しておけばよいですし。

投稿2016/06/25 22:59

sekitaka_1214

総合スコア509

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問