欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)通用分頁(后端)

 更新時(shí)間:2023年12月05日 16:40:42   作者:Ar.小白  
這篇文章主要介紹了java實(shí)現(xiàn)通用分頁(后端)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1.通用分頁是什么?

Java通用分頁是指在Java編程語言中實(shí)現(xiàn)的一種通用分頁功能。它通常用于在Java Web應(yīng)用中展示大量數(shù)據(jù)或查詢結(jié)果,并將其分頁顯示給用戶。

在Java中,通常會(huì)使用以下幾個(gè)組件或類來實(shí)現(xiàn)通用分頁功能:

1. 分頁查詢:通常會(huì)通過數(shù)據(jù)庫查詢或其他方式獲取大量數(shù)據(jù),然后使用分頁查詢技術(shù)來獲取特定頁的數(shù)據(jù)。這通常包括設(shè)置每頁顯示的數(shù)據(jù)數(shù)量、當(dāng)前頁碼和排序規(guī)則等參數(shù),然后根據(jù)參數(shù)篩選和返回相應(yīng)頁的數(shù)據(jù)。

2. 頁面展示:通用分頁需要在前端頁面上展示分頁數(shù)據(jù),可以使用Java的模板引擎或前端框架來實(shí)現(xiàn)。在頁面上通常會(huì)顯示當(dāng)前頁的數(shù)據(jù)列表、頁碼導(dǎo)航、上一頁和下一頁按鈕等控件,以便用戶瀏覽和導(dǎo)航不同頁的數(shù)據(jù)。

3. 分頁邏輯:在Java中,通常會(huì)使用一些邏輯代碼或工具類來處理分頁邏輯,例如計(jì)算總頁數(shù)、當(dāng)前頁起始索引、數(shù)據(jù)轉(zhuǎn)換等。這些代碼可以根據(jù)每頁顯示的數(shù)據(jù)數(shù)量、總數(shù)據(jù)量和當(dāng)前頁碼等來計(jì)算所需的數(shù)據(jù)范圍,并在數(shù)據(jù)庫查詢中使用相應(yīng)的參數(shù)。

4. 控制器和路由:在Java Web應(yīng)用中,控制器和路由負(fù)責(zé)處理用戶的請求,并將相應(yīng)的數(shù)據(jù)傳遞給前端頁面。在通用分頁中,控制器會(huì)接收用戶請求的頁碼等參數(shù),并將相應(yīng)頁的數(shù)據(jù)查詢結(jié)果傳遞給頁面展示部分進(jìn)行渲染。

總體而言,Java通用分頁是通過數(shù)據(jù)庫查詢、分頁邏輯、頁面展示和控制器等組件配合工作,實(shí)現(xiàn)在Java Web應(yīng)用中對大量數(shù)據(jù)進(jìn)行分頁顯示的一種功能。它可以提升用戶體驗(yàn)、優(yōu)化數(shù)據(jù)加載性能,并方便用戶瀏覽和導(dǎo)航大數(shù)據(jù)集。

通用分頁通常會(huì)包括如下元素:

  • 1. 頁面切換按鈕或鏈接:用于在不同頁面之間切換。
  • 2. 當(dāng)前頁碼信息:顯示當(dāng)前所在的頁面。
  • 3. 總頁面數(shù)信息:顯示內(nèi)容總共被分成了多少頁。
  • 4. 上一頁和下一頁按鈕或鏈接:用于直接跳轉(zhuǎn)到上一頁或下一頁。
  • 5. 條目計(jì)數(shù)信息:顯示當(dāng)前頁面的內(nèi)容數(shù)量。

2.通用分頁的作用

Java通用分頁在Java Web應(yīng)用中具有以下幾個(gè)作用:

  • 1. 改善用戶體驗(yàn):通用分頁可以將大量數(shù)據(jù)分頁展示,避免一次性加載大量數(shù)據(jù)導(dǎo)致頁面加載過慢的問題。通過分頁顯示,用戶可以更快速地獲取所需信息,提升用戶體驗(yàn)。
  • 2. 優(yōu)化數(shù)據(jù)加載性能:通過分頁查詢,Java通用分頁可以減少每次數(shù)據(jù)查詢返回的數(shù)據(jù)量,減輕服務(wù)器的負(fù)載壓力,降低數(shù)據(jù)庫查詢的開銷,提高數(shù)據(jù)檢索的效率和性能。
  • 3. 方便數(shù)據(jù)導(dǎo)航和瀏覽:Java通用分頁提供了方便的導(dǎo)航和瀏覽功能,用戶可以通過頁碼導(dǎo)航、上一頁和下一頁按鈕等進(jìn)行頁面切換,快速瀏覽各個(gè)分頁的數(shù)據(jù)內(nèi)容。
  • 4. 防止數(shù)據(jù)溢出:當(dāng)需要展示的數(shù)據(jù)量非常大時(shí),如果不使用分頁,可能會(huì)導(dǎo)致內(nèi)存溢出或網(wǎng)絡(luò)傳輸超時(shí)等問題。通過使用Java通用分頁,將數(shù)據(jù)分批加載和展示,可以避免這種情況的發(fā)生。
  • 5. 支持可配置性:Java通用分頁通常提供了一些可配置的參數(shù),如每頁顯示的數(shù)據(jù)數(shù)量、排序規(guī)則等,允許用戶根據(jù)需求進(jìn)行個(gè)性化配置,滿足不同用戶對分頁展示的需求。

總之,Java通用分頁在Java Web應(yīng)用中起到提升用戶體驗(yàn)、優(yōu)化數(shù)據(jù)加載性能、支持?jǐn)?shù)據(jù)導(dǎo)航和瀏覽等作用。它使得展示大量數(shù)據(jù)更加高效、靈活,并能夠滿足用戶對數(shù)據(jù)展示的需求。

3. 通用分頁的優(yōu)缺點(diǎn)

Java通用分頁的優(yōu)點(diǎn):

  • 1. 提高用戶體驗(yàn):通用分頁可以將大量數(shù)據(jù)劃分為多個(gè)頁面,避免加載過長的頁面,提高頁面加載速度,讓用戶能夠快速瀏覽和查找所需內(nèi)容,提升用戶體驗(yàn)。
  • 2. 優(yōu)化性能:通過分頁查詢,可以減少一次性加載大量數(shù)據(jù)的開銷,節(jié)省內(nèi)存和網(wǎng)絡(luò)資源,提高數(shù)據(jù)查詢和展示性能,減輕服務(wù)器壓力。
  • 3. 方便導(dǎo)航和瀏覽:通用分頁提供了直觀的導(dǎo)航和瀏覽方式,用戶可以通過上一頁和下一頁按鈕或頁碼導(dǎo)航快速切換頁面,瀏覽不同頁的內(nèi)容,方便數(shù)據(jù)的導(dǎo)航和查找。
  • 4. 可配置性強(qiáng):通用分頁通常支持配置每頁顯示的數(shù)據(jù)量、排序規(guī)則等參數(shù),可以根據(jù)具體需求進(jìn)行個(gè)性化配置,滿足不同用戶的需求。
  • 5. 可復(fù)用性高:Java通用分頁的實(shí)現(xiàn)一般是基于模塊化和可擴(kuò)展的原則,通過封裝和抽象,可以將通用分頁的功能模塊復(fù)用于不同的應(yīng)用場景。

Java通用分頁的缺點(diǎn):

  • 1. 數(shù)據(jù)一致性:當(dāng)數(shù)據(jù)在分頁過程中發(fā)生變化時(shí),例如新增或刪除了一部分?jǐn)?shù)據(jù),會(huì)導(dǎo)致分頁結(jié)果的數(shù)據(jù)不一致性,需要注意及時(shí)更新分頁數(shù)據(jù)以保持一致性。
  • 2. 數(shù)據(jù)查詢效率:在某些場景下,特別是在數(shù)據(jù)量非常大的情況下,分頁查詢可能會(huì)對數(shù)據(jù)庫性能產(chǎn)生較大的影響,因?yàn)槊看尾樵冎环祷夭糠謹(jǐn)?shù)據(jù),可能需要多次查詢才能得到完整的結(jié)果。
  • 3. 分頁參數(shù)管理:在應(yīng)用中需要合理管理分頁的參數(shù),特別是上一頁、下一頁的狀態(tài)和頁碼等信息,這需要一定的編碼和邏輯控制,否則可能導(dǎo)致分頁顯示混亂或錯(cuò)誤。

需要根據(jù)具體應(yīng)用場景和需求綜合考慮這些優(yōu)缺點(diǎn),并選擇合適的實(shí)現(xiàn)方式以達(dá)到最佳的效果和用戶體驗(yàn)。

4.通用分頁的核心思想

Java通用分頁的核心思想是將大量數(shù)據(jù)進(jìn)行分割,每次只返回部分?jǐn)?shù)據(jù),以便更好地展示和處理數(shù)據(jù)。

其主要的核心思想包括:

  • 1. 數(shù)據(jù)切片:將大量數(shù)據(jù)劃分為多個(gè)較小的數(shù)據(jù)塊或頁,每頁包含固定數(shù)量的數(shù)據(jù)。這樣可以減少一次性加載所有數(shù)據(jù)的壓力,提高數(shù)據(jù)的檢索和加載性能。
  • 2. 分頁參數(shù):定義和管理分頁的參數(shù),例如當(dāng)前頁碼、每頁顯示的數(shù)據(jù)量等。通過這些參數(shù),可以精確控制要返回的數(shù)據(jù)范圍。
  • 3. 數(shù)據(jù)導(dǎo)航:提供導(dǎo)航和切換不同頁的功能,讓用戶能夠方便地瀏覽和導(dǎo)航數(shù)據(jù)。通常會(huì)包括上一頁和下一頁按鈕、頁碼導(dǎo)航等控件,用于切換不同頁的數(shù)據(jù)。
  • 4. 數(shù)據(jù)查詢和過濾:根據(jù)分頁參數(shù),對數(shù)據(jù)進(jìn)行查詢和篩選,只返回當(dāng)前頁的數(shù)據(jù)。這可以通過數(shù)據(jù)庫查詢語句的limit和offset等關(guān)鍵字來實(shí)現(xiàn),限制返回的數(shù)據(jù)量和數(shù)據(jù)起始位置。
  • 5. 數(shù)據(jù)展示和渲染:將查詢到的分頁數(shù)據(jù)進(jìn)行呈現(xiàn)和展示,可以使用Java的模板引擎或前端框架來實(shí)現(xiàn)數(shù)據(jù)的渲染和展示。

通過這些核心思想,Java通用分頁可以更好地控制數(shù)據(jù)的加載和展示,提高用戶體驗(yàn)和數(shù)據(jù)處理的效率。它允許大數(shù)據(jù)集的分頁展示,并提供了靈活的導(dǎo)航和配置選項(xiàng),滿足不同用戶對數(shù)據(jù)瀏覽需求的需求。

5.通用分頁實(shí)例

書籍實(shí)體類:

package com.liao.enity;
 
public class Book {
	private int bid;
	private String bname;
	private float price;
 
	@Override
	public String toString() {
		return "Book [bid=" + bid + ", bname=" + bname + ", price=" + price + "]";
	}
 
	public int getBid() {
		return bid;
	}
 
	public void setBid(int bid) {
		this.bid = bid;
	}
 
	public String getBname() {
		return bname;
	}
 
	public void setBname(String bname) {
		this.bname = bname;
	}
 
	public float getPrice() {
		return price;
	}
 
	public void setPrice(float price) {
		this.price = price;
	}
 
}

封裝pageBean類:

package com.liao.utils;
 
/**
 * 分頁工具類
 *
 */
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 + "]";
	}
 
}

書籍“分頁模糊查詢所有”方法

package com.liao.Dao;
 
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
 
import org.junit.Test;
 
import com.liao.enity.Book;
import com.liao.utils.DBAccess;
import com.liao.utils.PageBean;
import com.liao.utils.StringUtils;
/**
 * 傳統(tǒng)dao方法
 *	重復(fù)代碼:
 * Connection conn = DBAccess.getConnection();
 * CallableStatement ps = conn.prepareCall(sql);
   ResultSet rs = ps.executeQuery();
 * 
 * 流程重復(fù):
 * 1.需要?jiǎng)?chuàng)建數(shù)據(jù)庫表對應(yīng)的實(shí)體類對象
 * 2.將查詢出來的結(jié)果集添加到實(shí)例化對象屬性中
 * 3.已經(jīng)被填充的實(shí)體對象,加入集合中
 * while(rs.next()) {
			Book b = new Book();
			b.setBid(rs.getInt("bid"));
			b.setBname(rs.getString("bname"));
			b.setPrice(rs.getFloat("price"));
			list.add(b);
		}
 * 
 * 
 * 
 * @author Administrator
 *
 */
public class BookDao extends BaseDoa<Book>{
	/**
	 * 查詢Dao方法 優(yōu)化前
	 * @param book
	 * @param pagebean
	 * @return
	 * @throws Exception
	 */
	public List<Book> list1(Book book,PageBean pagebean) throws Exception{
		List<Book> list = new ArrayList<Book>();
		//獲取連接
		Connection conn = DBAccess.getConnection();
		//查詢sql語句
		String sql ="select * from t_mvc_book where 1=1 ";
		String bname = book.getBname();
		if(StringUtils.isNotBlank(bname)) {
			sql += "and bname like '%"+bname+"%'";
		}
		CallableStatement ps = conn.prepareCall(sql);
		ResultSet rs = ps.executeQuery();
		while(rs.next()) {
			Book b = new Book();
			b.setBid(rs.getInt("bid"));
			b.setBname(rs.getString("bname"));
			b.setPrice(rs.getFloat("price"));
			list.add(b);
		}
		return list;
	}
 
	
	
	/**
	 * 優(yōu)化后
	 * @param book
	 * @param pagebean
	 * @return
	 * @throws Exception
	 */
	public List<Book> list2(Book book,PageBean pagebean) throws Exception{
		//查詢sql語句
		String sql ="select * from t_mvc_book where 1=1 ";
		String bname = book.getBname();
		if(StringUtils.isNotBlank(bname)) {
			sql += "and bname like '%"+bname+"%'";
		}
		return super.executeQuery(sql, Book.class, pagebean);
		
	}
	
 
	
	public static void main(String[] args) throws Exception {
		BookDao bookDao = new BookDao();
		Book book = new Book();
		book.setBname("圣墟");
		PageBean pagebean = new PageBean();
		List<Book> list = bookDao.list2(book, pagebean);
		//查詢第二頁
		pagebean.setPage(2);
		for (Book b : list) {
			System.out.println(b);
		}
//		bookDao.list2(book, pagebean);
//		查詢總記錄數(shù)
		System.out.println(pagebean);
	}
	
 
	
	
	
}

 封裝baseDao通用分頁模糊查詢的方法

package com.liao.Dao;
 
import java.lang.reflect.Field;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
 
import com.liao.enity.Book;
import com.liao.utils.DBAccess;
import com.liao.utils.PageBean;
import com.liao.utils.StringUtils;
/**
 */
public class BaseDoa<T> {
	/**
	 * 通用Dao 利用反射機(jī)制
	 * @param sql 
	 * @param cls
	 * @param pagebean
	 * @return
	 * @throws Exception
	 */
	public List<T> executeQuery(String sql,Class cls,PageBean pagebean) throws Exception{
		List<T> list = new ArrayList<T>();
		
		Connection conn = null;
	
		CallableStatement ps = null;
		ResultSet rs = null;
//		select * from t_mvc_book where bname LIKE '%圣墟%'
//		SELECT count(1) as n from (SELECT * FROM t_mvc_book WHERE bname LIKE '%圣墟%') t
//		select * from t_mvc_book where bname LIKE '%圣墟%' LIMIT 0,10
		if(pagebean !=null && pagebean.isPagination()) {
			String countSQL = getcount(sql);
			conn = DBAccess.getConnection();
			 ps = conn.prepareCall(countSQL);
			 rs = ps.executeQuery();
			 
			 if(rs.next()){
				 pagebean.setTotal(rs.getObject("n").toString());
				 
			 }
			 
			String pageSQL = getpage(sql,pagebean); 
			conn = DBAccess.getConnection();
			 ps = conn.prepareCall(pageSQL);
			 rs = ps.executeQuery();
			
			
		}else {
			conn = DBAccess.getConnection();
			 ps = conn.prepareCall(sql);
			 rs = ps.executeQuery();
		}
		
		
		
		
		
		
		
		while(rs.next()) {
			T t =(T) cls.newInstance();
			Field[] fields = cls.getDeclaredFields();
			for (Field f : fields) {
				f.setAccessible(true);
				f.set(t, rs.getObject(f.getName()));
			
			}
			list.add(t);
			
			
		}
		return list;
	}
 
	
	
	/**
	 *  拼接最終展示數(shù)據(jù)
	 * @param sql 原生態(tài)sql語句
	 * @param pagebean
	 * @return
	 */
	private String getpage(String sql, PageBean pagebean) {
		
		return sql+"LIMIT "+pagebean.getStartIndex()+","+pagebean.getRows();
	}
	/**
	 * 拼接出查詢符合條件的總記錄數(shù)sql
	 * @param sql
	 * @return
	 */
	private String getcount(String sql) {
		// TODO Auto-generated method stub
		return "SELECT count(1) as n from ("+sql+") t";
	}
}

運(yùn)行結(jié)果:

使用工具: MySQL數(shù)據(jù)庫,eclipse

6.單元測試框架JUnit4

JUnit是一個(gè)廣泛使用的Java單元測試框架,其最新版本為JUnit 5。

JUnit 4提供了一組基于注解的API來編寫和運(yùn)行單元測試。以下是JUnit 4的一些主要特點(diǎn)和用法:

  • 1. 定義測試方法:通過在測試方法上添加@Test注解,可以將普通的Java方法標(biāo)記為測試方法,JUnit會(huì)自動(dòng)執(zhí)行這些測試方法并驗(yàn)證預(yù)期的行為和結(jié)果。
  • 2. 設(shè)置測試前置條件:@Before和@BeforeClass注解用于在每個(gè)測試方法和測試類之前執(zhí)行指定的方法,可以用來初始化測試環(huán)境或加載測試數(shù)據(jù)。
  • 3. 設(shè)置測試后置條件:@After和@AfterClass注解用于在每個(gè)測試方法和測試類之后執(zhí)行指定的方法,可以用來清理臨時(shí)數(shù)據(jù)或資源。
  • 4. 斷言和驗(yàn)證:JUnit提供了一組斷言方法(如assertEquals、assertTrue、assertFalse等)來驗(yàn)證實(shí)際結(jié)果與預(yù)期結(jié)果是否一致。如果斷言失敗,測試將會(huì)被標(biāo)記為失敗。
  • 5. 異常測試:通過在測試方法上添加@Test注解,并指定期望拋出的異常類型,可以對拋出異常的情況進(jìn)行測試,確保代碼在異常條件下能夠正確處理。
  • 6. 參數(shù)化測試:通過使用@RunWith(Parameterized.class)注解和@Parameters注解,可以支持參數(shù)化測試,即對同一個(gè)測試方法進(jìn)行多組參數(shù)的測試。
  • 7. 忽略測試:通過在測試方法上添加@Ignore注解,可以標(biāo)記某個(gè)測試方法為忽略,JUnit將不會(huì)執(zhí)行該測試方法。

除了以上的功能,JUnit 4還支持測試套件(@RunWith(Suite.class))、超時(shí)設(shè)置(@Test(timeout = xxx))、測試規(guī)則(@Rule)等高級(jí)特性,可以進(jìn)行更靈活、高效的單元測試。

下面是一個(gè)簡單的JUnit 4測試類的示例:

 
import org.junit.Test;
import static org.junit.Assert.*;
 
public class MyTest {
    @Test
    public void testAddition() {
        int result = 2 + 2;
        assertEquals(4, result);
    }
}
```

在這個(gè)示例中,我們使用@Test注解將方法testAddition標(biāo)記為測試方法,并使用assertEquals斷言來驗(yàn)證加法的結(jié)果。

以上是一些JUnit 4的主要特點(diǎn)和用法,JUnit 4是Java開發(fā)中非常常用的單元測試框架,它可以幫助開發(fā)者編寫可靠的、自動(dòng)化的測試代碼來驗(yàn)證程序的正確性,提高代碼質(zhì)量和可維護(hù)性。

 eclipse中使用JUnit4

第一步:選擇并且需要添加JUnit4的項(xiàng)目

操作步驟如下:

第二步: 

 

第三步:

保存并且關(guān)閉即可完成

為什么是JUnit4不是JUnit5?

以下是JUnit 4和JUnit 5的一些主要對比:

  • 編程模型:JUnit 4使用基于注解的編程模型,而JUnit 5引入了基于注解與基于擴(kuò)展模型的組合。JUnit 5引入了新的注解和接口,如@Test、@BeforeAll、@AfterAll 等注解,以及TestInstance.Lifecycle等接口,幫助開發(fā)者更靈活地編寫測試代碼。
  • 擴(kuò)展性:JUnit 5提供了更靈活的擴(kuò)展機(jī)制,支持自定義擴(kuò)展,編寫測試擴(kuò)展可以實(shí)現(xiàn)更強(qiáng)大的測試功能,如參數(shù)化測試、條件執(zhí)行等。
  • 參數(shù)化測試:JUnit 4中參數(shù)化測試是通過使用特定的庫來實(shí)現(xiàn),而JUnit 5內(nèi)置了參數(shù)化測試的支持,提供了更簡潔、易讀的語法。JUnit 5的參數(shù)化測試使用@ParameterizedTest、@ValueSource等注解,更方便地進(jìn)行參數(shù)化測試。
  • 條件執(zhí)行:JUnit 5引入了@EnabledXxx與@DisabledXxx注解,可以根據(jù)條件更靈活地決定是否執(zhí)行某個(gè)測試方法或整個(gè)測試類。
  • 斷言庫:JUnit 5支持使用不同的斷言庫,不再限定于JUnit 4的斷言方法。JUnit 5內(nèi)置的斷言方法更加靈活、易于使用,并提供了額外的功能,如展示自定義失敗消息、懶加載、對比器等。
  • 兼容性 :JUnit 4和JUnit 5的測試代碼在語法上是不兼容的。JUnit 5是作為獨(dú)立的框架,并且允許與JUnit 4的測試代碼共存,但需要使用適配器或運(yùn)行器來運(yùn)行JUnit 4的測試。
  • 并行執(zhí)行:JUnit 5支持并行執(zhí)行測試。可以通過在測試類上添加@Execution注解來指定并行執(zhí)行的策略。

總的來說,JUnit 5在擴(kuò)展性、參數(shù)化測試和條件執(zhí)行等方面改進(jìn)了JUnit 4,提供了更多的靈活性和功能。它還提供了更簡潔、易用的斷言方法和更好的兼容性。無論使用JUnit 4還是JUnit 5,都能夠有效地進(jìn)行Java單元測試,具體選擇取決于項(xiàng)目需求和個(gè)人喜好。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot 限制IP訪問指定的網(wǎng)址實(shí)現(xiàn)

    Springboot 限制IP訪問指定的網(wǎng)址實(shí)現(xiàn)

    本文主要介紹了Springboot 限制IP訪問指定的網(wǎng)址實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Mybatis Properties 配置優(yōu)先級(jí)詳解

    Mybatis Properties 配置優(yōu)先級(jí)詳解

    這篇文章主要介紹了Mybatis Properties 配置優(yōu)先級(jí),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問題

    解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問題

    這篇文章主要介紹了解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringBoot整合SSO(single sign on)單點(diǎn)登錄

    SpringBoot整合SSO(single sign on)單點(diǎn)登錄

    這篇文章主要介紹了SpringBoot整合SSO(single sign on)單點(diǎn)登錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • SpringBoot實(shí)現(xiàn)返回值數(shù)據(jù)脫敏的步驟詳解

    SpringBoot實(shí)現(xiàn)返回值數(shù)據(jù)脫敏的步驟詳解

    這篇文章主要給大家介紹一下SpringBoot實(shí)現(xiàn)返回值數(shù)據(jù)脫敏的步驟,文章通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java Calendar日歷類原理及使用方法

    Java Calendar日歷類原理及使用方法

    這篇文章主要介紹了Java Calendar日歷類原理及使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • SpringMVC中controller接收json數(shù)據(jù)的方法

    SpringMVC中controller接收json數(shù)據(jù)的方法

    這篇文章主要為大家詳細(xì)介紹了SpringMVC中controller接收json數(shù)據(jù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Springboot+WebSocket實(shí)現(xiàn)在線聊天功能

    Springboot+WebSocket實(shí)現(xiàn)在線聊天功能

    WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。這篇文章主要為大家介紹了如何利用Springboot和WebSocket實(shí)現(xiàn)在線聊天功能,感興趣的小伙伴可以了解一下
    2023-02-02
  • Spring依賴注入和控制反轉(zhuǎn)詳情

    Spring依賴注入和控制反轉(zhuǎn)詳情

    這篇文章主要介紹了Spring依賴注入和控制反轉(zhuǎn)詳情,控制反轉(zhuǎn)是面向?qū)ο缶幊讨惺褂玫男g(shù)語,通過該術(shù)語,對象或?qū)ο蠹目刂茩?quán)被賦予框架或由框架提供的容器。下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • DragChartPanel可拖拽曲線應(yīng)用詳解

    DragChartPanel可拖拽曲線應(yīng)用詳解

    這篇文章主要為大家詳細(xì)介紹了DragChartPanel可拖拽曲線的應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評(píng)論