国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java篇-Springboot解決跨域問題的三種方式

這篇具有很好參考價(jià)值的文章主要介紹了java篇-Springboot解決跨域問題的三種方式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

第一種:添加@CrossOrigin注解

在Controller層對(duì)應(yīng)的方法上添加@CrossOrigin或者類上添加@CrossOrigin??

package com.example.controller;

import com.example.model.Book;
import com.example.service.InBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

@RestController
@CrossOrigin
public class BookController {

    @Autowired
    private InBookService bookService;

    String message = "";

    @RequestMapping("/queryAllBooks")
    public List<Book> getAllBooks(){

        List<Book> allBooks = bookService.getAllBooks();
        return allBooks;
    }

    @RequestMapping("/addBook")
    public String addBook(@RequestBody Book book){
        //用Mybatis執(zhí)行insert語句的時(shí)候,插入成功會(huì)返回1,不成功則會(huì)拋出異常,捕獲一下異常就好
        try {
            bookService.addBook(book);
            message = "增加用戶成功";
        }catch (Exception exception){
            message = "增加用戶異常";
        }
        return message;
    }

    @RequestMapping("/updateBookById")
    public String updateBook(@RequestBody Book book){
        //用Mybatis執(zhí)行insert語句的時(shí)候,插入成功會(huì)返回1,不成功則會(huì)拋出異常,捕獲一下異常就好
        try {
            bookService.updateBookById(book);
            message = "更新用戶成功";
        }catch (Exception exception){
            message = "更新用戶異常";
        }
        return message;
    }


    @RequestMapping("/deleteBookById")
    public String deleteBookById(@RequestBody Map<String,Integer> params){

        //用Mybatis執(zhí)行insert語句的時(shí)候,插入成功會(huì)返回1,不成功則會(huì)拋出異常,捕獲一下異常就好
        try {
            Integer id = params.get("id");
            bookService.deleteBookById(id);
            message = "刪除用戶成功";
        }catch (Exception exception){
            message = "刪除用戶異常";
        }
        return message;
    }

    @RequestMapping("/getBookById")
    public Book getBookById(@RequestBody Map<String,Integer> params){

        int id = params.get("id");
        Book b = bookService.getBookById(id);
        return b;
    }

}
第二種:添加CORS過濾器

新建配置類CorsConfig,創(chuàng)建CorsFilter過濾器,允許跨域

@Configuration
public class CorsConfig {
    // 跨域請(qǐng)求處理
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        //允許所有域名進(jìn)行跨域調(diào)用
        config.addAllowedOrigin("*");
        //允許所有請(qǐng)求頭
        config.addAllowedHeader("*");
        //允許所有方法
        config.addAllowedMethod("*");
        // 添加映射路徑,我們攔截一切請(qǐng)求
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }
}
?第三種:實(shí)現(xiàn)WebMvcConfigurer,重寫addCorsMappings方法
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    // 跨域請(qǐng)求處理
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry
                // 設(shè)置允許跨域的路徑
                .addMapping("/**")
                // 設(shè)置允許跨域請(qǐng)求的域名
                .allowedOriginPatterns("*")
                // 是否允許證書
                .allowCredentials(true)
                // 設(shè)置允許的方法
                .allowedMethods("GET", "POST", "DELETE", "PUT")
                // 設(shè)置允許的header屬性
                .allowedHeaders("*")
                // 跨域允許時(shí)間
                .maxAge(3600);
    }
}

全局配置有可能出現(xiàn)跨域失敗的情況,改為過濾器解決跨域問題之后就解決了,在此附上過濾器跨域代碼:

@Component
public class CorsFilter implements Filter {
 
    //銷毀時(shí)候調(diào)用的方法
    @Override
    public void destroy() {
 
    }
 
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
 
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
 
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "*");
 
        chain.doFilter(req, res);
 
    }
 
    //初始化調(diào)用的方法
    //當(dāng)服務(wù)器 被啟動(dòng)的時(shí)候,調(diào)用
    @Override
    public void init(FilterConfig arg0) throws ServletException {
 
    }
}

參考:

Springboot解決跨域問題的三種方式_springboot跨域注解-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-856588.html

到了這里,關(guān)于java篇-Springboot解決跨域問題的三種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot實(shí)現(xiàn)分頁的三種方式

    一 自己封裝Page對(duì)象實(shí)現(xiàn) 博客鏈接 二 使用sql實(shí)現(xiàn)分頁 2.1 場(chǎng)景分析 前段傳遞給給后臺(tái)什么參數(shù)? 當(dāng)前頁碼 currentPage 每頁顯示條數(shù) pageSize 后臺(tái)給前端返回什么數(shù)據(jù)? 當(dāng)前頁數(shù)據(jù) List 總記錄數(shù) totalCount 2.2 前段代碼 2.3 后端代碼 PageBean mapper service impl controller 三 使用PageHelper插件

    2024年02月10日
    瀏覽(29)
  • SpringBoot獲取HttpServletRequest、HttpServletResponse的三種方式

    SpringBoot獲取HttpServletRequest、HttpServletResponse的三種方式

    僅僅適用在controller方法上。當(dāng)Spring接收到HTTP請(qǐng)求時(shí),會(huì)尋找一個(gè)合適的方法來處理該請(qǐng)求。如果該方法參數(shù)上標(biāo)注了@RequestMapping或@Get、@Post等注解,Spring就會(huì)將HttpServletRequest對(duì)象注入到該參數(shù)中。 適用于所有的bean 通過調(diào)試可以看到,注入的Reques是一個(gè)代理類,而這個(gè)被代

    2024年02月19日
    瀏覽(25)
  • Springboot中使用線程池的三種方式

    前言 多線程是每個(gè)程序員的噩夢(mèng),用得好可以提升效率很爽,用得不好就是埋汰的火葬場(chǎng)。 這里不深入介紹,主要是講解一些標(biāo)準(zhǔn)用法,熟讀唐詩三百首,不會(huì)作詩也會(huì)吟。 這里就介紹一下springboot中的多線程的使用,使用線程連接池去異步執(zhí)行業(yè)務(wù)方法。 由于代碼中包含詳

    2024年02月08日
    瀏覽(24)
  • SpringBoot導(dǎo)出Word文檔的三種方式

    SpringBoot導(dǎo)出Word文檔的三種方式

    1、直接在Java代碼里創(chuàng)建Word文檔,設(shè)置格式樣式等,然后導(dǎo)出。(略) 需要的見:https://blog.csdn.net/qq_42682745/article/details/120867432 2、富文本轉(zhuǎn)換后的HTML下載為Word文檔。相當(dāng)于把HTML轉(zhuǎn)為Word導(dǎo)出 3、使用模板技術(shù)導(dǎo)出。固定格式、可以寫入不同數(shù)據(jù) 其他: springboot版本:2.7.11 導(dǎo)

    2024年02月02日
    瀏覽(22)
  • SpringBoot獲取Request請(qǐng)求的三種方式

    Request對(duì)象包含了請(qǐng)求的各種信息,比如請(qǐng)求方法、請(qǐng)求URL、請(qǐng)求參數(shù)、請(qǐng)求內(nèi)容等等,這些信息可以供服務(wù)器進(jìn)行處理和響應(yīng)。那么在SpringBoot中,怎么才能獲取到Request對(duì)象? 本文將介紹三種方法,并提示例參考。 一、直接在Controller方法參數(shù)上注入HttpServletRequest 這是最常用

    2024年02月04日
    瀏覽(25)
  • 分享后端解決跨域問題的三種方案

    分享后端解決跨域問題的三種方案

    跨源資源共享( CORS——Cross-Origin Resource Sharing ,跨源資源共享,或通俗地譯為跨域資源共享)是一種基于 HTTP 頭的機(jī)制,該機(jī)制通過允許服務(wù)器標(biāo)示除了它自己以外的其它源(域、協(xié)議或端口),使得瀏覽器允許這些源訪問加載自己的資源。跨源資源共享還通過一種機(jī)制來

    2024年02月02日
    瀏覽(29)
  • SpringBoot實(shí)現(xiàn)過濾器Filter的三種方式

    SpringBoot實(shí)現(xiàn)過濾器Filter的三種方式

    過濾器 Filter 由 Servlet 提供,基于函數(shù)回調(diào)實(shí)現(xiàn)鏈?zhǔn)綄?duì)網(wǎng)絡(luò)請(qǐng)求與響應(yīng)的攔截與修改。由于基于 Servlet ,其可以對(duì)web服務(wù)器管理的幾乎所有資源進(jìn)行攔截(JSP、圖片文件、HTML 文件、CSS文件等)。 Filter 的生命周期 init(): 初始化Filter 實(shí)例,F(xiàn)ilter 的生命周期與 Servlet 是相同的,

    2024年02月14日
    瀏覽(17)
  • SpringBoot+MyBatis批量插入數(shù)據(jù)的三種方式

    最近導(dǎo)入表格數(shù)據(jù)時(shí)需要同時(shí)插入修改大量數(shù)據(jù),研究了一下有三種實(shí)現(xiàn)方式 1、用for循環(huán)調(diào)用sql插入數(shù)據(jù) 這種方式插入大量數(shù)據(jù)時(shí),效率非常底下,不推薦 2、利用mybatis的foreach來實(shí)現(xiàn)循環(huán)插入 這種方式插入大量數(shù)據(jù)時(shí),好處是不用頻繁訪問數(shù)據(jù)庫(kù),一條sql搞定,效率比較

    2024年02月16日
    瀏覽(20)
  • Springboot接入OpenAi/Chat GPT的三種方式

    由于現(xiàn)在網(wǎng)上的相關(guān)教程并不多外加沒有使用代理的demo,所以拋磚引玉,寫了三種調(diào)用方式,分別是直接訪問、非官方SDK訪問、官方開源的SDK訪問 1、導(dǎo)入pom文件(2023.3.30最新版本) 2、入?yún)?這里的TalkDto 還可以入?yún)axToken,用于返回最大量的數(shù)據(jù),官方計(jì)算token大小的方式:

    2023年04月19日
    瀏覽(21)
  • idea社區(qū)版本創(chuàng)建springboot項(xiàng)目的三種方式

    ? 文章目錄 一、前言 一、方式1:spring 官方創(chuàng)建 springboot項(xiàng)目 1、打開在線的 spring initializr 2、選擇項(xiàng)目的語言、版本、依賴等 3、 解壓源碼包,并使用IDEA打開 4、測(cè)試接口 二、方式2:社區(qū)idea安裝Spring插件 1、添加插件 三、方式3:(麻煩)手動(dòng)maven 創(chuàng)建springboot項(xiàng)目 一、前言

    2023年04月09日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包