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

04 SpringMVC響應(yīng)數(shù)據(jù)之頁面跳轉(zhuǎn)控制+返回JSON數(shù)據(jù)+返回靜態(tài)資源

這篇具有很好參考價值的文章主要介紹了04 SpringMVC響應(yīng)數(shù)據(jù)之頁面跳轉(zhuǎn)控制+返回JSON數(shù)據(jù)+返回靜態(tài)資源。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. handler方法分析

/**
 * TODO: 一個controller的方法是控制層的一個處理器,我們稱為handler
 * TODO: handler需要使用@RequestMapping/@GetMapping系列,聲明路徑,在HandlerMapping中注冊,供DS查找!
 * TODO: handler作用總結(jié):
 *       1.接收請求參數(shù)(param,json,pathVariable,共享域等) 
 *       2.調(diào)用業(yè)務(wù)邏輯 
 *       3.響應(yīng)前端數(shù)據(jù)(頁面(不講解模版頁面跳轉(zhuǎn)),json,轉(zhuǎn)發(fā)和重定向等)
 * TODO: handler如何處理呢
 *       1.接收參數(shù): handler(形參列表: 主要的作用就是用來接收參數(shù))
 *       2.調(diào)用業(yè)務(wù): { 方法體  可以向后調(diào)用業(yè)務(wù)方法 service.xx() }
 *       3.響應(yīng)數(shù)據(jù): return 返回結(jié)果,可以快速響應(yīng)前端數(shù)據(jù)
 */
@GetMapping
public Object handler(簡化請求參數(shù)接收){
    調(diào)用業(yè)務(wù)方法
    返回的結(jié)果 (頁面跳轉(zhuǎn),返回數(shù)據(jù)(json))
    return 簡化響應(yīng)前端數(shù)據(jù);
}

總結(jié):

請求數(shù)據(jù)接收,我們都是通過handler的形參列表

前端數(shù)據(jù)響應(yīng),我們都是通過handler的return關(guān)鍵字快速處理!


2. 頁面跳轉(zhuǎn)控制

https://blog.csdn.net/m0_59735420/article/details/128126514

2.1 返回模板視圖頁面

什么是返回模板視圖頁面?

當(dāng)http請求被controller中的handler處理時,有時需要指定響應(yīng)的頁面(返回本地的)

為什么要返回模板視圖頁面?
項目采用了前后端分離模式 ,前后端通信通過 API 接口完成,數(shù)據(jù)格式一般使用 JSON 或 XML。

目標 : 用戶訪問localhost:8080/jsp/index時,返回給用戶本地webapp-WEB-INF-view下的home.jsp頁面.

  1. pom文件添加jsp依賴
<!-- jsp需要依賴! jstl-->
<dependency>
    <groupId>jakarta.servlet.jsp.jstl</groupId>
    <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
    <version>3.0.0</version>
</dependency>
  1. 創(chuàng)建等會要返回的home.jsp頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>Title</title>
  </head>
  <body>
        <!-- 可以獲取共享域的數(shù)據(jù),動態(tài)展示! jsp== 后臺vue -->
        ${msg}
  </body>
</html>

  1. 新建一個MvcConfig類
//本類中要重寫handlerMapping,handlerAdapter兩個方法,配置一個json轉(zhuǎn)化器, 通過一個注解@EnableWebMvc實現(xiàn)

@EnableWebMvc  //json數(shù)據(jù)處理,必須使用此注解,因為他會加入json處理器
@Configuration
@ComponentScan(basePackages = "com.atguigu.controller") //TODO: 進行controller掃描

//WebMvcConfigurer springMvc進行組件配置的規(guī)范,配置組件,提供各種方法! 前期可以實現(xiàn)
public class SpringMvcConfig implements WebMvcConfigurer {

   //配置一個jsp對應(yīng)的視圖解析器
    public void configureViewResolvers(ViewResolverRegistry registry) {
        //Resigter可以幫忙添加前后綴
        //稍后的handler中如果想給前端返回 /WEB-INF/views/index .jsp
        registry.jsp("/WEB-INF/views/",".jsp");
    }
}
  1. 編寫jspController類
/**
 *  跳轉(zhuǎn)到提交文件頁面  
 *  
 *  如果要返回jsp頁面!
 *     1.方法返回值改成字符串類型
 *     2.返回邏輯視圖名即可    
 *         <property name="prefix" value="/WEB-INF/views/"/>
 *            + 邏輯視圖名 +
 *         <property name="suffix" value=".jsp"/>
 */
 //訪問localhost:8080/jsp/index時,返回給用戶本地webapp-WEB-INF-view下的home.jsp頁面.
@GetMapping("index")
public String jumpJsp(Model model){
    System.out.println("FileController.jumpJsp");
    return "home";
}

2.2 跳轉(zhuǎn)和重定向

重定向與跳轉(zhuǎn)的區(qū)別:

1.請求的次數(shù)的不同 : 重定向總共請求了兩次服務(wù)器;轉(zhuǎn)發(fā)則是用戶請求一次可能經(jīng)過N個JSP頁面由返回到用戶瀏覽器中,是一次請求多次處理的過程;

2.跳轉(zhuǎn)過程中鏈接的變化不同 : ,重定向在跳轉(zhuǎn)中請求了兩次服務(wù)器并且是兩次不同的鏈接地址,在瀏覽器的地址欄可以看到兩次是有變化的;轉(zhuǎn)發(fā)在跳轉(zhuǎn)過程中瀏覽器請求了一次服務(wù)器,服務(wù)器經(jīng)過了n個JSP頁面并沒有改變請求的鏈接地址,因為用戶只請求了一次,所以在整個跳轉(zhuǎn)過程中鏈接地址是沒有改變的,在瀏覽器的地址欄就可以看到

3.目的不同 : 重定向只是簡單的讓用戶訪問一個新的鏈接,而轉(zhuǎn)發(fā)是服務(wù)器要得到用戶的請求內(nèi)容并需要進行一部分處理的,所以兩者目的之不同的

  • 不管是重定向(redirect)還是轉(zhuǎn)發(fā)(forward),其handler都要設(shè)置String類型
  • 語法為 return 關(guān)鍵字: /路徑,不需要額外注解
  • @ResponseBody注解和轉(zhuǎn)發(fā)/重定向是互斥的。@ResponseBody注解的類會快速返回,不走視圖解析器,也不會再轉(zhuǎn)發(fā)/重定向。
  • 注意:如果是項目下的資源,轉(zhuǎn)發(fā)和重定向都一樣都是項目下路徑!都不需要添加項目根路徑!
@RequestMapping("/redirect-demo")
public String redirectDemo() {
    // 重定向到 /demo 路徑 
    return "redirect:/demo";
}

@RequestMapping("/forward-demo")
public String forwardDemo() {
    // 轉(zhuǎn)發(fā)到 /demo 路徑
    return "forward:/demo";
}

3.返回JSON數(shù)據(jù)

  1. 如上章接收JSON數(shù)據(jù)一樣,涉及JSON必須要添加依賴以及在config類中配置JSON轉(zhuǎn)換器(@EnableWebMvc)。
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.0</version>
</dependency>
  1. 如上章接收JSON數(shù)據(jù)一樣(@RequestBody),使用@ResponseBody注解返回JSON數(shù)據(jù),該注解的作用在于將返回的對象序列化為 JSON 或 XML 格式的數(shù)據(jù),并發(fā)送給客戶端。
  2. 需注意的是ResponseBody不經(jīng)過視圖解析器,且與轉(zhuǎn)發(fā)/重定向互斥。
@GetMapping("/accounts/{id}")
@ResponseBody
public Object handle() {
  // ...
  return obj;
}

測試方法:

@Controller
@RequestMapping(value = "/user/detail", method = RequestMethod.POST)
@ResponseBody
public User getUser(@RequestBody User userParam) {
    System.out.println("userParam = " + userParam);
    User user = new User();
    user.setAge(18);
    user.setName("John");
    //返回的對象,會使用jackson的序列化工具,轉(zhuǎn)成json返回給前端!
    return user;
}

合并兩條注解:
@Controller+@ResponseBody = @RestController

3.返回靜態(tài)資源

什么是靜態(tài)資源?
資源本身已經(jīng)是可以直接拿到瀏覽器上使用的程度了,不需要在服務(wù)器端做任何運算、處理。典型的靜態(tài)資源包括:
- 純HTML文件/圖片
- CSS文件
- JavaScript文件

如何讓外部能夠訪問靜態(tài)資源?

  • DispatcherServlet 的 url-pattern 配置的是“/”,表示整個 Web 應(yīng)用范圍內(nèi)所有請求都由 SpringMVC 來處理
  • 而對 SpringMVC 來說,若想某個url被后臺處理,必須將這個urll用 @RequestMapping 綁定到某個handler上,才能找到處理請求的方法,否則handlermapping(秘書)無法知道找哪個handler(打工人)處理這個鏈接。
  • 因此,思路是顯然的,那就是想辦法讓系統(tǒng)知道,如果請求的是url是xxx/xxx/car.jpg , 那就從靜態(tài)資源中直接提取而不是找handler(靜態(tài)資源不可能存進handler里)。
  1. 準備好靜態(tài)資源并編譯:
    04 SpringMVC響應(yīng)數(shù)據(jù)之頁面跳轉(zhuǎn)控制+返回JSON數(shù)據(jù)+返回靜態(tài)資源,SpringMVC,spring
    04 SpringMVC響應(yīng)數(shù)據(jù)之頁面跳轉(zhuǎn)控制+返回JSON數(shù)據(jù)+返回靜態(tài)資源,SpringMVC,spring2. 在config類中開啟靜態(tài)資源處理:
@EnableWebMvc  //json數(shù)據(jù)處理,必須使用此注解,因為他會加入json處理器
@Configuration
@ComponentScan(basePackages = "com.sunsplanter.controller") //
//WebMvcConfigurer springMvc進行組件配置的規(guī)范,配置組件,提供各種方法! 
public class SpringMvcConfig implements WebMvcConfigurer {
    //開啟靜態(tài)資源處理
    //處理的順序是DispatcherServlet --> handlerMapping -->沒找到就去找靜態(tài)資源
    //平時第二步走完就結(jié)束,該方法多走一步為了找到靜態(tài)資源
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

訪問localhost:8080/images/car.jpg , 可以正常顯示.文章來源地址http://www.zghlxwxcb.cn/news/detail-802448.html

到了這里,關(guān)于04 SpringMVC響應(yīng)數(shù)據(jù)之頁面跳轉(zhuǎn)控制+返回JSON數(shù)據(jù)+返回靜態(tài)資源的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • SpringMVC的數(shù)據(jù)響應(yīng)-直接回寫json字符串

    SpringMVC的數(shù)據(jù)響應(yīng)-直接回寫json字符串

    ?再加個配置和名字 ? ?配的真么一個東西: ? ? ? ? ? ?返回成功 ? ? ? ? ? ? ?forword轉(zhuǎn)發(fā),另一個重定向? ? ? ? 那個注解代表:不跳轉(zhuǎn),直接返回。后來你想返回對象或集合,你需要做兩步,加一個@re.....,另一個加《MVC:。。。?!?,就可以將對象轉(zhuǎn)換為json格式。

    2024年02月16日
    瀏覽(18)
  • “深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“

    “深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“

    在現(xiàn)代Web開發(fā)中,SpringMVC是一個廣泛使用的框架,它提供了豐富的功能和靈活的配置選項。本文將深入探討兩個重要的主題:SpringMVC中的JSON數(shù)據(jù)返回和異常處理機制。我們將逐步介紹相關(guān)的配置和使用方法,并通過案例和綜合實例來加深理解。 1.1 導(dǎo)入依賴 1.2 配置彈簧-MVC

    2024年02月08日
    瀏覽(20)
  • SpringMVC之JSON數(shù)據(jù)返回與異常處理機制---全方面講解

    SpringMVC之JSON數(shù)據(jù)返回與異常處理機制---全方面講解

    ? ? ?在Spring MVC中,當(dāng)需要將數(shù)據(jù) 以JSON格式返回給客戶端時 ,可以使用 @ResponseBody注解或@RestController注解將Controller方法的返回值直接轉(zhuǎn)化為JSON格式并返回 。這使得開發(fā)者可以方便地將Java對象轉(zhuǎn)換為JSON,并通過HTTP響應(yīng)返回給客戶端。Spring MVC框架會自動地處理這一轉(zhuǎn)換過程

    2024年02月07日
    瀏覽(17)
  • [SpringMVC]請求與響應(yīng)③(JSON數(shù)據(jù)傳輸參數(shù)、日期類型參數(shù)傳遞、內(nèi)部實現(xiàn)原理)

    [SpringMVC]請求與響應(yīng)③(JSON數(shù)據(jù)傳輸參數(shù)、日期類型參數(shù)傳遞、內(nèi)部實現(xiàn)原理)

    前面我們說過,現(xiàn)在比較流行的開發(fā)方式為異步調(diào)用。前后臺以異步方式進行交換,傳輸?shù)臄?shù)據(jù)使用的是 JSON ,所以前端如果發(fā)送的是JSON數(shù)據(jù),后端該如何接收? 對于JSON數(shù)據(jù)類型,我們常見的有三種: json普通數(shù)組([\\\"value1\\\",\\\"value2\\\",\\\"value3\\\",...]) json對象({key1:value1,key2:value2,...})

    2024年02月08日
    瀏覽(21)
  • SpringMVC之JSON返回及異常處理機制

    SpringMVC之JSON返回及異常處理機制

    目錄 一、JSON處理 1.1 導(dǎo)入依賴 1.2 配置Spring-mvc.xml 1.3 @ResponseBody注解使用 ?編輯 1.4 Jackson 1.4.1 定義 1.4.2 用途? 1.4.3 用法? 1.4.4 常用注解 1.5 作用 二、統(tǒng)一異常處理 2.1 為什么要全局異常處理? 2.2 異常處理思路 2.3 SpringMVC異常分類 2.4 綜合案例 2.4.1 異常處理方式一 2.4.2 異常處

    2024年02月09日
    瀏覽(16)
  • SpringMVC獲取參數(shù)與頁面跳轉(zhuǎn)

    SpringMVC獲取參數(shù)與頁面跳轉(zhuǎn)

    第一種 直接當(dāng)成方法的參數(shù),需要與前臺的name一致 相當(dāng)于Request.getAttribute(\\\"username\\\") Controller 第二種 使用對象接收 頁面的name也要和對象的字段一致 創(chuàng)建一個對應(yīng)的實體類 Controller 將參數(shù)更換為User對象就行 SpringMVC獲取到的前臺數(shù)據(jù),如果是數(shù)組會自動幫我們轉(zhuǎn)換為字符串 日

    2024年01月21日
    瀏覽(21)
  • DAY04_SpringMVC—SpringMVC簡介&PostMan和ApiFox工具使用&SpringMVC請求與響應(yīng)&REST風(fēng)格

    DAY04_SpringMVC—SpringMVC簡介&PostMan和ApiFox工具使用&SpringMVC請求與響應(yīng)&REST風(fēng)格

    問題導(dǎo)入 SpringMVC框架有什么優(yōu)點? 1.1 SpringMVC概述 SpringMVC是一種基于Java實現(xiàn)MVC模型的輕量級Web框架 優(yōu)點 使用簡單,開發(fā)便捷(相比于Servlet) 靈活性強 問題導(dǎo)入 在Controller中如何定義訪問路徑,如何響應(yīng)數(shù)據(jù)? 2.0 回顧Servlet技術(shù)開發(fā)web程序流程 創(chuàng)建web工程(Maven結(jié)構(gòu)) 設(shè)置

    2024年02月13日
    瀏覽(60)
  • SpringMVC的常用注解,參數(shù)傳遞以及頁面跳轉(zhuǎn)的使用

    SpringMVC的常用注解,參數(shù)傳遞以及頁面跳轉(zhuǎn)的使用

    目錄 slf4j 常用注解 @RequestMapping @RequestParam @RequestBody @PathVariable 參數(shù)傳遞? 首先在pom.xml配置文件中導(dǎo)入SLF4J的依賴 基礎(chǔ)類型+String? ?復(fù)雜類型 @RequestParam @PathVariable @RequestBody? 增刪改查? 返回值 void返回值 ?String返回值 model+String?? 頁面跳轉(zhuǎn) --轉(zhuǎn)發(fā)和重定向 SLF4J,簡單日志門面

    2024年02月09日
    瀏覽(21)
  • Vue3 axios響應(yīng)攔截器處理接口返回401未登錄跳轉(zhuǎn)登錄頁

    問題: 在 asiox 使用 useRouter 實例化創(chuàng)建 router 路由對象,在 response 響應(yīng)攔截器里為 undefined 訪問不到 使用 window.location.href = \\\'/login\\\' 跳轉(zhuǎn)登錄頁, 本地可以正常跳轉(zhuǎn),測試環(huán)境頁面會顯示 not found 404, 測試環(huán)境訪問地址大概是這樣 ip:8080/pm/#/login , 本地沒有 /pm 解決方案: 在 mai

    2024年01月21日
    瀏覽(22)
  • 記錄坑,接口不返回json突然返回前端頁面html

    記錄坑,接口不返回json突然返回前端頁面html

    前端本地在調(diào)試頁面,突然告訴我一個很久沒動的好端端的接口突然返回值變成了html , 查遍了生產(chǎn)環(huán)境和測試環(huán)境同一個頁面接口返回值都沒問題, 問題只出在他本地環(huán)境 ,關(guān)鍵他連的是測試環(huán)境(數(shù)據(jù)正常)的接口, 前端讓我排查接口,服務(wù)器配置,我考慮半天可能出現(xiàn)的

    2024年02月03日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包