前后端交互(springboot + jQuery) 1路径配置 2跨域问题
我的示例project的结构
【1】路径配置
(例如,我的java包是 com.example.test2.config)
一、在pom.xml里加一段下面的代码
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-thymeleaf</artifactId>
-
</dependency>
二、新建一个java类,放入下面的代码
-
package com.example.test2.config;
-
-
import org.springframework.context.annotation.Configuration;
-
import org.springframework.util.ResourceUtils;
-
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-
-
public class WebConfig implements WebMvcConfigurer {
-
-
public void addResourceHandlers(ResourceHandlerRegistry registry) {
-
registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX "/static/");
-
}
-
}
三、在application.properties文件加入
spring.thymeleaf.mode=HTML
(下面是我的application.properties示例代码,具体看自己的代码调整)
-
server.port=8082
-
-
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-
spring.datasource.username=root
-
spring.datasource.password=root
-
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
-
-
-
spring.thymeleaf.mode=HTML
-
四、html文件
1. 首部html标签加入
xmlns:th="http://www.thymeleaf.org"
2. script引入标签的src属性写成
th:src="@{/static/jquery.js}"
我的完整html代码示例:
-
-
<html lang="en" xmlns:th="http://www.thymeleaf.org">
-
-
<head>
-
<meta charset="UTF-8">
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
-
<title>test</title>
-
<script th:src="@{/static/jquery.js}"></script>
-
</head>
-
-
<body>
-
<button onclick="db()">获取数据</button>
-
<script>
-
-
function db() {
-
$.get('http://localhost:8082/home/db',
-
function (res) {
-
console.log('res', res)
-
})
-
}
-
-
</script>
-
</body>
-
-
</html>
五、主要执行,提供接口的java类
(我的代码示例,具体看自己的代码调整)
-
package com.example.test2.controller;
-
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.jdbc.core.JdbcTemplate;
-
import org.springframework.stereotype.Controller;
-
import org.springframework.web.bind.annotation.GetMapping;
-
import org.springframework.web.bind.annotation.RequestMapping;
-
import org.springframework.web.bind.annotation.ResponseBody;
-
-
import java.util.List;
-
import java.util.Map;
-
-
//注解是个Controller文件
-
//API路径
-
public class HomeController {
-
-
-
private JdbcTemplate jdbcTemplate;
-
-
-
//资源路径,表明是Get
-
-
public String loadData() {
-
return "hello";
-
}
-
-
-
-
public String test(){
-
return "test";
-
}
-
-
-
-
public String db(){
-
List<Map<String, Object>> list =jdbcTemplate.queryForList("select * from user ;");
-
return list.toString();
-
}
-
-
-
public String toTest(){
-
return "test";
-
}
-
}
【2】跨域问题
一、编写Filter过滤器
在自己的java文件下的包里,新建一个java类,把下面代码放在类里面
例如,我的java包 package com.example.test2.config
-
package com.example.test2.config;
-
import org.springframework.stereotype.Component;
-
import java.io.IOException;
-
import javax.servlet.Filter;
-
import javax.servlet.FilterChain;
-
import javax.servlet.FilterConfig;
-
import javax.servlet.ServletException;
-
import javax.servlet.ServletRequest;
-
import javax.servlet.ServletResponse;
-
import javax.servlet.http.HttpServletResponse;
-
-
-
public class OriginFilter implements Filter {
-
-
public void init(FilterConfig filterConfig) throws ServletException {
-
}
-
-
public void doFilter(ServletRequest req, ServletResponse res,
-
FilterChain chain) throws IOException, ServletException {
-
HttpServletResponse response = (HttpServletResponse) res;
-
response.setHeader("Access-Control-Allow-Origin", "*");
-
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE,PUT");
-
response.setHeader("Access-Control-Max-Age", "3600");
-
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
-
chain.doFilter(req, res);
-
}
-
-
public void destroy() {
-
}
-
}
二、用外部的js做请求验证
例如,我的请求地址是 http://localhost:8082/home/db,用的是jquery做的请求
-
-
<html lang="en">
-
-
<head>
-
<meta charset="UTF-8">
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
-
<title>test</title>
-
<script src="jquery.js"></script>
-
</head>
-
-
<body>
-
<button onclick="getData()">获取数据</button>
-
<script>
-
function getData() {
-
$.get('http://localhost:8082/home/db',
-
function (res) {
-
console.log('res', res)
-
})
-
}
-
</script>
-
</body>
-
-
</html>
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggieib
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13