• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

前后端交互(springboot + jQuery) 1路径配置 2跨域问题

武飞扬头像
maleficent00
帮助1

我的示例project的结构

学新通

【1】路径配置

        (例如,我的java包是 com.example.test2.config)

         一、在pom.xml里加一段下面的代码

  1.  
    <dependency>
  2.  
    <groupId>org.springframework.boot</groupId>
  3.  
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
  4.  
    </dependency>

         二、新建一个java类,放入下面的代码

  1.  
    package com.example.test2.config;
  2.  
     
  3.  
    import org.springframework.context.annotation.Configuration;
  4.  
    import org.springframework.util.ResourceUtils;
  5.  
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  6.  
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  7.  
     
  8.  
    @Configuration
  9.  
    public class WebConfig implements WebMvcConfigurer {
  10.  
    @Override
  11.  
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
  12.  
    registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX "/static/");
  13.  
    }
  14.  
    }

        三、在application.properties文件加入

spring.thymeleaf.mode=HTML

        (下面是我的application.properties示例代码,具体看自己的代码调整)

  1.  
    server.port=8082
  2.  
     
  3.  
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  4.  
    spring.datasource.username=root
  5.  
    spring.datasource.password=root
  6.  
    spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
  7.  
     
  8.  
     
  9.  
    spring.thymeleaf.mode=HTML
  10.  
     

          四、html文件

                1. 首部html标签加入 

xmlns:th="http://www.thymeleaf.org"

                2. script引入标签的src属性写成

th:src="@{/static/jquery.js}"

                 我的完整html代码示例:

  1.  
    <!DOCTYPE html>
  2.  
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
  3.  
     
  4.  
    <head>
  5.  
    <meta charset="UTF-8">
  6.  
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7.  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8.  
    <title>test</title>
  9.  
    <script th:src="@{/static/jquery.js}"></script>
  10.  
    </head>
  11.  
     
  12.  
    <body>
  13.  
    <button onclick="db()">获取数据</button>
  14.  
    <script>
  15.  
     
  16.  
    function db() {
  17.  
    $.get('http://localhost:8082/home/db',
  18.  
    function (res) {
  19.  
    console.log('res', res)
  20.  
    })
  21.  
    }
  22.  
     
  23.  
    </script>
  24.  
    </body>
  25.  
     
  26.  
    </html>
学新通

        五、主要执行,提供接口的java类

        (我的代码示例,具体看自己的代码调整)

  1.  
    package com.example.test2.controller;
  2.  
     
  3.  
    import org.springframework.beans.factory.annotation.Autowired;
  4.  
    import org.springframework.jdbc.core.JdbcTemplate;
  5.  
    import org.springframework.stereotype.Controller;
  6.  
    import org.springframework.web.bind.annotation.GetMapping;
  7.  
    import org.springframework.web.bind.annotation.RequestMapping;
  8.  
    import org.springframework.web.bind.annotation.ResponseBody;
  9.  
     
  10.  
    import java.util.List;
  11.  
    import java.util.Map;
  12.  
     
  13.  
    @Controller //注解是个Controller文件
  14.  
    @RequestMapping("/home") //API路径
  15.  
    public class HomeController {
  16.  
     
  17.  
    @Autowired
  18.  
    private JdbcTemplate jdbcTemplate;
  19.  
     
  20.  
     
  21.  
    @GetMapping("/loadData") //资源路径,表明是Get
  22.  
    @ResponseBody
  23.  
    public String loadData() {
  24.  
    return "hello";
  25.  
    }
  26.  
     
  27.  
    @RequestMapping("/test")
  28.  
    @ResponseBody
  29.  
    public String test(){
  30.  
    return "test";
  31.  
    }
  32.  
     
  33.  
    @RequestMapping("/db")
  34.  
    @ResponseBody
  35.  
    public String db(){
  36.  
    List<Map<String, Object>> list =jdbcTemplate.queryForList("select * from user ;");
  37.  
    return list.toString();
  38.  
    }
  39.  
     
  40.  
    @GetMapping("/toTest")
  41.  
    public String toTest(){
  42.  
    return "test";
  43.  
    }
  44.  
    }
学新通

【2】跨域问题

     一、编写Filter过滤器

       在自己的java文件下的包里,新建一个java类,把下面代码放在类里面

        例如,我的java包 package com.example.test2.config

  1.  
    package com.example.test2.config;
  2.  
    import org.springframework.stereotype.Component;
  3.  
    import java.io.IOException;
  4.  
    import javax.servlet.Filter;
  5.  
    import javax.servlet.FilterChain;
  6.  
    import javax.servlet.FilterConfig;
  7.  
    import javax.servlet.ServletException;
  8.  
    import javax.servlet.ServletRequest;
  9.  
    import javax.servlet.ServletResponse;
  10.  
    import javax.servlet.http.HttpServletResponse;
  11.  
     
  12.  
    @Component
  13.  
    public class OriginFilter implements Filter {
  14.  
    @Override
  15.  
    public void init(FilterConfig filterConfig) throws ServletException {
  16.  
    }
  17.  
    @Override
  18.  
    public void doFilter(ServletRequest req, ServletResponse res,
  19.  
    FilterChain chain) throws IOException, ServletException {
  20.  
    HttpServletResponse response = (HttpServletResponse) res;
  21.  
    response.setHeader("Access-Control-Allow-Origin", "*");
  22.  
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE,PUT");
  23.  
    response.setHeader("Access-Control-Max-Age", "3600");
  24.  
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
  25.  
    chain.doFilter(req, res);
  26.  
    }
  27.  
    @Override
  28.  
    public void destroy() {
  29.  
    }
  30.  
    }
学新通

     二、用外部的js做请求验证

           例如,我的请求地址是 http://localhost:8082/home/db,用的是jquery做的请求

  1.  
    <!DOCTYPE html>
  2.  
    <html lang="en">
  3.  
     
  4.  
    <head>
  5.  
    <meta charset="UTF-8">
  6.  
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7.  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8.  
    <title>test</title>
  9.  
    <script src="jquery.js"></script>
  10.  
    </head>
  11.  
     
  12.  
    <body>
  13.  
    <button onclick="getData()">获取数据</button>
  14.  
    <script>
  15.  
    function getData() {
  16.  
    $.get('http://localhost:8082/home/db',
  17.  
    function (res) {
  18.  
    console.log('res', res)
  19.  
    })
  20.  
    }
  21.  
    </script>
  22.  
    </body>
  23.  
     
  24.  
    </html>
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggieib
系列文章
更多 icon
同类精品
更多 icon
继续加载