国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

通用分頁詳解(前端)

這篇具有很好參考價值的文章主要介紹了通用分頁詳解(前端)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一.分析

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ù),提供更好的用戶體驗。下面是一個通用的分頁詳解前端思路:

  1. 獲取數(shù)據(jù):首先,你需要通過接口或其他途徑獲取到需要分頁展示的數(shù)據(jù)??梢允褂肁jax或其他數(shù)據(jù)獲取方式來異步請求數(shù)據(jù)。

  2. 數(shù)據(jù)處理:獲取到數(shù)據(jù)后,你需要對數(shù)據(jù)進行處理,以便在前端進行分頁。根據(jù)你的需求,你可以對數(shù)據(jù)進行排序、篩選等操作。

  3. 分頁計算:根據(jù)每頁顯示的數(shù)據(jù)量和總數(shù)據(jù)量,計算出總頁數(shù)。一般情況下,你可以使用以下公式來計算總頁數(shù):
    totalPages = Math.ceil(totalCount / pageSize)

  4. 分頁顯示:在頁面上展示分頁導(dǎo)航欄和數(shù)據(jù)列表。可以使用HTML和CSS來構(gòu)建分頁導(dǎo)航欄,通常包括上一頁、下一頁、首頁和尾頁等按鈕。

  5. 分頁邏輯:實現(xiàn)分頁按鈕的點擊事件和相應(yīng)的邏輯。當(dāng)用戶點擊上一頁或下一頁按鈕時,根據(jù)當(dāng)前頁數(shù)和總頁數(shù)來計算并顯示對應(yīng)的數(shù)據(jù)。

  6. 數(shù)據(jù)渲染:根據(jù)當(dāng)前頁數(shù)和每頁顯示的數(shù)據(jù)量,從總數(shù)據(jù)中截取當(dāng)前頁需要展示的數(shù)據(jù),并將其渲染到頁面上。

  7. 可選功能:根據(jù)實際需求,你可以添加一些額外的功能,比如跳轉(zhuǎn)到指定頁、顯示當(dāng)前頁數(shù)等。

需要注意的是,上述思路提供了一個通用的分頁實現(xiàn)思路,具體的實現(xiàn)方式還取決于你使用的前端框架或庫。不同的框架或庫可能有自己的分頁組件或方法,可以根據(jù)具體情況來選擇使用。

1.2.了解它的概念?

在前端開發(fā)中,通用分頁是一種常見的功能,能夠?qū)⒋罅繑?shù)據(jù)分成多個頁面進行展示,提供更好的用戶體驗。以下是一些與通用分頁相關(guān)的前端理論概念:

  1. 數(shù)據(jù)源(Data Source):指提供分頁數(shù)據(jù)的來源,可以是后端接口返回的數(shù)據(jù),也可以是本地數(shù)據(jù)、緩存數(shù)據(jù)等。數(shù)據(jù)源是整個分頁功能的基礎(chǔ)。

  2. 總記錄數(shù)(Total Count):表示數(shù)據(jù)源中的總記錄數(shù),也就是分頁數(shù)據(jù)的總數(shù)量??傆涗洈?shù)用于計算總頁數(shù),同時在分頁導(dǎo)航欄中展示給用戶。

  3. 當(dāng)前頁數(shù)(Current Page):表示當(dāng)前展示的頁數(shù),用戶可以通過切換當(dāng)前頁數(shù)來查看不同的數(shù)據(jù)頁。當(dāng)前頁數(shù)通常從1開始,直到總頁數(shù)。

  4. 總頁數(shù)(Total Pages):根據(jù)總記錄數(shù)和每頁顯示的記錄數(shù)計算得出的總頁數(shù)??傢摂?shù)用于確定分頁導(dǎo)航欄中的頁碼數(shù)量,以及判斷是否需要顯示上一頁和下一頁按鈕。

  5. 每頁記錄數(shù)(Page Size):指定每頁需要展示的記錄數(shù)量。通過設(shè)定每頁記錄數(shù),可以控制每個分頁頁面所展示的數(shù)據(jù)數(shù)量。

  6. 分頁導(dǎo)航欄(Pagination Navigation):通常以一組鏈接或按鈕的形式展示在頁面上,用于幫助用戶導(dǎo)航到不同的數(shù)據(jù)頁。分頁導(dǎo)航欄可以包括上一頁、下一頁、首頁、尾頁等操作按鈕,以及顯示當(dāng)前頁碼和總頁數(shù)的信息。

  7. 分頁邏輯(Pagination Logic):根據(jù)用戶的操作,比如點擊上一頁、下一頁按鈕,計算出對應(yīng)的頁碼,從數(shù)據(jù)源中獲取相應(yīng)的數(shù)據(jù),并進行渲染展示的邏輯。

  8. 數(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ā)中有很多好處,以下是一些主要的好處:

  1. 提供更好的用戶體驗:通用分頁功能能夠?qū)⒋罅繑?shù)據(jù)進行分頁展示,用戶可以更方便地瀏覽和導(dǎo)航數(shù)據(jù),提升用戶的使用體驗。

  2. 加快頁面加載速度:當(dāng)數(shù)據(jù)量較大時,將所有數(shù)據(jù)一次性加載到前端頁面可能導(dǎo)致頁面加載緩慢甚至崩潰。而通過分頁加載數(shù)據(jù),可以減少每次加載的數(shù)據(jù)量,提升頁面加載速度。

  3. 節(jié)省網(wǎng)絡(luò)帶寬:分頁加載數(shù)據(jù)可以降低網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,減少對網(wǎng)絡(luò)帶寬的消耗,特別是在移動端網(wǎng)絡(luò)環(huán)境不穩(wěn)定的情況下尤為重要。

  4. 簡化數(shù)據(jù)處理邏輯:通過分頁展示數(shù)據(jù),可以將復(fù)雜的數(shù)據(jù)操作邏輯分散到各個分頁中,使前端代碼更加清晰和易于維護。

  5. 提高系統(tǒng)性能:將數(shù)據(jù)分頁展示可以減輕后端服務(wù)器的負擔(dān),降低數(shù)據(jù)查詢和傳輸?shù)膲毫Γ瑥亩岣呦到y(tǒng)的性能和響應(yīng)速度。

  6. 可定制化和靈活性:通用分頁功能通常具有可定制化的特點,可以根據(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主要有以下幾個原因:

  1. 提高性能:當(dāng)數(shù)據(jù)量較大時,PageBean對象可能包含大量的數(shù)據(jù),而在某些場景中,并不需要將所有數(shù)據(jù)都加載到PageBean中。通過優(yōu)化PageBean,可以減少內(nèi)存占用和數(shù)據(jù)加載的時間,從而提高系統(tǒng)性能。

  2. 減少網(wǎng)絡(luò)傳輸:從后端獲取PageBean對象需要進行網(wǎng)絡(luò)傳輸,而網(wǎng)絡(luò)傳輸是相對較慢的操作。通過優(yōu)化PageBean,可以減少傳輸?shù)臄?shù)據(jù)量,降低帶寬占用,縮短數(shù)據(jù)傳輸時間。

  3. 精簡數(shù)據(jù)結(jié)構(gòu):有時候PageBean可能包含了一些不必要的字段或冗余數(shù)據(jù),這些字段可能對前端展示或業(yè)務(wù)邏輯沒有實際的用途。通過優(yōu)化PageBean,可以精簡數(shù)據(jù)結(jié)構(gòu),只保留需要的字段,提高代碼的可讀性和可維護性。

  4. 提高代碼可重用性:如果PageBean的設(shè)計合理,可以使其在不同的場景中被多次復(fù)用。通過優(yōu)化PageBean,可以增加其可重用性,減少重復(fù)代碼的編寫,提高開發(fā)效率。

  5. 增加擴展性:通過優(yōu)化PageBean,可以考慮增加一些擴展字段或方法,以便應(yīng)對未來可能的需求變更或功能擴展。這樣可以降低后續(xù)的開發(fā)和維護成本。

  6. 精確控制數(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()+")'>&lt;</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()+")'>&gt;</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();
		}
	}

}

展示圖 :

前端分頁功能怎么實現(xiàn),前端


最后通過分頁的詳解(前端)就到這里,祝大家在敲代碼的路上一路通暢!

感謝大家的觀看 !?。。。。?/h3>

?前端分頁功能怎么實現(xiàn),前端文章來源地址http://www.zghlxwxcb.cn/news/detail-727491.html

到了這里,關(guān)于通用分頁詳解(前端)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包