Spring 對Ajax的支援
SpringMyBatis第九天 2018/7/13
==========================================
1.Spring對Ajax支援
為了便於接收和處理Ajax請求,SpringMVC提供JSON響應支援,
可以很方便地將資料自動轉換成JSON格式字串給客戶端JS
在SpringMVC中,與JSON響應相關的註解@ResponseBody
@ResponseBody註解主要用於Controller元件的處理方法前,具
體操作如下:
1)引入jackson開發包,示例程式碼採用的是
jackson-annotation-2.4.1.jar
jackson-core-2.4.1.jar
jackson-databind-2.4.1.jar
2)在Spring配置檔案中定義<mvc:annotation-driven/>,開啟
對@ResponseBody註解的支援,在Controller處理方法前定
義@ResponseBody註解
2.Spring AOP
AOP為Aspect Oriented Programming的縮寫,被稱為面向切面
程式設計,AOP主要用於處理共通邏輯,例如:日誌記錄,安全控制,
事務管理,異常處理等等,AOP可以將這些共通邏輯從普通業務
邏輯程式碼中分離出來,在以後修改這些共通邏輯時就不會影響普通
業務邏輯
利用AOP可以針對業務邏輯的各個部分進行隔離,從而使得業務邏
輯各個部分之間的耦合度降低,提高程式的可重用性,同時提高開
發效率
AOP,OOP在字面上雖然非常相似,但卻是不同領域的兩種設計思想
OOP(物件導向程式設計)針對業務處理過程中實體的屬性和行為進行
抽象封裝,以獲得更加清晰高效的邏輯單元劃分
AOP(面向切面程式設計)針對業務處理過程中的切面進行提取,它面
對是處理過程中的某個步驟或階段,以獲得邏輯過程中各個部分之
間低耦合的隔離效果
AOP需要以OOP為前提和基礎
什麼是切面
切面是指封裝共通邏輯的元件,此元件被作用到目標元件的方法上
什麼是目標
目標是被一個或多個切面所作用的物件
什麼是切入點
切入點是用於指定哪些目標元件的方法使用切面功能
在Spring中利用一個表示式指定切入點
Spring提供以下常用的切入點表示式
1)方法限定表示式
execution(修飾符?返回型別 方法名(引數?) throws 異常型別?)
2)型別限定表示式
within(包名.型別)
3)Bean名稱限定表示式
bean("Bean的ID或name屬性值")
什麼是通知
通知是用於指定切面元件和目標元件作用的時機,例如:切面方法
在目標方法之前或之後執行等時機
Spring框架提供以下型別通知:
前置通知:先執行切面功能再執行目標功能
後置通知:先執行目標功能再執行切面功能(目標無異常才執行切
面功能)
最終通知:先執行目標功能再執行切面功能(目標有無異常都執行
切面功能)
異常通知:先執行目標功能,丟擲異常後執行切面功能
環繞通知:先執行切面的前置部分,然後執行目標,最後執行切面
的後置部分
AOP實現原理
Spring AOP實現主要是基於動態代理技術,當Spring採用AOP配
置後,Spring容器返回的目標物件實質上是Spring利用動態代理技
術生成的一個代理型別,代理類重寫了原目標元件方法的功能,在
代理類中呼叫切面物件功能和目標物件的功能
Spring框架採用兩種動態代理實現:
1)利用cglib工具包
目標沒有提供介面時採用此方法,代理類是利用繼承方式生成一
個目標子類
2)利用JDK Proxy API
目標有提供介面時採用此方法,代理類是採用實現目標介面方式
生成一個目標子類
3.XML配置實現AOP
開發步驟:
1)建立一個類,充當切面元件,實現共通邏輯
2)宣告切面元件(在配置檔案中)
3)使用切面元件,在配置檔案中,將切面元件作用到目標元件方
法 上,設定通知型別以確認切面元件呼叫的時機
4.註解實現AOP
開發步驟:
1)建立切面元件
2)宣告切面元件
-在配置檔案中開啟AOP註解掃描
<aop:aspectj-autoproxy/>
-使用@Component註解標記標識這個類,將其宣告為元件
-使用@Aspect註解標記標識這個類,將其宣告為切面元件
3)使用切面元件
-在切面元件的方法上,使用註解將切面元件作用到目標元件的
方法上,並設定通知型別以確認切面元件作用的時機
相關文章
- jQuery對Ajax的支援jQuery
- Spring 對JDBC的支援SpringJDBC
- Spring 對Apache Kafka的支援與整合SpringApacheKafka
- Spring框架5.1將提供對Java 11的支援Spring框架Java
- Spring 對檔案上傳下載的支援(Spring boot實現)Spring Boot
- Spring Boot 2.4 對多環境配置的支援更改Spring Boot
- 第四章:Spring專案對JDBC的支援SpringJDBC
- Spring的JDBC支援SpringJDBC
- 對ajax、axios、fetch的認識iOS
- Spring AI 更新:支援OpenAI的結構化輸出,增強對JSON響應的支援SpringOpenAIJSON
- Spring 對 Junit4,Junit5 的支援上的運用Spring
- spring security:ajax請求的session超時處理SpringSession
- rpa對json的支援JSON
- Linux對ipsec的支援Linux
- Spring Data 2021.0增加了對DDD聚合更多自動支援!Spring
- 一對一聊天ajax實現
- Ajax前後端對接---Springmvc後端SpringMVC
- spring mvc解決ajax跨域問題SpringMVC跨域
- SpringBoot 對Future模式的支援Spring Boot模式
- Ajax 什麼是Ajax? Ajax的基本語法
- Spring 對Mabatis的整合SpringBAT
- Spring Boot 支援 JSP配置Spring BootJS
- 基於Promise實現對Ajax的簡單封裝Promise封裝
- MyBatis對動態SQL的支援MyBatisSQL
- DBSync新增對MongoDB、ES的支援MongoDB
- 對Spring IOC容器的思考Spring
- SpringBoot 對多執行緒的支援Spring Boot執行緒
- dk7 switch 對 String 的支援
- SAP雲平臺對Kubernetes的支援
- Android Studio 對現代 WorkManager 的支援Android
- netty系列之:netty對marshalling的支援Netty
- 說說 Spring 支援的 AspectJ 切點函式Spring函式
- Spring是如何支援多資料來源的Spring
- Spring Cloud 2021.0.0 正式釋出,第一個支援Spring Boot 2.6的版本!CloudSpring Boot
- 對Spring 的RestTemplate進行包裝SpringREST
- Ajax 跨域難題 - 原生 JS 和 jQuery 的實現對比跨域JSjQuery
- Spring boot應用如何支援httpsSpring BootHTTP
- 阿里Sentinel支援Spring Cloud Gateway啦阿里SpringCloudGateway