目錄
一.分析
1.1.了解它的思路
1.2.了解它的概念?
?1.3.了解它的好處
二.優(yōu)化pagebean
?三.制定分頁自定義jsp標(biāo)簽
3.1 創(chuàng)建PageTag類
3.2 創(chuàng)建配置文件(tld)文件
3.3BookList
3.4BookServlet
3.5過濾器
?
最后通過分頁的詳解(前端)就到這里,祝大家在敲代碼的路上一路通暢!
感謝大家的觀看 !?。。。?!
一.分析
1.1.了解它的思路
在前端開發(fā)中,分頁功能是一個常見的需求。它允許用戶通過頁面切換來瀏覽和導(dǎo)航大量數(shù)據(jù),提供更好的用戶體驗。下面是一個通用的分頁詳解前端思路:
獲取數(shù)據(jù):首先,你需要通過接口或其他途徑獲取到需要分頁展示的數(shù)據(jù)??梢允褂肁jax或其他數(shù)據(jù)獲取方式來異步請求數(shù)據(jù)。
數(shù)據(jù)處理:獲取到數(shù)據(jù)后,你需要對數(shù)據(jù)進行處理,以便在前端進行分頁。根據(jù)你的需求,你可以對數(shù)據(jù)進行排序、篩選等操作。
分頁計算:根據(jù)每頁顯示的數(shù)據(jù)量和總數(shù)據(jù)量,計算出總頁數(shù)。一般情況下,你可以使用以下公式來計算總頁數(shù):
totalPages = Math.ceil(totalCount / pageSize)分頁顯示:在頁面上展示分頁導(dǎo)航欄和數(shù)據(jù)列表。可以使用HTML和CSS來構(gòu)建分頁導(dǎo)航欄,通常包括上一頁、下一頁、首頁和尾頁等按鈕。
分頁邏輯:實現(xiàn)分頁按鈕的點擊事件和相應(yīng)的邏輯。當(dāng)用戶點擊上一頁或下一頁按鈕時,根據(jù)當(dāng)前頁數(shù)和總頁數(shù)來計算并顯示對應(yīng)的數(shù)據(jù)。
數(shù)據(jù)渲染:根據(jù)當(dāng)前頁數(shù)和每頁顯示的數(shù)據(jù)量,從總數(shù)據(jù)中截取當(dāng)前頁需要展示的數(shù)據(jù),并將其渲染到頁面上。
可選功能:根據(jù)實際需求,你可以添加一些額外的功能,比如跳轉(zhuǎn)到指定頁、顯示當(dāng)前頁數(shù)等。
需要注意的是,上述思路提供了一個通用的分頁實現(xiàn)思路,具體的實現(xiàn)方式還取決于你使用的前端框架或庫。不同的框架或庫可能有自己的分頁組件或方法,可以根據(jù)具體情況來選擇使用。
1.2.了解它的概念?
在前端開發(fā)中,通用分頁是一種常見的功能,能夠?qū)⒋罅繑?shù)據(jù)分成多個頁面進行展示,提供更好的用戶體驗。以下是一些與通用分頁相關(guān)的前端理論概念:
數(shù)據(jù)源(Data Source):指提供分頁數(shù)據(jù)的來源,可以是后端接口返回的數(shù)據(jù),也可以是本地數(shù)據(jù)、緩存數(shù)據(jù)等。數(shù)據(jù)源是整個分頁功能的基礎(chǔ)。
總記錄數(shù)(Total Count):表示數(shù)據(jù)源中的總記錄數(shù),也就是分頁數(shù)據(jù)的總數(shù)量??傆涗洈?shù)用于計算總頁數(shù),同時在分頁導(dǎo)航欄中展示給用戶。
當(dāng)前頁數(shù)(Current Page):表示當(dāng)前展示的頁數(shù),用戶可以通過切換當(dāng)前頁數(shù)來查看不同的數(shù)據(jù)頁。當(dāng)前頁數(shù)通常從1開始,直到總頁數(shù)。
總頁數(shù)(Total Pages):根據(jù)總記錄數(shù)和每頁顯示的記錄數(shù)計算得出的總頁數(shù)??傢摂?shù)用于確定分頁導(dǎo)航欄中的頁碼數(shù)量,以及判斷是否需要顯示上一頁和下一頁按鈕。
每頁記錄數(shù)(Page Size):指定每頁需要展示的記錄數(shù)量。通過設(shè)定每頁記錄數(shù),可以控制每個分頁頁面所展示的數(shù)據(jù)數(shù)量。
分頁導(dǎo)航欄(Pagination Navigation):通常以一組鏈接或按鈕的形式展示在頁面上,用于幫助用戶導(dǎo)航到不同的數(shù)據(jù)頁。分頁導(dǎo)航欄可以包括上一頁、下一頁、首頁、尾頁等操作按鈕,以及顯示當(dāng)前頁碼和總頁數(shù)的信息。
分頁邏輯(Pagination Logic):根據(jù)用戶的操作,比如點擊上一頁、下一頁按鈕,計算出對應(yīng)的頁碼,從數(shù)據(jù)源中獲取相應(yīng)的數(shù)據(jù),并進行渲染展示的邏輯。
數(shù)據(jù)渲染(Data Rendering):在前端頁面中將獲取到的分頁數(shù)據(jù)進行展示的過程??梢允褂肏TML、CSS等技術(shù)來構(gòu)建數(shù)據(jù)展示的模板,并將分頁數(shù)據(jù)填充到模板中。
以上概念是實現(xiàn)通用分頁功能時常用的理論基礎(chǔ),了解這些概念可以幫助你更好地理解和實現(xiàn)前端分頁功能。具體的實現(xiàn)方式會根據(jù)使用的前端框架或庫而有所不同。
?1.3.了解它的好處
通用分頁在前端開發(fā)中有很多好處,以下是一些主要的好處:
提供更好的用戶體驗:通用分頁功能能夠?qū)⒋罅繑?shù)據(jù)進行分頁展示,用戶可以更方便地瀏覽和導(dǎo)航數(shù)據(jù),提升用戶的使用體驗。
加快頁面加載速度:當(dāng)數(shù)據(jù)量較大時,將所有數(shù)據(jù)一次性加載到前端頁面可能導(dǎo)致頁面加載緩慢甚至崩潰。而通過分頁加載數(shù)據(jù),可以減少每次加載的數(shù)據(jù)量,提升頁面加載速度。
節(jié)省網(wǎng)絡(luò)帶寬:分頁加載數(shù)據(jù)可以降低網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,減少對網(wǎng)絡(luò)帶寬的消耗,特別是在移動端網(wǎng)絡(luò)環(huán)境不穩(wěn)定的情況下尤為重要。
簡化數(shù)據(jù)處理邏輯:通過分頁展示數(shù)據(jù),可以將復(fù)雜的數(shù)據(jù)操作邏輯分散到各個分頁中,使前端代碼更加清晰和易于維護。
提高系統(tǒng)性能:將數(shù)據(jù)分頁展示可以減輕后端服務(wù)器的負擔(dān),降低數(shù)據(jù)查詢和傳輸?shù)膲毫Γ瑥亩岣呦到y(tǒng)的性能和響應(yīng)速度。
可定制化和靈活性:通用分頁功能通常具有可定制化的特點,可以根據(jù)實際需求調(diào)整每頁顯示的數(shù)據(jù)量、分頁導(dǎo)航欄的樣式和布局等,以適應(yīng)不同項目的要求。
總而言之,通用分頁功能能夠提升用戶體驗、減少數(shù)據(jù)傳輸負擔(dān)、提高系統(tǒng)性能,是一項在前端開發(fā)中非常有用的功能。通過合理地使用分頁功能,可以更好地管理和展示大量數(shù)據(jù),提升用戶對應(yīng)用程序的滿意度。
二.優(yōu)化pagebean
優(yōu)化PageBean主要有以下幾個原因:
提高性能:當(dāng)數(shù)據(jù)量較大時,PageBean對象可能包含大量的數(shù)據(jù),而在某些場景中,并不需要將所有數(shù)據(jù)都加載到PageBean中。通過優(yōu)化PageBean,可以減少內(nèi)存占用和數(shù)據(jù)加載的時間,從而提高系統(tǒng)性能。
減少網(wǎng)絡(luò)傳輸:從后端獲取PageBean對象需要進行網(wǎng)絡(luò)傳輸,而網(wǎng)絡(luò)傳輸是相對較慢的操作。通過優(yōu)化PageBean,可以減少傳輸?shù)臄?shù)據(jù)量,降低帶寬占用,縮短數(shù)據(jù)傳輸時間。
精簡數(shù)據(jù)結(jié)構(gòu):有時候PageBean可能包含了一些不必要的字段或冗余數(shù)據(jù),這些字段可能對前端展示或業(yè)務(wù)邏輯沒有實際的用途。通過優(yōu)化PageBean,可以精簡數(shù)據(jù)結(jié)構(gòu),只保留需要的字段,提高代碼的可讀性和可維護性。
提高代碼可重用性:如果PageBean的設(shè)計合理,可以使其在不同的場景中被多次復(fù)用。通過優(yōu)化PageBean,可以增加其可重用性,減少重復(fù)代碼的編寫,提高開發(fā)效率。
增加擴展性:通過優(yōu)化PageBean,可以考慮增加一些擴展字段或方法,以便應(yīng)對未來可能的需求變更或功能擴展。這樣可以降低后續(xù)的開發(fā)和維護成本。
精確控制數(shù)據(jù)加載:通過優(yōu)化PageBean,可以實現(xiàn)精確的數(shù)據(jù)加載策略,例如按需加載、懶加載等。這樣可以避免一次性加載過多數(shù)據(jù)導(dǎo)致性能下降或卡頓的問題。
總之,優(yōu)化PageBean可以提高系統(tǒng)的性能和可維護性,減少網(wǎng)絡(luò)傳輸和內(nèi)存占用,同時提供更靈活和精確的數(shù)據(jù)加載策略。通過合理的設(shè)計和優(yōu)化,可以使PageBean更加適應(yīng)實際的業(yè)務(wù)需求和開發(fā)場景。
優(yōu)化之前代碼如下:
package com.junlinyi.util;
/**
* 分頁工具類
*
*/
public class PageBean {
private int page = 1;// 頁碼
private int rows = 10;// 頁大小
private int total = 0;// 總記錄數(shù)
private boolean pagination = true;// 是否分頁
public PageBean() {
super();
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public void setTotal(String total) {
this.total = Integer.parseInt(total);
}
public boolean isPagination() {
return pagination;
}
public void setPagination(boolean pagination) {
this.pagination = pagination;
}
/**
* 獲得起始記錄的下標(biāo)
*
* @return
*/
public int getStartIndex() {
return (this.page - 1) * this.rows;
}
@Override
public String toString() {
return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";
}
}
優(yōu)化之后代碼如下:
package com.junlinyi.utils;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
/**
* 分頁工具類
*增加一個屬性url,保留上一次發(fā)送的請求地址
* 增加一個屬性paramMap,保留上一次發(fā)送的請求攜帶的參數(shù)
* req.getParameterMap();
* 增加一個最大頁的方法
* 增加一個下一頁的方法
* 增加一個上一頁的方法
* 初始化pegebean的方法
*/
public class PageBean {
private int page = 1;// 頁碼
private int rows = 10;// 頁大小
private int total = 0;// 總記錄數(shù)
// 上一次查詢的url
private String url;
// 上一次查詢所攜帶的查詢條件
private Map<String, String[]> parameterMap = new HashMap<String, String[]>();
// 對pagebean進行初始化
public void setRequest(HttpServletRequest req) {
// 初始化jsp頁面?zhèn)鬟f過來的當(dāng)前頁
this.setPage(req.getParameter("page"));
// 初始化jsp頁面?zhèn)鬟f過來的頁大小
this.setRows(req.getParameter("rows"));
// 初始化jsp頁面?zhèn)鬟f過來是否分頁
this.setPagination(req.getParameter("pagination"));
// 保留上一次的查詢請求
this.setUrl(req.getRequestURL().toString());
// 保留上一次的查詢條件
this.setParameterMap(req.getParameterMap());
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Map<String, String[]> getParameterMap() {
return parameterMap;
}
public void setParameterMap(Map<String, String[]> parameterMap) {
this.parameterMap = parameterMap;
}
private void setPagination(String pagination) {
// 只有填寫了false字符串,才代表不分頁
this.setPagination(!"false".equals(pagination));
}
private void setRows(String rows) {
if (StringUtils.isNotBlank(rows))
this.setRows(Integer.valueOf(rows));
}
private void setPage(String page) {
if (StringUtils.isNotBlank(page))
this.setPage(Integer.valueOf(page));
}
private boolean pagination = true;// 是否分頁
public PageBean() {
super();
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public void setTotal(String total) {
this.total = Integer.parseInt(total);
}
public boolean isPagination() {
return pagination;
}
public void setPagination(boolean pagination) {
this.pagination = pagination;
}
/**
* 獲得起始記錄的下標(biāo)
*
* @return
*/
public int getStartIndex() {
return (this.page - 1) * this.rows;
}
@Override
public String toString() {
return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";
}
// 上一頁
public int getPrevPage() {
return this.page > 1 ? this.page - 1 : this.page;
}
// 下一頁
public int getNextPage() {
return this.page < this.getMaxPage() ? this.page + 1 : this.page;
}
// 最大頁
public int getMaxPage() {
return this.total % this.rows == 0 ? this.total / this.rows : (this.total / this.rows) + 1;
}
}
?三.制定分頁自定義jsp標(biāo)簽
3.1 創(chuàng)建PageTag類
package com.junlinyi.tag;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
import com.junlinyi.utils.PageBean;
/**
* @author 君臨沂
*
*/
public class PageTage extends BodyTagSupport {
private PageBean pageBean;
public PageBean getPageBean() {
return pageBean;
}
public void setPageBean(PageBean pageBean) {
this.pageBean = pageBean;
}
@Override
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
try {
out.print(toHTML());
} catch (IOException e) {
e.printStackTrace();
}
return SKIP_BODY;
}
private String toHTML() {
StringBuilder sb = new StringBuilder();
// 這里拼接的是一個上一次發(fā)送的請求以及攜帶的參數(shù),唯一改變的就是頁碼
sb.append("<form id='pageBeanForm' action='"+pageBean.getUrl()+"' method='post'>");
sb.append("<input type='hidden' name='methodName' value='list'>");
sb.append("<input type='hidden' name='page'>");
// 重要設(shè)置拼接操作,將上一次請求參數(shù)攜帶到下一次
Map<String, String[]> paMap = pageBean.getParameterMap();
if(paMap !=null && paMap.size()>0){
Set<Map.Entry<String, String[]>> entrySet = paMap.entrySet();
for (Map.Entry<String, String[]> entry : entrySet) {
for (String val : entry.getValue()) {
if(!"page".equals(entry.getKey())){
sb.append("<input type='hidden' name='"+entry.getKey()+"' value='"+val+"'>");
}
}
}
}
sb.append("</form>");
int page = pageBean.getPage();
int max = pageBean.getMaxPage();
int before = page > 4 ? 4 : page-1;
int after = 10 - 1 - before;
after = page+after > max ? max-page : after;
// disabled
boolean startFlag = page == 1;
boolean endFlag = max == page;
// 拼接分頁條
sb.append("<ul class='pagination'>");
sb.append("<li class='page-item "+(startFlag ? "disabled" : "")+"'><a class='page-link' href='javascript:gotoPage(1)'>首頁</a></li>");
sb.append("<li class='page-item "+(startFlag ? "disabled" : "")+"'><a class='page-link' href='javascript:gotoPage("+pageBean.getPrevPage()+")'><</a></li>");
// 代表了當(dāng)前頁的前4頁
for (int i = before; i > 0 ; i--) {
sb.append("<li class='page-item'><a class='page-link' href='javascript:gotoPage("+(page-i)+")'>"+(page-i)+"</a></li>");
}
sb.append("<li class='page-item active'><a class='page-link' href='javascript:gotoPage("+pageBean.getPage()+")'>"+pageBean.getPage()+"</a></li>");
// 代表了當(dāng)前頁的后5頁
for (int i = 1; i <= after; i++) {
sb.append("<li class='page-item'><a class='page-link' href='javascript:gotoPage("+(page+i)+")'>"+(page+i)+"</a></li>");
}
sb.append("<li class='page-item "+(endFlag ? "disabled" : "")+"'><a class='page-link' href='javascript:gotoPage("+pageBean.getNextPage()+")'>></a></li>");
sb.append("<li class='page-item "+(endFlag ? "disabled" : "")+"'><a class='page-link' href='javascript:gotoPage("+pageBean.getMaxPage()+")'>尾頁</a></li>");
sb.append("<li class='page-item go-input'><b>到第</b><input class='page-link' type='text' id='skipPage' name='' /><b>頁</b></li>");
sb.append("<li class='page-item go'><a class='page-link' href='javascript:skipPage()'>確定</a></li>");
sb.append("<li class='page-item'><b>共"+pageBean.getTotal()+"條</b></li>");
sb.append("</ul>");
// 拼接分頁的js代碼
sb.append("<script type='text/javascript'>");
sb.append("function gotoPage(page) {");
sb.append("document.getElementById('pageBeanForm').page.value = page;");
sb.append("document.getElementById('pageBeanForm').submit();");
sb.append("}");
sb.append("function skipPage() {");
sb.append("var page = document.getElementById('skipPage').value;");
sb.append("if (!page || isNaN(page) || parseInt(page) < 1 || parseInt(page) > "+max+") {");
sb.append("alert('請輸入1~N的數(shù)字');");
sb.append("return;");
sb.append("}");
sb.append("gotoPage(page);");
sb.append("}");
sb.append("</script>");
return sb.toString();
}
}
3.2 創(chuàng)建配置文件(tld)文件
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<!-- 標(biāo)簽庫描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>Simple Tags</short-name>
<uri>http://www/JunLinYi/com</uri>
<tag>
<name>page</name>
<tag-class>com.junlinyi.tag.PageTage</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>pageBean</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
3.3BookList
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www/JunLinYi/com" prefix="z"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link
rel="stylesheet">
<script
src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.js"></script>
<title>書籍列表</title>
<style type="text/css">
.page-item input {
padding: 0;
width: 40px;
height: 100%;
text-align: center;
margin: 0 6px;
}
.page-item input, .page-item b {
line-height: 38px;
float: left;
font-weight: 400;
}
.page-item.go-input {
margin: 0 10px;
}
</style>
</head>
<body>
${pageBean }
<form class="form-inline"
action="${pageContext.request.contextPath }/book.action" method="post">
<div class="form-group mb-2">
<input type="text" class="form-control-plaintext" name="bname"
placeholder="請輸入書籍名稱">
</div>
<button type="submit" class="btn btn-primary mb-2">查詢</button>
</form>
<table class="table table-striped bg-success">
<thead>
<tr>
<th scope="col">書籍ID</th>
<th scope="col">書籍名</th>
<th scope="col">價格</th>
</tr>
</thead>
<tbody>
<c:forEach items="${book }" var="b">
<tr>
<td>${b.bid }</td>
<td>${b.bname }</td>
<td>${b.price }</td>
</tr>
</c:forEach>
</tbody>
</table>
<z:page pageBean="${pageBean }"></z:page>
</body>
</html>
3.4BookServlet
package com.junlinyi.servlet;
import java.io.IOException;
import java.util.List;
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 com.junlinyi.dao.BookDao;
import com.junlinyi.entity.Book;
import com.junlinyi.utils.PageBean;
/**
*
* @author: 君臨沂
*
*/
@WebServlet("/book.action")
public class BookServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@SuppressWarnings("unused")
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// String bname = req.getParameter("bname");
map包含了瀏覽器傳遞到后臺的所有參數(shù)鍵值對
// Map<String, String[]> map = req.getParameterMap();
瀏覽器請求的地址
// String url = req.getRequestURL().toString();
PageBean pb=new PageBean();
pb.setRequest(req);
BookDao bd=new BookDao();
Book bk=new Book();
bk.setBname(req.getParameter("bname"));
try {
List<Book> book = bd.list2(bk, pb);
req.setAttribute("book",book);
} catch (Exception e) {
e.printStackTrace();
}
req.setAttribute("pageBean",pb);
req.getRequestDispatcher("bookList.jsp").forward(req, resp);
}
}
3.5過濾器
在進行頁面輸出或搜索書籍的時候,我們會發(fā)現(xiàn)可能出現(xiàn)亂碼問題,這時候我們只需要加上一個過濾器就行了
package com.junlinyi.utils;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 過濾器
* 中文亂碼處理
*
*/
@WebFilter("*.action")
public class EncodingFiter implements Filter {
private String encoding = "UTF-8";// 默認字符集
public EncodingFiter() {
super();
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
// 中文處理必須放到 chain.doFilter(request, response)方法前面
res.setContentType("text/html;charset=" + this.encoding);
if (req.getMethod().equalsIgnoreCase("post")) {
req.setCharacterEncoding(this.encoding);
} else {
Map map = req.getParameterMap();// 保存所有參數(shù)名=參數(shù)值(數(shù)組)的Map集合
Set set = map.keySet();// 取出所有參數(shù)名
Iterator it = set.iterator();
while (it.hasNext()) {
String name = (String) it.next();
String[] values = (String[]) map.get(name);// 取出參數(shù)值[注:參數(shù)值為一個數(shù)組]
for (int i = 0; i < values.length; i++) {
values[i] = new String(values[i].getBytes("ISO-8859-1"),
this.encoding);
}
}
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
String s = filterConfig.getInitParameter("encoding");// 讀取web.xml文件中配置的字符集
if (null != s && !s.trim().equals("")) {
this.encoding = s.trim();
}
}
}
展示圖 :
文章來源:http://www.zghlxwxcb.cn/news/detail-727491.html
最后通過分頁的詳解(前端)就到這里,祝大家在敲代碼的路上一路通暢!
感謝大家的觀看 !?。。。。?/h3>
?文章來源地址http://www.zghlxwxcb.cn/news/detail-727491.html
到了這里,關(guān)于通用分頁詳解(前端)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!