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

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

這篇具有很好參考價值的文章主要介紹了“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

引言

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

1. SpringMVC之JSON數(shù)據(jù)返回

1.1 導入依賴

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.3</version>
</dependency> 

1.2 配置彈簧-MVC.xml

為了使SpringMVC能夠正確處理JSON數(shù)據(jù)返回,我們需要在配置文件中進行相應的配置。以便正確處理JSON數(shù)據(jù)返回的請求。

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="messageConverters">
        <list>
        	<ref bean="mappingJackson2HttpMessageConverter"/>
        </list>
    </property>
</bean>
<bean id="mappingJackson2HttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    <!--處理中文亂碼以及避免IE執(zhí)行AJAX時,返回JSON出現(xiàn)下載文件-->
    <property name="supportedMediaTypes">
        <list>
            <value>text/html;charset=UTF-8</value>
            <value>text/json;charset=UTF-8</value>
            <value>application/json;charset=UTF-8</value>
        </list>
    </property>
</bean>

1.3 @ResponseBody注解使用

@ResponseBody注解的作用是將Controller的方法返回的對象通過適當?shù)霓D(zhuǎn)換器轉(zhuǎn)換為指定的格式之后,寫入到response對象的body區(qū),通常用來返回JSON數(shù)據(jù)或者是XML數(shù)據(jù)。

注意:在使用此注解之后不會再走視圖解析器,而是直接將數(shù)據(jù)寫入到輸入流中,他的效果等同于通過response對象輸出指定格式的數(shù)據(jù)。

 <select id="selBySnamePager" resultType="com.yuan.model.Student" parameterType="com.yuan.model.Student" >
    select
    <include refid="Base_Column_List" />
    from t_mysql_student
    <where>
      <if test="sname!=null">
        and sname like concat('%',#{sname},'%')
      </if>
    </where>

  </select>

  <select id="mapListPager" resultType="java.util.Map" parameterType="com.yuan.model.Student" >
    select
    <include refid="Base_Column_List" />
    from t_mysql_student
    <where>
      <if test="sname != null">
        and sname like concat('%',#{sname},'%')
      </if>
    </where>
  </select>

    /**
     * 返回List<T>
     * @param req
     * @param student
     * @return
     */
    @ResponseBody
    @RequestMapping("/list")
    public List<Student> list(HttpServletRequest req, Student student){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(req);
        List<Student> lst = this.studentBiz.selBySnamePager(student, pageBean);
        return lst;
    }

“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

  /**
     * 返回T
     * @param req
     * @param Student
     * @return
     */
    @ResponseBody
    @RequestMapping("/load")
    public Student load(HttpServletRequest req, Student Student){
        if(Student.getSname() != null){
            List<Student> lst = this.studentBiz.selBySnamePager(Student, null);
            return lst.get(0);
        }
        return null;
    }

“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

  /**
     * 返回List<Map>
     * @param req
     * @param Student
     * @return
     */
    @ResponseBody
    @RequestMapping("/mapList")
    public List<Map> mapList(HttpServletRequest req, Student Student){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(req);
        List<Map> lst = this.studentBiz.mapListPager(Student, pageBean);
        return lst;
    }

“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

 /**
     * 返回Map
     * @param req
     * @param Student
     * @return
     */
    @ResponseBody
    @RequestMapping("/mapLoad")
    public Map mapLoad(HttpServletRequest req, Student Student){
        if(Student.getSname() != null){
            List<Map> lst = this.studentBiz.mapListPager(Student, null);
            return lst.get(0);
        }
        return null;
    }

“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

 @ResponseBody
    @RequestMapping("/all")
    public Map all(HttpServletRequest req, Student Student){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(req);
        List<Student> lst = this.studentBiz.selBySnamePager(Student, pageBean);
        Map map = new HashMap();
        map.put("lst",lst);
        map.put("pageBean",pageBean);
        return map;
    }

“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

@ResponseBody
    @RequestMapping("/jsonStr")
    public String jsonStr(HttpServletRequest req, Student Student){
        return "clzEdit";
    }

“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

  • @JsonIgnore 隱藏json數(shù)據(jù)中的某個屬性

@ToString
public class Student {
    @JsonIgnore
    @NotBlank(message = "編號不能為空")
    private String sid;
    @NotBlank(message = "名字不能為空")
    private String sname;
    @NotBlank(message = "年齡不能為空")
    private String sage;
    @NotBlank(message = "性別不能為空")
    private String ssex;

“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

1.4.Jackson

  • 1.4.1.介紹

? Jackson是一個簡單基于Java應用庫,Jackson可以輕松的將Java對象轉(zhuǎn)換成json對象和xml文檔,同樣也可以將json、xml轉(zhuǎn)換成Java對象。Jackson所依賴的jar包較少,簡單易用并且性能也要相對高些,并且Jackson社區(qū)相對比較活躍,更新速度也比較快。

特點

  • 容易使用,提供了高層次外觀,簡化常用的用例。
  • 無需創(chuàng)建映射,API提供了默認的映射大部分對象序列化。
  • 性能高,快速,低內(nèi)存占用
  • 創(chuàng)建干凈的json
  • 不依賴其他庫
  • 代碼開源

1.4.2.常用注解

注解 說明
@JsonIgnore 作用在字段或方法上,用來完全忽略被注解的字段和方法對應的屬性
@JsonProperty 作用在字段或方法上,用來對屬性的序列化/反序列化,可以用來避免遺漏屬性,同時提供對屬性名稱重命名
@JsonIgnoreProperties 作用在類上,用來說明有些屬性在序列化/反序列化時需要忽略掉
@JsonUnwrapped 作用在屬性字段或方法上,用來將子JSON對象的屬性添加到封閉的JSON對象
@JsonFormat 指定序列化日期/時間值時的格式

2. 異常處理機制

2.1 為什么要全局異常處理

異常處理是一個重要的開發(fā)任務,它可以幫助我們更好地處理程序中的錯誤和異常情況。本節(jié)將介紹為什么我們需要全局異常處理機制,并討論其重要性和優(yōu)勢。

2.2 異常處理思路

系統(tǒng)的dao、service、controller出現(xiàn)異常都通過throws Exception向上拋出,最后由springmvc前端控制器交由異常處理器進行異常處理。springmvc提供全局異常處理器(一個系統(tǒng)只有一個異常處理器)進行統(tǒng)一異常處理。
“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

2.3 SpringMVC異常分類

  • 使用Spring MVC提供的簡單異常處理器SimpleMappingExceptionResolver;
  • 實現(xiàn)Spring的異常處理接口HandlerExceptionResolver自定義自己的異常處理器;
  • 使用@ControllerAdvice + @ExceptionHandler

2.4 綜合案例

通過一個綜合案例,我們將深入了解如何在SpringMVC中處理異常情況。本節(jié)將介紹一個實際的案例,并演示如何使用全局異常處理機制來處理異常。

  • 異常處理方式一

SpringMVC中自帶了一個異常處理器叫SimpleMappingExceptionResolver,該處理器實現(xiàn)了HandlerExceptionResolver 接口,全局異常處理器都需要實現(xiàn)該接口。

<!-- springmvc提供的簡單異常處理器 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <!-- 定義默認的異常處理頁面 -->
    <property name="defaultErrorView" value="error"/>
    <!-- 定義異常處理頁面用來獲取異常信息的變量名,也可不定義,默認名為exception --> 
    <property name="exceptionAttribute" value="ex"/>
    <!-- 定義需要特殊處理的異常,這是重要點 --> 
    <property name="exceptionMappings">
        <props>
            <prop key="java.lang.RuntimeException">error</prop>
        </props>
    	<!-- 還可以定義其他的自定義異常 -->
    </property>
</bean> 
  • error.jsp
<%--
  Created by IntelliJ IDEA.
  User: yuanh
  Date: 2023/9/13
  Time: 16:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
異常
${ex}
</body>
</html>

  • 異常代碼

“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

  • 運行異常效果
    “深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

  • 異常處理方式二

GlobalException

package com.yuan.exception;

public class GlobalException extends RuntimeException {
    public GlobalException() {
    }

    public GlobalException(String message) {
        super(message);
    }

    public GlobalException(String message, Throwable cause) {
        super(message, cause);
    }

    public GlobalException(Throwable cause) {
        super(cause);
    }

    public GlobalException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

GlobalExceptionHandler

package com.yuan.Component;

import com.yuan.exception.GlobalException;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class GlobalExceptionHandler implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest,
                                         HttpServletResponse httpServletResponse,
                                         Object o, Exception e) {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("error");
        if (e instanceof GlobalException){
            GlobalException globalException = (GlobalException) e;
            mv.addObject("ex",globalException.getMessage());
            mv.addObject("msg","全局異常....");
        }else if (e instanceof RuntimeException){
            RuntimeException runtimeException = (RuntimeException) e;
            mv.addObject("ex",runtimeException.getMessage());
            mv.addObject("msg","運行時異常....");
        }else {
            mv.addObject("ex",e.getMessage());
            mv.addObject("msg","其他異常....");

        }
        return mv;
    }
}

異常方法

    @ResponseBody
    @RequestMapping("/jsonStr")
    public String jsonStr(HttpServletRequest req, Student Student){
        if(true)
        throw  new GlobalException("異常123");
        return "clzEdit";
    }

“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea
“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

  • 處理異常三@ControllerAdvice
package com.yuan.Component;

import com.yuan.exception.GlobalException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@ControllerAdvice
public class GlobalExceptionResolver {

//    跳轉(zhuǎn)錯誤頁面
//    @ExceptionHandler
//    public ModelAndView handler(Exception e){
//        ModelAndView mv = new ModelAndView();
//        mv.setViewName("error");
//        if (e instanceof GlobalException){
//            GlobalException globalException = (GlobalException) e;
//            mv.addObject("ex",globalException.getMessage());
//            mv.addObject("msg","全局異常....");
//        }else if (e instanceof RuntimeException){
//            RuntimeException runtimeException = (RuntimeException) e;
//            mv.addObject("ex",runtimeException.getMessage());
//            mv.addObject("msg","運行時異常....");
//        }
//        return mv;
//    }

// 返回錯誤json數(shù)據(jù)
    @ResponseBody
    @ExceptionHandler
    public Map handler(Exception e){
        Map map = new HashMap();
        if (e instanceof GlobalException){
            GlobalException globalException = (GlobalException) e;
            map.put("ex",globalException.getMessage());
            map.put("msg","全局異常....");
        }else if (e instanceof RuntimeException){
            RuntimeException runtimeException = (RuntimeException) e;
            map.put("ex",runtimeException.getMessage());
            map.put("msg","運行時異常....");
        }else {
            map.put("ex",e.getMessage());
            map.put("msg","其它異常....");
        }
        return map;
    }
}

“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea
“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“,json,spring,java,mybatis,tomcat,maven,idea

總結(jié)

本文深入探討了SpringMVC中的JSON數(shù)據(jù)返回和異常處理機制。我們從配置和使用方法入手,逐步介紹了相關的知識點,并通過案例和綜合實例加深了理解。希望本文能夠幫助讀者更好地理解和應用SpringMVC中的JSON數(shù)據(jù)返回和異常處理機制。文章來源地址http://www.zghlxwxcb.cn/news/detail-709582.html

到了這里,關于“深入理解SpringMVC的JSON數(shù)據(jù)返回和異常處理機制“的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關文章

  • Spring MVC學習隨筆-Ajax集成(JSON格式返回數(shù)據(jù))、攔截器(MyInterceptor)、全局異常處理(GlobalExceptionResolver)

    Spring MVC學習隨筆-Ajax集成(JSON格式返回數(shù)據(jù))、攔截器(MyInterceptor)、全局異常處理(GlobalExceptionResolver)

    學習視頻:【編程不良人】繼spring之后快速入門springmvc,面對SpringMVC不用慌 引入相關依賴 開發(fā)控制器 日期格式修正 可以正常響應 攔截器 :Interceptor 攔截 中斷 類似于javaweb中的Filter,不過沒有Filter那么強大 作用 Spring MVC的攔截器是一種用于在請求處理過程中進行預處理和后處

    2024年02月05日
    瀏覽(24)
  • SpringMVC攔截器和異常處理機制

    SpringMVC攔截器和異常處理機制

    SpringMVC攔截器類似于過濾器,用于進行預處理和后處理 將攔截器按照一定順序連接成一條鏈,就是攔截器鏈 創(chuàng)建攔截器類實現(xiàn)HandlerInterceptor接口 配置攔截器 測試攔截器的攔截效果 三個方法的執(zhí)行:在配置文件中依次配置兩個攔截器分別為1和2,則執(zhí)行順序是:1的 preHandle

    2024年02月16日
    瀏覽(27)
  • 04 SpringMVC響應數(shù)據(jù)之頁面跳轉(zhuǎn)控制+返回JSON數(shù)據(jù)+返回靜態(tài)資源

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

    總結(jié): 請求數(shù)據(jù)接收,我們都是通過handler的形參列表 前端數(shù)據(jù)響應,我們都是通過handler的return快速處理! https://blog.csdn.net/m0_59735420/article/details/128126514 什么是返回模板視圖頁面? 當http請求被controller中的handler處理時,有時需要指定響應的頁面(返回本地的) 為什么要

    2024年01月18日
    瀏覽(26)
  • JavaScript事件流:深入理解事件處理和傳播機制

    JavaScript事件流:深入理解事件處理和傳播機制

    JavaScript中的事件流是一種機制,用于描述和處理事件在DOM樹中的傳播過程。了解事件流的屬性和工作原理對于編寫高效的事件處理代碼和實現(xiàn)復雜的交互功能至關重要。本文將詳細介紹JavaScript事件流的發(fā)展流程、屬性以及應用場景,并提供一些代碼示例和引用資料,幫助讀

    2024年02月08日
    瀏覽(27)
  • SpringMVC JSON數(shù)據(jù)處理見解6

    SpringMVC JSON數(shù)據(jù)處理見解6

    springmvc 默認使用jackson作為json類庫,不需要修改applicationContext-servlet.xml任何配置,只需引入以下類庫springmvc就可以處理json數(shù)據(jù): @RequestBody:作用是接收前端ajax傳遞給后端的json字符串,并將json格式的數(shù)據(jù)轉(zhuǎn)為java對象 @ResponseBody:作用是將java對象轉(zhuǎn)為json格式的數(shù)據(jù)傳遞給前臺

    2024年01月18日
    瀏覽(53)
  • 【Java高級應用:深入探索Java編程的強大功能,JVM 類加載機制, JVM 內(nèi)存模型,垃圾回收機制,JVM 字節(jié)碼執(zhí)行,異常處理機制】

    本人詳解 作者:王文峰,參加過 CSDN 2020年度博客之星,《Java王大師王天師》 公眾號:JAVA開發(fā)王大師,專注于天道酬勤的 Java 開發(fā)問題 中國國學、傳統(tǒng)文化和代碼愛好者的程序人生,期待你的關注和支持!本人外號:神秘小峯 山峯 轉(zhuǎn)載說明:務必注明來源(注明:作者:

    2024年01月16日
    瀏覽(27)
  • 【ARM】-數(shù)據(jù)訪問中止異常中斷處理程序的返回

    【ARM】-數(shù)據(jù)訪問中止異常中斷處理程序的返回

    當發(fā)生數(shù)據(jù)訪問中止異常中斷時,程序要返回到該有問題的數(shù)據(jù)指令處,重新訪問該數(shù)據(jù)。因此數(shù)據(jù)訪問中止異常中斷程序應該返回到該數(shù)據(jù)訪問中止異常中斷的指令處,而不是像前面兩種情況下返回到發(fā)生中斷的指令的下一條指令。 數(shù)據(jù)訪問中止異常中斷是由數(shù)據(jù)訪問指令

    2024年02月12日
    瀏覽(23)
  • Spring Boot 優(yōu)雅實現(xiàn)統(tǒng)一數(shù)據(jù)返回格式+統(tǒng)一異常處理+統(tǒng)一日志處理

    Spring Boot 優(yōu)雅實現(xiàn)統(tǒng)一數(shù)據(jù)返回格式+統(tǒng)一異常處理+統(tǒng)一日志處理

    ????????在我們的項目開發(fā)中,我們都會對數(shù)據(jù)返回格式進行統(tǒng)一的處理,這樣可以方便前端人員取數(shù)據(jù),當然除了正常流程的數(shù)據(jù)返回格式需要統(tǒng)一以外,我們也需要對異常的情況進行統(tǒng)一的處理,以及項目必備的日志。 ????????在項目開發(fā)中返回的是json格式的數(shù)據(jù)

    2024年01月19日
    瀏覽(31)
  • SpringMVC之異常處理
SpringMVC之異常處理

    SpringMVC之異常處理 SpringMVC之異常處理

    異常分為編譯時異常和運行時異常,編譯時異常我們trycatch捕獲,捕獲后自行處理,而運行時異常是不可預期的,就需要規(guī)范編碼來避免,在SpringMVC中,不管是編譯異常還是運行時異常,都可以最終由SpringMVC提供的異常處理器進行統(tǒng)一管理,這樣就可以避免隨時隨地捕獲異常

    2024年02月12日
    瀏覽(22)
  • Python小白入門:文件、異常處理和json格式存儲數(shù)據(jù)

    Python小白入門:文件、異常處理和json格式存儲數(shù)據(jù)

    所用資料 代碼中所用到的文件可以從下面的網(wǎng)站進行下載: https://www.ituring.com.cn/book/2784 open函數(shù) 打開 一個文件。 接收參數(shù)為需要打開的文件名 。Python會在 當前執(zhí)行的文件所在目錄下 查找指定文件,因此需要把pi_digits.txt文件放在執(zhí)行文件的同目錄下。 open函數(shù)返回一個表示

    2024年02月13日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包