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. Solr 4.0 基础教程

    本文只是Solr 4.0的基础教程,本人不经常写东西,写的不好请见谅,欢迎到群233413850进行讨论学习. 转载请标明原文地址:http://my.oschina.net/zhanyu/blog/ ...

  2. 使用SwingWorker异步加载JTree

    SwingWorker是Java SE 6.0新加入的一个工具包,利用它可以使长时间运行并更新用户界面的任务大大简化.本文以一个异步加载JTree的demo演示了SwingWorker的基本功能. 环 ...

  3. wait、notify、notifyAll

    介绍 wait 方法前提需要拥有锁.使用wait方法后,释放锁进行等待队列. notify 方法从等待队列移除一个元素. notifyAll 将等待队列中元素全部进行移出. 注意:notify.not ...

  4. kettle 简单使用

    概要 KETTLE 是一个ETL工具,它可以在不同的数据源之间进行数据的抽取转换.下面简单介绍一下他是如何使用的. 下载 https://nchc.dl.sourceforge.net/project ...

  5. Http请求报文(请求行,请求头、请求体)

    Http请求报文: http请求报文由3部分组成,请求行,请求头,请求体. 一.请求行: 请求方法.URL地址.协议版本 请求方法:POST.GET.DELETE.PUT.HEAD.OPTIONS.T ...

  6. .net delegate 万能适配

    遇到一个技术点,记一下,.net 有一个 Delegate Marshall.GetDelegateForFunctionPointer(IntPtr ptr, Type t) 用来将内存地址映射为一 ...

  7. Spring完全注解开发

    注解的好处:如果管理很多的Bean,要求这些Bean都配置在applocationContext.xml文件中.用了注解之后,就不需要在xml文件中配置了,Spring提供了几个辅助类会自动扫描和装配 ...

  8. 若依多模块版本,Linux下用Tomcat部署

    若依多模块版本 简介 下载地址 https://gitee.com/y_project/RuoYi 下载项目,打war包 下载项目 到 Gitee 下载项目 用 idea 打开,会自动下载 pom 依 ...

  9. Qt编写安防视频监控系统49-多数据库支持

    一.前言 数据库设置模块,因为很多项目都会用到,索性这期间也将这玩意重新架构了一遍,对应的数据库组件同样重写了一遍,关于数据库的参数无非就6个,数据库类型(sqlite.mysql等).数据库名称.主 ...

  10. Qt通用方法及类库8

    函数名 //异或加密算法 static QString getXorEncryptDecrypt(const QString &str, char key); //异或校验 static uc ...