1. 程式人生 > >java學習筆記————本質篇6

java學習筆記————本質篇6

21.3.JSON:是一種輕量級的資料交換格式。 (JavaScript Object Notation)


格式: [{“id”:1,”name”:”吉林省”},{“id”:2,”name”:”遼寧省”}][{'province':'遼寧省'},{'province':'吉林省'},{'province':'浙江省'}]


語法; 一段JSON的字串,本身就是JS中支援的一種資料的格式.// JSON 語法是 JavaScript 物件表示語法的子集。
JSON的格式在JS中當做陣列使用.
解析成陣列: var arr = eval("("+data+")");
獲取陣列中的值: arr[i].province arr[i].id / name


JSONLIB的使用: JSONLIB是一個工具類:將陣列、List , 物件、MAP集合轉換成JSON的串.


API:
* JSONObject : 主要用於將 物件和MAP集合  轉成JSON的.
* JSONArray : 主要用於將 陣列和List集合 轉成JSON的.


JSONObject.fromObject(object/map)
JSONArray.fromObject(arr/list)


eg: JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[]{"currentPage","pageSize","detachedCriteria","decidedzones"});// 儘可能多的去掉不需要序列化的欄位
JSONObject json = JSONObject.fromObject(javaBean , jsonConfig);






22.java基礎加強:
1.JDK中提供的三個註解:
@Override : 標識子類重寫父類/介面的方法.
@SuppressWarnings:用來壓制警告.
@Deprecated : 用來描述方法過時


自定義註解 :@interface Anno1{..屬性...}// 同 定義類/介面 : class / interface  HelloWorld{...}
* @interface Anno1{
int sum() default 1;// 變數型別  變數名稱()  ————設定了 default值,@Anno1(寫sum="xx",覆蓋預設值1.不寫預設sum=1 )
String value();//如果註解中只有一個屬性,屬性名為value.那麼這個value可以省略
[email protected]
(value = "aaa") == @Anno3(“aaa”) } 泛型的基本術語: * 以ArrayList<E>為例: * <> :念為 typeof * E :稱為型別引數變數 * ArrayList<Integer>中 Integer: 稱為實際型別引數. * ArrayList<Integer> : 整個稱為 引數化型別 通過反射獲得引數化型別從而獲得實際型別引數: * Class: Class c = this.getClass();// 獲得到子類的Class的物件. 獲得的是:繼承此類的子類的Class物件 //誰繼承它,就代表誰 c.getGenericInterfaces/Superclass();// 獲得帶有泛型的介面/父類. ------- 引數化型別 BaseDao<Book> ————— 得到一個 帶有泛型的父類 * ParameterizedType: pType.getActualTypeArguments();// 獲得帶有泛型的父類. ------- 實際型別引數 Book —————從 引數化型別中 獲取到 實際型別引數 :Book ****************** Type: 型別 // 代表 java中 所有型別 的公共父類介面 ———————— 引數化型別、陣列型別、變數型別、原始型別、未處理型別 Type is the common superinterface for all types in the Java programming language. ———————— These include raw types, parameterized types,array types, type variables and primitive types. ParameterizedType:引數化型別 ———————— (ParameterizedType)Type : 將this.getClass().getGenericSuperclass()/getGenericInterfaces() 獲取的Type 強轉為 引數化型別 // interface ParameterizedType extends Type// 將用 子類的class物件 獲取的 父類/父介面 的Type 強轉為 ParameterizedType(引數化型別)型別 // 然後可 呼叫 ParameterizedType介面 的API,獲取到 父類中的所有 泛型陣列 ParameterizedType:引數化型別,通過字面意思理解:帶有引數的型別————————即 如果這個型別(Type)帶有泛型,我們就可以強轉為ParameterizedType(Type) 只要Type型別 中帶有 <泛型> ,就可以向下強轉為 引數化型別: (ParameterizedType)Type ******* API: 再通過引數化型別 獲取到具體的Class型別 <具體的泛型型別> Type[] getGenericInterfaces() // ParameterizedType.getGenericInterfaces() : 獲取到 父類中的所有 泛型 (泛型陣列) --->泛型[] ****************** 1.Type、Class、ParameterizedType三者的關係? Class<T> implements java.lang.reflect.Type, // Type 在 反射包下 ————> 我們可知,獲取具體的Class型別,自然是通過反射獲取到的 interface ParameterizedType extends Type 2.Servlet3.0: 新增特性: * 1.支援註解開發. ———————— @WebServlet(urlPatterns="/servletDemo1") @WebFilter @WebListener // EE6.0 Tomcat7以上可以不存在web.xml. * 2.支援檔案上傳. ———————— @MultipartConfig // 需要在Servlet上新增一個註解: @MultipartConfig Part part = request.getPart("upload");// 獲得檔案上傳項: Part部分.類似於FileUpload元件中的FileItem. InputStream is = part.getInputStream(); // 獲得檔案內容的輸入流 * 3.支援非同步請求. ———————— @WebServlet(urlPatterns="/servletDemo3",asyncSupported=true)// 需要在@WebServlet中使用一個屬性:asyncSupported=true AsyncContext asyncContext = request.startAsync(req, resp);// 開啟一個非同步的請求的物件. 3.動態代理: * 1.繼承 * 2.裝飾者模式 * 1.被增強的類和增強類需要實現相同的介面. * 2.在增強的類中獲得被增強的類的引用. * public class BigBirdWrapper implements Bird{ private Bird bird; public BigBirdWrapper(Bird bird){ //有參構造,引數: 被增強的類的引用 this.bird = bird; } public void fly(){ System.out.println(“飛飛 ...”);// 增強程式碼.//bird.fly(); } } Bird bird = new BigBirdWrapper(new BigBird()); bird.fly(); // 最終都是用 多型實現的 實際執行呼叫子類的方法 * 3.動態代理:(*****最為靈活的一種增強的方式)被增強類必須實現介面.JDK動態代理可以對 實現了介面的類 產生代理. 必須 implements InvocationHandler 介面, * 1.建立代理物件 * 2.重寫invoke()方法// 真正的執行是靠invoke(),我們只需在invoke()中重寫需要增強的method即可!!! 相關API: * Proxy: // 代理類 Proxy.newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h);// 建立代理物件 * ClassLoader : 介面的類載入器. * Class[] : 類實現的 所有介面的Class的物件. * InvocationHandler: 真正的處理物件. eg:Waiter waiterProxy = (Waiter) Proxy.newProxyInstance( waiter.getClass().getClassLoader(), waiter.getClass().getInterfaces(), this ); Object invoke(Object proxy, Method method, Object[] args); * proxy :代理物件. * method :指代的方法本身(正在執行的方法) // method.getName() 、 method.invoke() * args :方法的引數列表 4.類的載入器:將編譯後的class檔案載入到記憶體.(載入到JVM) 類的載入器分類: 引導類載入器: jre/lib/rt.jar(JDK中常用的類) // String—————————null 擴充套件類載入器: jre/lib/ext/ *.jar(JDK的擴充套件的類) // DNSNameService—————————sun.misc.Launcher$ExtClassLoader 應用類載入器: 類路徑下的class的.(自定義的類)// Demo—————————sun.misc.Launcher$AppClassLoader 25.HTTPS是以安全為目標的HTTP通道,簡單講是HTTP的安全版。(全稱:Hyper Text Transfer Protocol over Secure Socket Layer) 即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象識別符號體系),句法類同http:體系。用於安全的HTTP資料傳輸。 https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的預設埠及一個加密/身份驗證層(在HTTP與TCP之間)。 這個系統的最初研發由網景公司(Netscape)進行,並內置於其瀏覽器Netscape Navigator中,提供了身份驗證與加密通訊方法。現在它被廣泛用於全球資訊網上安全敏感的通訊,例如交易支付方面。 90.1.webservice:即web服務,是一種跨平臺的遠端呼叫技術,實現客戶/伺服器模式的應用。 webservice基於 soap協議 傳輸資料。 soap:soap=http+xml wsdl:說明書 uddi:目錄 webservice就是釋出一個服務介面,供其它計算機呼叫,可以實現的技術有好多,socket、http、soap方式、hessian等,在實際應用時根據具體的需求和場景去選擇應用技術。 90.2.CXF框架:apache的開源專案,是一個webservice開發框架。它支援多種協議,比如:SOAP1.1,1,2、XML/HTTP、RESTful HTTP 或者 CORBA Cxf是基於SOA匯流排結構,依靠spring完成模組的整合,實現SOA方式。 靈活的部署:可以執行在Tomcat,Jboss,Jetty(內建),weblogic等web容器上面。 安裝: 解壓apache-cxf-3.0.5目錄 配置: CXF_HOME=cxf的目錄 Path = %JAVA_HOME%\bin;%CXF_HOME%\bin; CLASSPATH=.;%CXF_HOME%\lib\cxf-manifest.jar /** server端: //jar包 Dao層: 建立applicationContext-dao.xml檔案配置dao介面,由spring容器統一管理 配置daoBean service層: // 與jaxws程式設計不同的是將 @WebService註解 加在 SEI介面 上邊 在service介面實現類中注入dao 建立applicationContext-service.xml,配置service cxf和spring整合釋出服務: 建立applicationContext-cxf.xml,配置釋出webservice服務 使用jaxwx 釋出服務 jaxws: server標籤就相當於JaxWsServerFactoryBean程式設計方式 address: webservice地址 serviceClass: SEI web.xml配置: //web容器中載入spring容器 載入spring容器 配置cxf的servlet,所有cxf的服務請求由servlet進行解析 // 直接用Apache提供的CXFServlet ----- org.apache.cxf.transport.servlet.CXFServlet 部署tomcat啟動: http://ip:port/工程名/ws/ <!-- web.xml中Servlet配置的 url-pattern --> */ client端: wsdl2java工具: wsdl2java -d . http://127.0.0.1:12345/area // 使用wsdl2java工具生成客戶端呼叫程式碼 功能同wsimport

相關推薦

java學習筆記————本質6

21.3.JSON:是一種輕量級的資料交換格式。 (JavaScript Object Notation) 格式: [{“id”:1,”name”:”吉林省”},{“id”:2,”name”:”遼寧省”}][{'province':'遼寧省'},{'province':

java學習筆記————本質7

100.oracle:oracle是甲骨文公司的一個大型資料庫產品,一般在大型專案中應用較多。 比如:銀行、大型企業系統等。和oracle資料庫類似的資料庫還有db2 Oracle資料庫:是一個檔案系統,是物理概念。 安裝: // SCOTT HR 解鎖 例項:

java學習筆記————本質3

9.獲取資源相關方法: 1.獲取真實路徑: servletContext.getRealPath("/WEB-INF/b.txt") ====> String realPath

java學習筆記————本質1

1.HTML:超文字標記語言!不是一種程式語言,是一種描述性的標記語言,用於描述超文字中內容的顯示方式。比如字型、顏色、大小等。 // 顯示資料 JSP也是最終響應回 一個HTML格式頁面來顯示資料! 2.CSS:層疊樣式表!作用:定義網頁的顯示效果。簡單一句話:CS

rust學習筆記基礎6–函式與函式指標(霜之小刀)

rust學習筆記基礎篇6–函式與函式指標(霜之小刀) 歡迎轉載和引用,若有問題請聯絡 若有疑問,請聯絡 Email : [email protected] QQ:2279557541 直接看函式的使用示例 //無返回值無引數的函式 fn

java學習筆記————經驗

3.顯示系統當前時間JS程式碼: 放時間的區域: window.onload=function(){ window.setInterval("showTime()", 1000); } function showTime(){ var time = new Date()

java學習筆記(中級)—java實現高質量圖片壓縮

使用java幾十行程式碼實現一個高質量圖片壓縮程式,再也不用去自己找網路的壓縮程式啦!而且很多網上的工具還有水印或者其他的限制,自己動手寫一個簡單的應用,是再合適不過了。 一、實現原理 1、宣告兩個字串變數,分別是要壓縮圖片的路徑和壓縮後圖片的存放路徑 private String brfore_image_

java學習筆記(中級)—JDK動態代理

一、什麼是代理模式 相信大家都知道代理商這個概念,在商業中,代理商無處不在。假設你要去買東西,你不可能去找真正的廠家去買,也不可能直接跟廠家提出需求,代理商就是這中間的一橋樑,連線買家和廠商。你要買或者定製什麼產品,需要什麼規格樣式和價格的直接跟代理商溝通就好了,由代理商與真實的廠商溝通,這樣買家有什麼問題都

Java學習筆記——淺談數據結構與Java集合框架(第一、List)

技術分享 emp 鏈表 adc 下標 -c nod nal integer 橫看成嶺側成峰,遠近高低各不同。不識廬山真面目,只緣身在此山中。               ——蘇軾 這一塊兒學的是雲裏霧裏,咱們先從簡單的入手。逐漸的撥開迷霧見太陽。本次先做List集合的三

java學習筆記(6)

brush 本質 運行 == scanner 私有 定義 bool 調用 java基礎知識: 1:形式參數和返回值的問題 (1)形式參數: 類名:需要該類的對象 抽象類名:需要該類的子類對象 接口名:需要該接口的實現類對象 (2)返回值類型: 類名:返

Java學習筆記6(循環和數組練習題)

rgs per spa 練習 折半查找法 選擇排序 d+ sele system 1.輸出100到1000的水仙花數: public class LoopTest{ public static void main(String[] args){ i

6.3(java學習筆記)緩衝流

一、緩衝流   使用緩衝流後的輸入輸出流會先儲存到緩衝區,等緩衝區滿後一次性將緩衝區中的資料寫入或取出。   避免程式頻繁的和檔案直接操作,這樣操作有利於提高讀寫效率。   緩衝流是構建在輸入輸出流之上的,可以理解為是對基本輸入輸出流的增強和擴充套件,但其根本是建立在輸入輸出流之上的。  

6.5(java學習筆記)其他流(位元組陣列流,資料流,物件流,列印流)

一、位元組陣列流   之前使用輸入輸出流的操作的物件是檔案,而這裡位元組陣列流操作的物件是記憶體,記憶體可以看做是一個位元組陣列。   使用位元組陣列流讀寫就可以看做是從記憶體A到記憶體B的讀寫,物件時記憶體即位元組陣列。      1.1構造方法     ByteArrayOutputStream

java學習筆記6-面向物件程式設計)

1.學生類案例 學生類: package daigua6; /* * 定義一個學生類 * */ public class Student { // 成員變數 String name; int age; // 成員方法 public void study

Java學習筆記6

基本數據 定義 cor 基本數據類型 隱藏 範圍 new 引用 思想 java是面向對象的語言。 對象:真實存在的唯一的事物。 類:實際就是對某種類型事物的共性屬性與行為的抽取 面向對象的計算機語言的核心思想:找適合的對象做適合的事情。 如何找適合的對象呢: 1.sun公

瘋狂Java學習筆記(76)------------NIO.2第二

在該系列的上一篇中我演示了NIO.2的三個方法:檔案拷貝、檔案和目錄的刪除和檔案移動。在這篇文章中,我將向大家展示路徑相關的方法(如獲取路徑、檢索路徑資訊)、檔案和目錄測試方法(如檔案或目錄的存在性測試)以及面向屬性的方法。 獲取路徑 問:怎樣獲得一個 java.nio.

Java學習-J.160406.0.6筆記5-Linux基礎-linux程序管理

檢視和管理linux程序  程序中的狀態 R-程序已經排程,準備好執行;執行中 S-等待,使用者可以發訊號,可到R狀態 D-等待,不接受使用者指令-使用者無法控制 K-等待,接受使用者中斷訊號 Z-僵死,在退出時產生異常,僵死不接受使用者訊號,不釋放資源 PS 檢視列

JavaSE基礎學習筆記-提高-Java反射概要

Class物件 Java中的各個類也是一類事物,按照面向物件的思想,可以對這些類進行描述和封裝,Java用Class類來代表class類。 【9個預定義的Class物件:8個基本資料型別 + void】 獲取類實力物件的三種常用方法: ①類名.class  例: Class

java學習筆記6

java學習 prepare ima nbsp jdb java 9.png java學習筆記 dsta 查看JDK API文檔,學習JDBC中類和接口的定義,分析其中的方法 ===============PreparedStatement ja

java學習筆記——String類

通過 ray [] 原理 log spl 2.3 -s 長度 一、概述 ·字符串是一個特殊的對象 ·字符串一旦初始化就不可以被改變 ·String str = "abc"; ·String str1 = new String("abc"); 有什麽區別? package