本文旨在教您如何在Spring Boot环境中实现与Next.js应用程序的无缝集成,确保浏览器刷新和直接URL输入等场景能够得到正确处理,并同时利用Next.js的静态资源。
1. 使用以下命令创建Next.js应用程序
npx create-next-app@latest
此命令将使用最新版本设置一个新的Next.js项目,为您构建前端提供坚实的基础。
创建Next.js项目后,打开您喜欢的文本编辑器,如Visual Studio Code。这样可以让您处理前端代码并进行必要的修改。
在package.json和next.config.js中进行必要的更改并构建项目。
2. 从后端获取数据
在Next.js项目中创建一个名为list.js的文件,负责从Spring Boot API获取数据。实现从后端检索数据并在前端呈现的必要逻辑。
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 (
{(i + 1)}
{item}
);
})
}
return (
Home
List
No.
Description
{list.length > 0 && (getlist())}
);
}
export default List;3. 创建新页面处理Web应用程序的刷新和直接URL输入
为了处理Web应用程序的刷新或直接URL输入等情况,在Next.js项目中创建一个新页面。该页面将帮助处理Next.js中的404错误页面,当用户在浏览器中输入直接URL或刷新页面时。
function PageRefresh() {
const router = useRouter();
useEffect(() => {
if (router.isReady) {
router.push(router.asPath).catch((e) => {
router.push('/_error');
});
}
}, [router.isReady])
return (
Loading...
);
}
export default PageRefresh;
构建并导出一个Next.js项目,将创建一个带有已编译和优化的Next.js应用程序的“out”文件夹。
4. 使用Spring Initializr创建新Spring Boot项目
使用Spring Initializr创建一个新的Spring Boot项目。指定必要的依赖项和项目设置,并生成项目结构。
生成项目后,找到build.gradle文件,并使用任何额外的依赖项或插件更新它。该文件用作构建系统的配置。
5. 为API创建控制器类
为了处理API请求,在Spring Boot项目中创建一个控制器类。该类将负责处理与Next.js前端应用程序的通信,并提供必要的数据。
@RestController
@RequestMapping("e3docs")
public class E3DocsController {
@GetMapping("/getlist")
public List getList() {
List list = new ArrayList();
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集成创建过滤器组件
为了实现Spring Boot后端和Next.js前端的顺畅集成,创建一个过滤器组件。该组件将拦截请求并执行必要的操作,如直接输入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”文件夹中的静态内容复制到Spring Boot项目的/src/main/resources/static文件夹中。这样可以确保前端资源可以从Spring Boot服务器访问。
通过运行以下命令构建Spring Boot项目:
gradlew clean assemble
成功完成构建过程后,您会在“build/distributions”目录中找到一个zip文件。解压缩此zip文件的内容,并执行相应的脚本,例如批处理文件(.bat),以启动Spring Boot服务器。
一旦服务器开始运行,您可以通过打开Web浏览器并输入以下URL来访问应用程序:http://localhost:8080。这将使您能够与Spring Boot应用程序无缝交互。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 如何在 Java 中实现对正方形的缩放操作?(如何在Java中对正方形进行缩放操作)
- 如何正确使用 Java 的 join 方法?(java join方法怎么使用)
- Java 中 DecimalFormat 在哪些场景下使用较为合适?(Java DecimalFormat在哪里使用合适)
- 如何确保Redis客户端的安全性:实用技巧与最佳实践
- 在 JavaScript 中如何使用 parentNode?(javascript中的parentNode怎么用)
- 如何高效编码 Java Supplier 接口?(java supplier接口的高效编码技巧)
- 如何进行 Java NoSQL 查询优化?(java nosql查询优化怎样进行)
- Java 中 `equals()` 的核心究竟是什么?(java eques的核心是什么)
- Java代理模式的优缺点分别有哪些?(Java代理模式有哪些优缺点)
- 2024下半年北京软考成绩复查时间及流程