成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Spring Boot和Next.js創(chuàng)建全棧應(yīng)用指南

開發(fā)
本文旨在教您如何在Spring Boot環(huán)境中實現(xiàn)與Next.js應(yīng)用程序的無縫集成,確保瀏覽器刷新和直接URL輸入等場景能夠得到正確處理,并同時利用Next.js的靜態(tài)資源。

在構(gòu)建Web應(yīng)用程序時,越來越多的開發(fā)者選擇將Next.js用于前端,Spring Boot用于后端。Next.js以其高效構(gòu)建前端應(yīng)用程序的方式贏得了開發(fā)者的青睞;利用Next.js,您可以靈活地創(chuàng)建全棧應(yīng)用程序,并配備自定義API。然而,在某些情況下,您可能希望將前端的靜態(tài)資源與后端應(yīng)用程序進(jìn)行無縫集成,以提供更好的用戶體驗。

本文旨在教您如何在Spring Boot環(huán)境中實現(xiàn)與Next.js應(yīng)用程序的無縫集成,確保瀏覽器刷新和直接URL輸入等場景能夠得到正確處理,并同時利用Next.js的靜態(tài)資源。

1. 使用以下命令創(chuàng)建Next.js應(yīng)用程序

npx create-next-app@latest

此命令將使用最新版本設(shè)置一個新的Next.js項目,為您構(gòu)建前端提供堅實的基礎(chǔ)。

創(chuàng)建Next.js項目后,打開您喜歡的文本編輯器,如Visual Studio Code。這樣可以讓您處理前端代碼并進(jìn)行必要的修改。

在package.json和next.config.js中進(jìn)行必要的更改并構(gòu)建項目。

2. 從后端獲取數(shù)據(jù)

在Next.js項目中創(chuàng)建一個名為list.js的文件,負(fù)責(zé)從Spring Boot API獲取數(shù)據(jù)。實現(xiàn)從后端檢索數(shù)據(jù)并在前端呈現(xiàn)的必要邏輯。

function List() {
    const [list, setList] = useState([])
    const fetchList = () => {
        fetch("/e3docs/getlist")
            .then(response => {
                return response.json()
            })
            .then(data => {
                setList(data)
            })
    }
    useEffect(() => {
        fetchList()
    }, [])
    function getlist() {
        return list.map((item, i) => {
            return (
                <Fragment key={i}>
                    <tr>
                        <td>
                            {(i + 1)}
                        </td>
                        <td>
                            {item}
                        </td>
                    </tr>
                </Fragment>
            );
        })
    }
    return (
        <main>
            <div style={{ paddingLeft: '34%', paddingTop: '2%', display: 'flex' }}>
                <h2 style={{ paddingRight: '10px' }}>
                    <Link href="/">Home</Link>
                </h2>
                <h2>
                    <Link href="/list">List</Link>
                </h2>
            </div>
            <div style={{ paddingLeft: '34%', paddingTop: '3%' }}>
                <table>
                    <thead>
                        <tr>
                            <th>No.</th>
                            <th>Description</th>
                        </tr>
                    </thead>
                    <tbody>
                        {list.length > 0 && (getlist())}
                    </tbody>
                </table >
            </div>
        </main>
    );
}
export default List;

3. 創(chuàng)建新頁面處理Web應(yīng)用程序的刷新和直接URL輸入

為了處理Web應(yīng)用程序的刷新或直接URL輸入等情況,在Next.js項目中創(chuàng)建一個新頁面。該頁面將幫助處理Next.js中的404錯誤頁面,當(dāng)用戶在瀏覽器中輸入直接URL或刷新頁面時。

function PageRefresh() {
    const router = useRouter();
    useEffect(() => {
        if (router.isReady) {
            router.push(router.asPath).catch((e) => {
                router.push('/_error');
            });
        }
    }, [router.isReady])
    return (
        <div>Loading...</div>
    );
}
export default PageRefresh;

構(gòu)建并導(dǎo)出一個Next.js項目,將創(chuàng)建一個帶有已編譯和優(yōu)化的Next.js應(yīng)用程序的“out”文件夾。

4. 使用Spring Initializr創(chuàng)建新Spring Boot項目

使用Spring Initializr創(chuàng)建一個新的Spring Boot項目。指定必要的依賴項和項目設(shè)置,并生成項目結(jié)構(gòu)。

生成項目后,找到build.gradle文件,并使用任何額外的依賴項或插件更新它。該文件用作構(gòu)建系統(tǒng)的配置。

5. 為API創(chuàng)建控制器類

為了處理API請求,在Spring Boot項目中創(chuàng)建一個控制器類。該類將負(fù)責(zé)處理與Next.js前端應(yīng)用程序的通信,并提供必要的數(shù)據(jù)。

@RestController
@RequestMapping("e3docs")
public class E3DocsController {
 @GetMapping("/getlist")
 public List<String> getList() {
  List<String> list = new ArrayList<String>();
  list.add("India");
  list.add("China");
  list.add("United States(US)");
  list.add("Russia");
  list.add("Australia");
  list.add("African");
  list.add("Europe");
  return list;
 }
}

6. 為Next.js集成創(chuàng)建過濾器組件

為了實現(xiàn)Spring Boot后端和Next.js前端的順暢集成,創(chuàng)建一個過濾器組件。該組件將攔截請求并執(zhí)行必要的操作,如直接輸入URL或頁面刷新。

@Component
public class PageRefreshFilter implements Filter {
    private static final String PAGE = "/pagerefresh/pagerefresh.html";
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        doFilter((HttpServletRequest) request, (HttpServletResponse) response, chain);
    }
    private void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        String path = request.getServletPath();
        if ("/".equals(path) || path.contains(".") || path.contains("e3docs")) {
            chain.doFilter(request, response);
        } else {
            request.getRequestDispatcher(PAGE).forward(request, response);
        }
    }
}

7. 與后端集成前端

將Next.js項目的“out”文件夾中的靜態(tài)內(nèi)容復(fù)制到Spring Boot項目的/src/main/resources/static文件夾中。這樣可以確保前端資源可以從Spring Boot服務(wù)器訪問。

通過運(yùn)行以下命令構(gòu)建Spring Boot項目:

gradlew clean assemble

成功完成構(gòu)建過程后,您會在“build/distributions”目錄中找到一個zip文件。解壓縮此zip文件的內(nèi)容,并執(zhí)行相應(yīng)的腳本,例如批處理文件(.bat),以啟動Spring Boot服務(wù)器。

一旦服務(wù)器開始運(yùn)行,您可以通過打開Web瀏覽器并輸入以下URL來訪問應(yīng)用程序:http://localhost:8080。這將使您能夠與Spring Boot應(yīng)用程序無縫交互。

責(zé)任編輯:趙寧寧 來源: Java學(xué)研大本營
相關(guān)推薦

2024-05-09 09:01:03

2022-08-02 09:00:00

開發(fā)Web工具

2024-04-28 10:56:34

Next.jsWeb應(yīng)用搜索引擎優(yōu)化

2024-09-04 10:27:53

2023-11-02 08:01:06

Next.jsReactWeb

2024-04-03 13:27:28

Next.js擴(kuò)展項目

2025-03-31 00:00:00

?增量靜態(tài)再生Next.jsISR

2024-12-20 07:30:00

重定向服務(wù)器端指令Next.js

2025-03-21 00:05:00

2020-12-14 11:40:27

Next.js SSRReact

2025-02-03 00:00:35

2025-05-22 02:00:00

AI人工智能前端

2024-03-22 11:40:40

Node.jsNodeCRUD

2023-09-04 08:20:00

2024-12-13 08:37:32

2023-11-16 07:43:26

Next.jsReact

2022-10-13 18:54:57

JavaScriptQwikReact

2025-05-22 06:48:50

RAGAI應(yīng)用開發(fā)框架DeepSeek

2021-11-26 10:29:24

jsRemix開源

2025-02-05 07:00:00

Next.jsWeb前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 黄色一级大片在线免费看产 | 色在线免费视频 | 在线观看中文字幕 | 欧美一级三级 | 红桃视频一区二区三区免费 | 日韩高清www | 中国一级特黄真人毛片 | 天天干天天爱天天爽 | 日韩在线视频一区 | 成人在线免费电影 | 99热精品久久 | 日韩三区在线 | 国产精品久久久久久久久动漫 | www.日韩在线| 毛片一区| 97精品超碰一区二区三区 | 中文久久 | 欧美日韩在线高清 | 亚洲欧美日韩一区二区 | av片毛片 | 亚洲精品自在在线观看 | 中文字幕久久久 | 亚洲欧美一区二区三区国产精品 | 91精品一区二区三区久久久久久 | 国产精品免费在线 | 欧美一级黄色片免费观看 | 国产美女特级嫩嫩嫩bbb片 | 中文av在线播放 | 黄色一级免费 | 国产精品区一区二区三区 | 久久一区二区视频 | 国产午夜精品福利 | 亚洲国产一区在线 | 成人在线一区二区 | 99视频精品 | 三级成人在线 | 日韩精品一区二区三区中文字幕 | 国产精品99免费视频 | 99精品在线观看 | 国产精品美女久久久久久不卡 | 欧美综合在线视频 |