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

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

這篇具有很好參考價值的文章主要介紹了Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問

官方文檔

在線文檔:
https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.develo\ping-web-applications

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

基本介紹

1. 只要靜態(tài)資源放在類路徑下: /static 、/public 、/resources 、/META-INF/resources可以被直接訪問- 對應文件WebProperties.java

private static final String[] CLASSPATH_RESOURCE_LOCATIONS =
{ "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" };

2. 常見靜態(tài)資源:JS、CSS 、圖片(.jpg .png .gif .bmp .svg)、字體文件(Fonts)等

3. 訪問方式:默認: 項目根路徑/ + 靜態(tài)資源名比如http://localhost:8080/hi.jpg . - 設置WebMvcProperties.java

private String staticPathPattern = “/**”;

快速入門

1. 創(chuàng)建SpringBoot 項目springbootweb , 使用靈活配置方式來創(chuàng)建項目

2. 創(chuàng)建相關靜態(tài)資源目錄, 并放入測試圖片, 沒有目錄,自己創(chuàng)建即可, 完成測試

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

靜態(tài)資源訪問注意事項和細節(jié)

1. 靜態(tài)資源訪問原理:靜態(tài)映射是, 也就是對所有請求攔截,請求進來,先看Controller
能不能處理,不能處理的請求交給靜態(tài)資源處理器,如果靜態(tài)資源找不到則響應404 頁面

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

2. 改變靜態(tài)資源訪問前綴,比如我們希望http://localhost:8080/hellores/* 去請求靜態(tài)資源

應用場景:靜態(tài)資源訪問前綴和控制器請求路徑沖突

1) 創(chuàng)建application.yml

spring:
mvc:
static-path-pattern: /hellores/**

2) 重啟應用,完成測試, 瀏覽器輸入: http://localhost:8080/hellores/1.jpg

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

3.改變默認的靜態(tài)資源路徑,比如希望在類路徑下增加ninhaoimg 目錄作為靜態(tài)資源路徑
并完成測試.

spring:
  mvc:
    static-path-pattern: /hellores/** #修改靜態(tài)資源訪問的路徑/前綴

  web:
    resources:
      #修改/指定 靜態(tài)資源的訪問路徑/位置
      #
      static-locations: ["classpath:/ninhaoimg/","classpath:/META-INF/resources/",
                         "classpath:/resources/", "classpath:/static/", "classpath:/public/"]      #String[] staticLocations

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

3) 測試, 瀏覽器輸入http://localhost:8080/hellores/pen.jpg

[提示: 沒錯就是這樣訪問pen.jpg, 不是/ninhaoimg /pen.jpg 形式, 另外因為pen.jpg 還是拷貝來的, 一定要保證工作目錄target 有pen.jpg ,如果沒有, 請rebulid 下項目, 再重啟項目]

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

4) 如果你配置static-locations, 原來的訪問路徑就被覆蓋,如果需要保留,你再指定一下即可


spring:
  mvc:
    static-path-pattern: /hellores/** #修改靜態(tài)資源訪問的路徑/前綴
  web:
    resources:
    #修改/指定靜態(tài)資源的訪問路徑/位置

    static-locations: ["classpath:/ninhaoimg /","classpath:/META-INF/resources/",
                   "classpath:/resources/", "classpath:/static/", "classpath:/public/"]
#String[] staticLocations

這之所以不需要http://localhost:8080/hellores/ninhaoimg/12.jpg

是因為修改的默認訪問路勁 容器在其他目錄找不到的時候就會默認去找ninhaoimg目錄下的12.jap

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商


自定義轉換器

基本介紹

1. SpringBoot 在響應客戶端請求時,將提交的數(shù)據封裝成對象時,使用了內置的轉換器

2. SpringBoot 也支持自定義轉換器, 這個內置轉換器在debug 的時候, 可以看到, 后面給演示, 提供了124 個內置轉換器. 看下源碼GenericConverter-ConvertiblePair

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

自定義轉換器-應用實例

需求說明: 演示自定義轉換器使用

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

代碼實現(xiàn)

修改save.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加妖怪</title>
</head>
<body>
<h1>添加妖怪-坐騎[測試封裝POJO;]</h1>
<form action="/savemonster" method="post">
    編號: <input name="id" value="100"><br/>
    姓名: <input name="name" value="牛魔王"/> <br/>
    年齡: <input name="age" value="500"/> <br/>
    婚否: <input name="isMarried" value="true"/> <br/>
    生日: <input name="birth" value="2000/11/11"/> <br/>
    <!-- 使用自定義轉換器關聯(lián)car, 字符串整體提交, 使用,號間隔  -->
    坐騎:<input name="car" value="避水金晶獸,666.6"><br/>
    <input type="submit" value="保存"/>
</form>
</body>
</html>

創(chuàng)建WebConfig.java,增加自定義轉換器


/**
 * @Configuration(proxyBeanMethods = false)
 * 1. 表示 WebConfig 是一個配置類
 * 2. proxyBeanMethods = false 使用Lite模式
 */
@Configuration(proxyBeanMethods = false)
public class WebConfig  {



    //注入bean WebMvcConfigurer
    @Bean
    public WebMvcConfigurer webMvcConfigurer() {

        return new WebMvcConfigurer() {
            @Override
            public void addFormatters(FormatterRegistry registry) {
                /**
                 * 解讀
                 * 1. 在addFormatters 方法中,增加一個自定義的轉換器
                 * 2. 增加自定義轉換器 String -> Car
                 * 3. 增加的自定義轉換器會注冊到 converters 容器中
                 * 4. converters 底層結構是 ConcurrentHashMap 內置有124轉換器
                 * 5. 一會會使用debug來看到這些轉換器
                 */

                registry.addConverter(new Converter<String, Car>() {
                    @Override
                    public Car convert(String source) {//source就是 傳入的字符串 避水金晶獸,666.6
                        //這里就加入你的自定義的轉換業(yè)務代碼
                        if (!ObjectUtils.isEmpty(source)) {

                            Car car = new Car();
                            String[] split = source.split(",");
                            car.setName(split[0]);
                            car.setPrice(Double.parseDouble(split[1]));
                            return car;
                        }
                        return null;
                    }
                });



                //轉種寫法來注冊自定義轉換器-方便理解

                1.先創(chuàng)建自定義的轉換器
                //Converter<String,Car> hspConverter = new Converter<String, Car>() {
                //    @Override
                //    public Car convert(String source) {//source就是 傳入的字符串 避水金晶獸,666.6
                //        //這里就加入你的自定義的轉換業(yè)務代碼
                //        if (!ObjectUtils.isEmpty(source)) {
                //
                //            Car car = new Car();
                //            String[] split = source.split(",");
                //            car.setName(split[0]);
                //            car.setPrice(Double.parseDouble(split[1]));
                //            return car;
                //        }
                //        return null;
                //    }
                //};
                //
                還可以增加更多的轉換器
                //2個自定義轉換器
                //Converter<String,Monster> hspConverter2 = new Converter<String, Monster>() {
                //    @Override
                //    public Monster convert(String source) {//source就是 傳入的字符串 避水金晶獸,666.6
                //        return null;
                //    }
                //};
                //3個自定義轉換器
                //Converter<String,Car> hspConverter3 = new Converter<String, Car>() {
                //    @Override
                //    public Car convert(String source) {//source就是 傳入的字符串 避水金晶獸,666.6
                //        System.out.println("source-" + source);
                //        return null;
                //    }
                //};
                //
                2添加轉換器到converters key-[源類型->目標類型]
                //registry.addConverter(hspConverter);
                //registry.addConverter(hspConverter2);
                //registry.addConverter(hspConverter3);
            }
        };
    }
}

3. 完成測試, 瀏覽器http://localhost:8080/save.html

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

4. Debug 可以看到我們新增的Converter

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

------注意看, 多了一個我們自定義的轉換器String->com.wyxedu.web.bean.Car

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商


處理JSON

需求說明:

演示返回JSON 格式數(shù)據

應用實例

1. SpringBoot 支持返回JSON 格式數(shù)據,在啟用WEB 開發(fā)場景時,已經引入了相關依賴

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

創(chuàng)建ResponseController.java

@Controller
public class ResponseController {

    //返回Monster數(shù)據-要求以json格式返回

    @GetMapping("/get/monster")
    @ResponseBody
    public Monster getMonster() {
        //說明
        //開發(fā)中, monster對象是從DB獲取-這里模擬一個monster對象
        Monster monster = new Monster();
        monster.setId(100);
        monster.setName("奔波霸");
        monster.setAge(200);
        monster.setIsMarried(false);
        monster.setBirth(new Date());
        Car car = new Car();
        car.setName("奔馳");
        car.setPrice(222.2);
        monster.setCar(car);
        return monster;
    }
}

Postman 完成測試

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

Debug 一下monster 對象以Json 格式返回

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商


內容協(xié)商

基本介紹

1. 根據客戶端接收能力不同,SpringBoot 返回不同媒體類型的數(shù)據

2. 比如: 客戶端Http 請求Accept: application/xml 則返回xml 數(shù)據,客戶端Http 請求Accept: application/json 則返回json 數(shù)據

比如下面的示意圖

內容協(xié)商-應用實例

● 需求說明: 使用Postman 發(fā)送Http 請求,根據請求頭不同,返回對應的json 數(shù)據或者xml
數(shù)據, 如圖

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

在pom.xml 增加處理xml 的依賴

        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
        </dependency>

2. 使用Postman 發(fā)出不同的Http Header , 可以看到返回對應的數(shù)據格式(說明: 測試前請重啟一把項目)

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

3. 切換Postman 不同的Accept 類型, 來Debug 源碼, 看看對應的JsonGenerator 類型

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

4. 使用瀏覽器請求,為什么會返回xml 數(shù)據分析,而不是json?

注意事項和使用細節(jié)

1. Postman 可以通過修改Accept 的值,來返回不同的數(shù)據格式

2. 對于瀏覽器,我們無法修改其Accept 的值,怎么辦? 解決方案: 開啟支持基于請求參數(shù)的內容協(xié)商功能

1) 修改application.yml, 開啟基于請求參數(shù)的內容協(xié)商功能

spring:
  mvc:
    #static-path-pattern: /hellores/** #修改靜態(tài)資源訪問的路徑/前綴
    hiddenmethod:
      filter:
        enabled: true #啟用了HiddenHttpMethodFilter,開啟頁面表單的Rest功能
    view:       #配置視圖解析器
      suffix: .html
      prefix: /        #這里是需要注意 prefix需要和當前的static-path-pattern一致
    contentnegotiation:
      favor-parameter: true #開啟基于請求參數(shù)的內容協(xié)商功能
  web:
    resources:
      #修改/指定 靜態(tài)資源的訪問路徑/位置
      #
      static-locations: ["classpath:/ninhaoimg/","classpath:/META-INF/resources/",
                         "classpath:/resources/", "classpath:/static/", "classpath:/public/"]      #String[] staticLocations

2)完成測試

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

  1. 注意,參數(shù)format 是規(guī)定好的, 在開啟請求參數(shù)的內容協(xié)商功能后,SpringBoot 底層ParameterContentNegotiationStrategy 會通過format 來接收參數(shù),然后返回對應的媒體類型/
    數(shù)據格式, 當然format=xx 這個xx 媒體類型/數(shù)據格式是SpringBoot 可以處理的才行,不能亂寫.

Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商

如果需要自定義format 在配置文件加一個

parameter-name: wwwformat #指定一個內容協(xié)商的參數(shù)名 就好了然后要指定上面格式就不是format=json 而是 wwwformat=json

spring:
  mvc:
    #static-path-pattern: /hellores/** #修改靜態(tài)資源訪問的路徑/前綴
    hiddenmethod:
      filter:
        enabled: true #啟用了HiddenHttpMethodFilter,開啟頁面表單的Rest功能
    view:       #配置視圖解析器
      suffix: .html
      prefix: /        #這里是需要注意 prefix需要和當前的static-path-pattern一致
    contentnegotiation:
      favor-parameter: true #開啟基于請求參數(shù)的內容協(xié)商功能
      parameter-name: wwwformat #指定一個內容協(xié)商的參數(shù)名
  web:
    resources:
      #修改/指定 靜態(tài)資源的訪問路徑/位置
      #
      static-locations: ["classpath:/ninhaoimg/","classpath:/META-INF/resources/",
                         "classpath:/resources/", "classpath:/static/", "classpath:/public/"]      #String[] staticLocations

.l…文章來源地址http://www.zghlxwxcb.cn/news/detail-486179.html

到了這里,關于Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協(xié)商的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • SpringBoot -05 SpringBoot web相關配置(靜態(tài)資源訪問、統(tǒng)一異常處理、文件上傳、攔截器、統(tǒng)一跨域請求處理)

    小總結 SpringBoot是一個基于Spring的工具集,去幫我們完成了大量的配置。在SpringBoot中有一個約定大于配置的概念,就是他把我們很多第三方框架幫我們寫好了,而且把我們整個第三方框架所需要的依賴全都通過起步依賴加進去了。開發(fā)中只需要加入起步依賴就可以實現(xiàn)某個場

    2024年02月01日
    瀏覽(31)
  • Spring MVC自定義類型轉換器?。?!

    Spring MVC自定義類型轉換器?。?!

    使用場景 在index.jsp里面添加日期類型 在pojo里面添加日期類型 測試 原因:我們前臺傳遞的是字符串類型的參數(shù),但是后臺使用的是Date類型接收的。我們期望springmvc可以幫我們做數(shù)據類型的自動轉換,顯然沒有做,所以我們需要自己自定義類型轉換器。 解決方案: 定義一個

    2024年02月03日
    瀏覽(24)
  • Spring Boot整合日期轉換器(Converter)和攔截器(HandlerInterceptor)

    配置日期轉換器(WebMvcConfigurer) 說明 ????????WebMvcConfigurer配置類其實是 Spring 內部的一種配置方式,采用 JavaBean 的形式來代替?zhèn)鹘y(tǒng)的 xml 配置文件形式針對框架進行個性化定制,例如:攔截器,類型轉化器等等。 代碼示例 配置攔截器(WebMvcConfigurer)

    2024年01月17日
    瀏覽(56)
  • 【Spring Boot】Web開發(fā) — Web開發(fā)簡介

    首先介紹Spring Boot 提供的Web組件 spring-boot-starter-web ,然后介紹@Controller和@RestController注解,以及控制數(shù)據返回的@ResponseBody注解,最后介紹Web配置,以便讓讀者對使用Spring Boot開發(fā)Web系統(tǒng)有初步的了解。 Spring Boot將傳統(tǒng)Web開發(fā)的mvc、json、validation、tomcat等框架整合,提供了spri

    2024年02月17日
    瀏覽(24)
  • 手把手搭建 java spring boot 框架 maven 項目 web 網址訪問

    手把手搭建 java spring boot 框架 maven 項目 web 網址訪問

    第一步我們去? spring boot 官網創(chuàng)建項目并下載壓縮包? 創(chuàng)建項目網址: Spring Initializr https://start.spring.io/ 我們添加一個 srping web 的拓展包 接下來我們點擊 generate?創(chuàng)建 并下載壓縮包即可 接下來我們將壓縮文件包解壓到項目根目錄使用編輯器打開即可,如果編輯器提示?點擊構

    2024年04月23日
    瀏覽(22)
  • 【Spring Boot】Web開發(fā) — Web配置

    本節(jié)介紹Spring Boot Web中非常重要的類:WebMvcConfigurer。有時我們需要自定義Handler、Interceptor、ViewResolver、MessageConverter實現(xiàn)特殊的Web配置功能,通過WebMvcConfigurer接口即可實現(xiàn)項目的自定義配置。 在Spring Boot 1.5版本都是靠重寫WebMvcConfigurerAdapter的方法來添加自定義攔截器、消息轉

    2024年02月15日
    瀏覽(29)
  • Spring Boot整合Google Bard - Web接口訪問Google AI聊天機器人

    之前開發(fā)了一個關于 Google Bard 的Java庫,可以幫助我們簡單的提問并獲得答案?,F(xiàn)在我把它整合到 Spring Boot 應用中,通過Web API讓大家可以訪問。 把 pkslow google bard 添加到 Spring Boot 項目中去: 在使用它之前,我們需要創(chuàng)建一個對應的 GoogleBardClient Bean:

    2024年02月09日
    瀏覽(27)
  • Spring5學習隨筆-生命周期、自定義類型轉換器、后置處理Bean

    Spring5學習隨筆-生命周期、自定義類型轉換器、后置處理Bean

    學習視頻:【孫哥說Spring5:從設計模式到基本應用到應用級底層分析,一次深入淺出的Spring全探索。學不會Spring?只因你未遇見孫哥】 指的是一個對象創(chuàng)建、存活、消亡的一個完整過程 由Spring負責對象的創(chuàng)建、存活、銷毀,了解生命周期,有利于我們使用好Spring為我們創(chuàng)建

    2024年02月05日
    瀏覽(29)
  • Spring MVC獲取參數(shù)和自定義參數(shù)類型轉換器及編碼過濾器

    Spring MVC獲取參數(shù)和自定義參數(shù)類型轉換器及編碼過濾器

    目錄 ? 一、使用Servlet原生對象獲取參數(shù) 1.1?控制器方法 1.2?測試結果 二、自定義參數(shù)類型轉換器 2.1?編寫類型轉換器類 2.2?注冊類型轉換器對象? 2.3?測試結果? 三、編碼過濾器 3.1?JSP表單 3.2?控制器方法 3.3?配置過濾器 3.4 測試結果? 往期專欄文章相關導讀? 1. Maven系列專

    2024年02月10日
    瀏覽(31)
  • Spring Boot:Web開發(fā)之視圖模板技術的整合

    Spring Boot:Web開發(fā)之視圖模板技術的整合

    在 Web 開發(fā)中, 視圖模板技術 (如 JSP 、FreeMarker 、Thymeleaf 等)用于呈現(xiàn)動態(tài)內容到用戶界面的工具。這些技術允許開發(fā)者使用特定的標記和語法來定義頁面布局和動態(tài)內容插入點,然后由后端框架(如 Spring Boot )在運行時填充數(shù)據并生成最終的 HTML 頁面。 JSP ( JavaServer Pa

    2024年04月16日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包