1. 程式人生 > >8.JSP開發業務應用

8.JSP開發業務應用

  1. 大容量的資料顯示
    1. 當數量較多時,使用者需要拖動頁面才能瀏覽更多資訊
    2. 資料定位不便

  1. 分頁實現的思路

分頁顯示的步驟

  1. 封裝Page類

將有關分頁的資料封裝到Page類

public class Page {

        private int currPageNo = 1; // 當前頁碼

        private int pageSize = 15;    // 頁面大小,即每頁顯示記錄數

        private int totalCount;          // 記錄總數

        private int totalPageCount; // 總頁數

        List<News> newsList;         // 每頁新聞集合

        …… // 省略getter/setter方法

}

  1. 計算顯示的總頁數

獲取總記錄數

select count(1) from 表名   效率高於

select count(*) from 表名

根據每頁顯示記錄數計算出總頁數

public void setTotalCount(int totalCount) {

       if (totalCount > 0) {

this.totalCount = totalCount;

//計算總頁數         

              totalPageCount = (this.totalCount % pageSize == 0) ?

                                             (this.totalCount / pageSize) :

                                             ((this.totalCount / pageSize) + 1);

       }

}

  1. 分頁SQL語句

使用HTML子句

SELECT `nid`, `ntitle`, `ncreateDate` FROM `news` LIMIT 0, 3

0 --起始行的下標 = (當前頁頁碼 - 1) * 每頁顯示的資料量

3 --每頁顯示的資料量

  1. 獲取分頁資訊

獲取分頁資訊

  1. 頁面的設定

根據已經確認的當前頁碼設定引數

<%  

   <a href="pageControl.jsp?pageIndex=1">首頁</a>

   <a href="pageControl.jsp?pageIndex=<%=pageIndex - 1%>">上一頁</a>

   <a href="pageControl.jsp?pageIndex=<%=pageIndex + 1%>">下一頁</a>

   <a href="pageControl.jsp?pageIndex=<%=totalPages%>">末頁</a>

%>

  1. 頁碼邊界的控制

// 獲取當前頁

String currentPage = request.getParameter("pageIndex");

if (currentPage == null) {

     currentPage = "1";

}    

int pageIndex = Integer.parseInt(currentPage);

通過判斷pageIndex變數實現邊界控制

當前頁數:[<%=pageIndex%>/<%=totalpages%>]

<%

if (pageIndex > 1) { // 控制頁面顯示風格

%>   

   <a href="pageControl.jsp?pageIndex=1">首頁</a>

   <a href="pageControl.jsp?pageIndex=<%=pageIndex-1%>">上一頁</a>

<%

} if (pageIndex < totalPages) { // 控制頁面顯示風格

%>

   <a href="pageControl.jsp?pageIndex=<%=pageIndex+1%>">下一頁</a>

   <a href="pageControl.jsp?pageIndex=<%=totalPages%>">末頁</a>

<%   

}

%>   

  1. Commons-FileUpload簡介
    1. Commons-FileUpload元件
      • Commons是Apache開放原始碼組織的一個Java子專案,其中的FileUpload是用來處理HTTP檔案上傳的子專案
    2. Commons-FileUpload元件特點
      • 使用簡單:可以方便地嵌入到JSP檔案中,編寫少量程式碼即可完成檔案的上傳功能
      • 能夠全程控制上傳內容
      • 能夠對上傳檔案的大小、型別進行控制
  2. Commons-FileUpload簡介
    1. 獲取Commons-FileUpload元件的方式
      • http://commons.apache.org/fileupload下載Commons-FileUpload元件
        1. 類庫:commons-fileupload-1.2.2.jar
        2. API文件:commons-fileupload-1.2.2\site\apidocs
      • http://commons.apache.org/io下載Commons-IO元件
        1. 類庫:commons-io-2.4.jar
        2. API文件:commons-io-2.4\docs
  3. Commons-FileUpload元件應用
    1. 環境準備

在專案中引入commons-fileupload-1.2.2.jar和commons-io-2.4.jar檔案

    1. 設定表單的enctype屬性

<form enctype="multipart/form-data" method="post">

    1. 在表單中使用File控制元件選擇檔案

<input type="file" name="nfile" />

注意:

上傳檔案時form標籤的method屬性必須設定為“post”,不能設定為“get”     

  1. Commons-FileUpload元件的API -1

ServletFileUpload類的常用方法

  1. Commons-FileUpload元件的API 3-2

FileItem介面的常用方法

  1. Commons-FileUpload元件的API 3-3

FileItemFactory介面

實現類:DiskFileItemFactory

  1. 檔案上傳的實現

編寫上傳檔案處理頁的實現步驟

    1. 建立FileItemFactory物件
    2. 建立ServletFileUpload物件
    3. 解析form表單提交的所有表單元素資料
      • 如果是普通表單元素
        1. 獲取該元素的名和值使用
      • 如果是檔案資料
        1. 獲取檔名的等引數
        2. 儲存檔案資料到伺服器
  1. 控制上傳檔案的屬性2-1

控制上傳檔案的型別

List<String> fileType = Arrays.asList("gif", "bmp", "jpg");

String ext = fileName.substring(fileName.lastIndexOf(".") + 1);

if (! fileType.contains(ext)) {  // 判斷檔案型別是否在允許範圍內

    out.print("上傳失敗,檔案型別只能是gif、bmp、jpg");

} else {

    //上傳檔案

}

控制上傳檔案的型別

List<String> fileType = Arrays.asList("gif", "bmp", "jpg");

String ext = fileName.substring(fileName.lastIndexOf(".") + 1);

if (! fileType.contains(ext)) {  // 判斷檔案型別是否在允許範圍內

    out.print("上傳失敗,檔案型別只能是gif、bmp、jpg");

} else {

    //上傳檔案

}

控制上傳檔案的大小

ServletFileUpload upload = new ServletFileUpload(factory);

// 設定一個完整請求的最大限制

upload.setSizeMax(1024 * 30);

try {

    // ……省略上傳程式碼

} catch (FileUploadBase.SizeLimitExceededException ex) {

    out.print("上傳失敗,檔案太大,全部檔案的最大限制是:" +

    upload.getSizeMax() + "bytes!");

}

  1. 總結