Spring Boot前后端分离直接访问静态页+ajax实现动态网页。

  一般java里面Spring Boot项目的静态资源resources/下面有两个文件夹和一个配置文件,分别是static/目录,templates/目录,application.properties配置文件。

static/目录是用来放置纯静态资源,比如js,css,html,图片,视频,音频等;

static/目录是放置页面模板,springboot访问template依靠thymeleaf模板,并且spring.thymeleaf.enabled=true才行。

这里我不想用thymeleaf模板,前后端分离直接访问静态页+ajax实现动态网页。那么我可以将.html页面直接放到static/目录下然后通过Controller访问。

示例:

package com.xxh.demo.account;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView; import java.util.ArrayList; @Controller
@RequestMapping("/account")
public class login {
/* 请求响应返回字符串 */
@RequestMapping("/hello")
@ResponseBody
public String world() {
System.out.println("/account/hello > return String Hello world!");
return "Hello world!";
}
/* 请求响应返回JSON数据 */
@RequestMapping("/hello2")
@ResponseBody
public ArrayList world2() {
System.out.println("/account/hello2 > return json data.");
ArrayList al = new ArrayList<String>();
al.add("曹操");
al.add("刘备");
al.add("孙权");
return al;
}
/* 请求响应返回/static/下的静态页面(需要在 .properties中添加:spring.mvc.static-path-pattern=/static/** ) */
@RequestMapping("/")
public String index() {
System.out.println("/account/ > /static/index.html");
return "/static/index.html";
} /* 请求响应返回/templates/下的静态页面响应404,无法直接访问 */
@RequestMapping("/index")
public String index2() {
System.out.println("/account/index > /templates/index.html");
return "/templates/index.html";
} /* 用ModelAndView也可以返回/static/下的静态页面(需要在 .properties中添加:spring.mvc.static-path-pattern=/static/** ) */
@RequestMapping("/login")
public ModelAndView login() {
System.out.println("/account/login > login.html");
ArrayList al = new ArrayList<String>();
al.add("曹操");
al.add("刘备");
al.add("孙权"); ModelAndView mv = new ModelAndView();
mv.setViewName("/static/index.html"); // 这是视图名称 或 路径/视图名称
mv.addObject("myEntity", al); // 请求返回实体变量名及实体对象
return mv;
}
}

同时,要想static下的静态文件能被访问,需要在application.properties配置文件里面添加:spring.mvc.static-path-pattern=/static/**

# 应用名称
spring.application.name=demo
# 应用服务 WEB 访问端口
server.port=8080 # 允许/static/下的静态资源被访问,否则404错误
spring.mvc.static-path-pattern=/static/**

页面结构:

访问效果:

上一篇:idea创建一个入门Spring Boot项目(controller层)使用Maven代码管理

下一篇:Java一个入门级MVC基于Spring Boot项目

【完】

Spring Boot前后端分离直接访问静态页+ajax实现动态网页的更多相关文章

  1. 八个开源的 Spring Boot 前后端分离项目,一定要收藏!

    八个开源的 Spring Boot 前后端分离项目 最近前后端分离已经在慢慢走进各公司的技术栈,不少公司都已经切换到这个技术栈上面了.即使贵司目前没有切换到这个技术栈上面,我们也非常建议大家学习一下前 ...

  2. Vue+Spring Boot 前后端分离的商城项目开源啦!

    新蜂商城 Vue 移动端版本开源啦! 去年开源新蜂商城项目后,就一直在计划这个项目 Vue 版本的改造,2020 年开始开发并且自己私下一直在测试,之前也有文章介绍过测试过程和存在的问题,修改完成后, ...

  3. 七个开源的 Spring Boot 前后端分离项目,一定要收藏!

    前后端分离已经在慢慢走进各公司的技术栈,根据松哥了解到的消息,不少公司都已经切换到这个技术栈上面了.即使贵司目前没有切换到这个技术栈上面,松哥也非常建议大家学习一下前后端分离开发,以免在公司干了两三年 ...

  4. 七:Spring Security 前后端分离登录,非法请求直接返回 JSON

    Spring Security 前后端分离登录,非法请求直接返回 JSON 解决方案 在 Spring Security 中未获认证的请求默认会重定向到登录页,但是在前后端分离的登录中,这个默认行为则 ...

  5. 前后端分离,如何在前端项目中动态插入后端API基地址?(in docker)

    开门见山,本文分享前后端分离,容器化前端项目时动态插入后端API基地址,这是一个很赞的实践,解决了前端项目容器化过程中受制后端调用的尴尬. 尴尬从何而来 常见的web前后端分离:前后端分开部署,前端项 ...

  6. spring boot + spring security +前后端分离【跨域】配置 + ajax的json传输数据

    1.前言 网上各个社区的博客参差不齐 ,给初学者很大的困扰 , 我琢磨了一天一夜,到各个社区找资料,然后不断测试,遇到各种坑,一言难尽啊,要么源码只有一部分,要么直接报错... 最后实在不行,直接去看 ...

  7. Spring Cloud 前后端分离后引起的跨域访问解决方案

    背景 Spring Cloud 微服务试点改造,目前在尝试前后端分离. 前台A应用(本机8080端口),通过网管(本机8769端口)调用后台应用B(本机8082端口).应用C发布的http服务.. A ...

  8. vue + spring boot + spring security 前后端分离 携带 Cookie 登录实现 只写了个登录

    最近想弄一下vue 所以就自己给自己找坑入   结果弄的满身是伤 哈哈哈 首先我说下 前后端分离  跨域请求  我在网上找了一些  可是都是针对于 spring boot 的 我自己还有 securi ...

  9. Spring Security 前后端分离登录,非法请求直接返回 JSON

    hello 各位小伙伴,国庆节终于过完啦,松哥也回来啦,今天开始咱们继续发干货! 关于 Spring Security,松哥之前发过多篇文章和大家聊聊这个安全框架的使用: 手把手带你入门 Spring ...

  10. 前后端分离 导致的 静态页面 加载 <script type="module" > 报CORS 跨域错误,提示 blocked by CORS policy

    1.前言 静态页面 加载 <script type="module" > 报CORS 跨域错误,提示Access to script at ftp:///xxx.js ...

随机推荐

  1. 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现十

    一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...

  2. Cursor使用

    Cursor是一款AI 代码编辑器,官网地址为https://www.cursor.com/,直接在官网下载安装即可,基于VS Code二次开发而来,之所以没有采用插件方式,在官方网站上给出的答案是某 ...

  3. .NET Core 委托底层原理浅谈

    简介 .NET通过委托来提供回调函数机制,与C/C++不同的是,委托确保回调是类型安全,且允许多播委托.并支持调用静态/实例方法. 简单来说,C++的函数指针有如下功能限制,委托作为C#中的上位替代, ...

  4. 基站定位与Wi-Fi定位?看这篇就够了

    ​ 同学们纷纷发出需求,要求特别讲解Air780EP模组AT开发基站定位与Wi-Fi定位应用示例. 本文同样适用于以下型号:Air700ECQ/Air700EAQ/Air700EMQAir780EQ/ ...

  5. QT5.15.2 连接MySQL 驱动问题解决方案,无论菜鸟🐦️还是老鸟🦜,解决了就是好鸟🦚

    最新在学QT,现在QT只能在线安装了,用了几天,看到数据库时,需要用MySQL,结果出现了问题. QSqlDatabase: QMYSQL driver not loaded. QSqlDatabas ...

  6. json编码格式化美化

    有时候你想存储一个json到文件中,然后让别人调用或者读取或者作为临时存储,诸如此类. 但是php json_encode后数据是压缩的没有格式化,导致读起来有点费劲. 所以你可以这样(php 5.4 ...

  7. ScheduledThreadPoolExecutor与System#nanoTime

    一直流传着Timer使用的是绝对时间,ScheduledThreadPoolExecutor使用的是相对时间,那么ScheduledThreadPoolExecutor是如何实现相对时间的? 先看看S ...

  8. VLM-OCR-Demo:一个使用VLM用于OCR任务的示例

    前言 上一篇文章TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面中我们构建了一个方便使用TesseractOCR的用户界面,今天构建一个类似的界面,使用 ...

  9. 下列哪个选项是对 WebSocket 的正确描述?

    A.  一种扩展 HTTP 的协议,通信消息以 XML 格式描述. B.  使用 http或https作为URI连接的前缀,并使用与HTTP和HTTPS相同的端口号进行通信. C.  它是一种双向通信 ...

  10. Ant Design Pro项目ProTable怎么获取搜索表单值

    前情 公司有经常需要做一些后台管理页面,我们选择了Ant Design Pro,它是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案. 产品效果图 最新接到的一个后 ...