jdbc案例分頁條件查詢源碼筆記jdk1.6新特性_第1頁
jdbc案例分頁條件查詢源碼筆記jdk1.6新特性_第2頁
jdbc案例分頁條件查詢源碼筆記jdk1.6新特性_第3頁
免費預覽已結束,剩余4頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、JDK1.6 新特性1、說明JDK1.6 的新特性,集中在網(wǎng)絡操作和性能方面方面。如增加了對WebService 的支持、線程調(diào)度、HttpServer 等。2、Web 服務元數(shù)據(jù)Java 里的 Web 服務元數(shù)據(jù)跟微軟的方案基本沒有語義上的區(qū)別,自從 JDK5 添加了元數(shù)據(jù)功能(Annoion)之后,SUN 幾乎重構了整個 J2EE 體系, 由于變化很大,干脆將名字也重構為 Java EE, Java EE(當前版本為5.0)將元數(shù)據(jù)納入很多規(guī)范當中,這其中就包括 Web Servi的相關規(guī)范, 加入元數(shù)據(jù)之后的 Web Servi服務器端編程模型就跟上面看到的 C#片斷差不多了, 這顯然比

2、以前的 JAX-RPC 編程模型簡單(當然, Axis 的編程模型也很簡單).這里要談的 Web 服務元數(shù)據(jù)(JSR 181)只是 Java Web 服務規(guī)范中的一個,它跟Common Annoions, JAXB2, StAX, SAAJ 和 JAX-WS 等共同Java EE 5 的Web Servi示例代碼如下:技術堆棧.package cn.jdk6;import import import import import/*javax.jws.WebMethod;javax.jws.Wram;javax.jws.WebResult;javax.jws.WebService;javax.x

3、ml.ws.Endpo;* 發(fā)布一個WebServiceauthorver*/通過注解 WebServi播客-1.0 2012-3-1erviceName=oServiceoService)public class/方法同時設置參數(shù)WebMethod(operationName=sayHi)public WebResult(name=value)String sayHi(Wreturn o:+name;ram(name=name)String name)public sic void main(String args) oService hs = new/發(fā)布服務oService();Endp

4、o/.publish(,hs);可以獲取服務說明3、輕量級的 HttpServerJDK6 提供了一個簡單的Http Server API,據(jù)此可以構建自己的Http Server,它支持Http 和 Https 協(xié)議,提供了HTTP1.1 的部分實現(xiàn),沒有被實現(xiàn)的那部分可以通過擴展已有的 Http Server API 來實現(xiàn),程序員必須自己實現(xiàn) HttpHandler 接口,HttpServer 會調(diào)用 HttpHandler 實現(xiàn)類的回調(diào)方法來處理客戶端請求,在這里, 把一個 Http 請求和它的響應稱為一個交換,包裝成 HttpExchange 類,HttpServer 負責將 Htt

5、pExchange 傳給 HttpHandler 實現(xiàn)類的回調(diào)方法。示例代碼 1:簡單服務器package cn.jdk6;import import import import import import import import/*java.io.IOException; java.io.OutputStream; .InetSocketAddress; java.text.SimpleDateFormat; java.util.Date; .httpserver.HttpExchange; .httpserver.HttpHandler;.httpserver.HttpServer;*

6、 HttpServer開發(fā)的簡單服務器JDK1.6新特性* 實現(xiàn)簡單的服務器的搭建,接收T/GET請求,返回當前時間authorver播客-1.0 2012-2-29*/public class HttpServerDemo public sic void main(String args) throws Exception HttpServer server = HttpServer.create(new InetSocketAddress(9999),0);/啟動以后,:即可以server.createContext(/o,new HttpHandler() /以下是類直接獲取信息publ

7、ic void handle(HttpExchange exc) throws IOException System.err.prln(okok);SimpleDateFormat df = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); String tm = df.format(new Date();String str = 你好,現(xiàn)在時間是:+tm;/這句必須要在sendResponseHeaders(200)以前設置 exc.getResponseHeaders().set(Content-Type,text/html;charset=UTF-8)

8、;/在所有頭信息設置完成以后才可以設置此信息,為了輸出中文應該計算字節(jié)長度 exc.sendResponseHeaders(200,str.getBytes().length); OutputStream out = exc.getResponseBody(); out.write(str.getBytes(UTF-8);out.flush();olose(););server.start(); System.err.prln(OK);示例代碼 2:獲取請求頭、請求體信息package cn.jdk6;import import import import import import impo

9、rt import import import import import/*java.io.BufferedReader; java.io.IOException; java.io.InputStream; java.io.InputStreamReader; java.io.OutputStream; .InetSocketAddress; java.text.SimpleDateFormat; java.util.Date; java.util.Iterator;.httpserver.HttpExchange;.httpserver.HttpHandler; .httpserver.H

10、ttpServer;* HttpServer開發(fā)的簡單服務器JDK1.6新特性獲取用戶的GET/獲取所有請求頭信息T請求如果是authorver*/t請求,獲取請求正文播客-1.0 2012-2-29public class HttpServerDemo2 public sic void main(String args) throwsExceptionHttpServer server = HttpServer.create(new InetSocketAddress(9999),0);server.createContext(/Overrideo,new HttpHandler() pub

11、lic void handle(HttpExchange exc) throws IOException /獲取請求的首行信息String StringStringremoteAddress = exc.getRemoteAddress().getHostName();/remotePortmethod= +exc.getRemoteAddress().getPort();= exc.getRequestMethod();System.err.prln(方法:+method+,者的Ip:+remoteAddress+,者的端口:+remotePort);String pro = exc.get

12、Protocol();System.err.prln(協(xié)議:+pro);/以下是獲取請求頭信息System.err.pr/遍歷所有請求頭ln(大小:+exc.getRequestHeaders().size();Iterator it = exc.getRequestHeaders().keySet().iterator();while(isNext()String key = it.next();Object val = exc.getRequestHeaders().get(key);System.err.prln(key+:+val);/如果是t請求,可以獲取請求的正文信息InputSt

13、ream in = exc.getRequestBody();BufferedReader bf = new BufferedReader(new InputStreamReader(in); String str1=null;while(str1=bf.readLine()!=null)System.err.prln(str1);System.err.prln(okok);SimpleDateFormat df = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); String tm = df.format(new Date();String str =

14、你好,現(xiàn)在時間是:+tm;/這句必須要在sendResponseHeaders(200)以前設置 exc.getResponseHeaders().set(Content-Type,text/html;charset=UTF-8);/在所有頭信息設置完成以后才可以設置此信息 exc.sendResponseHeaders(200,str.getBytes().length); OutputStream out = exc.getResponseBody(); out.write(str.getBytes(UTF-8);out.flush();olose(););server.start();

15、System.err.prln(OK);示例代碼 3:使用線程package cn.jdk6;import import import import import import import import import import/*java.io.IOException; java.io.OutputStream; .InetSocketAddress; java.text.SimpleDateFormat; java.util.Date; java.util.concurrent.ExecutorService; java.util.concurrent.Executors; .http

16、server.HttpExchange; .httpserver.HttpHandler;.httpserver.HttpServer;HttpServer開發(fā)的簡單服務器JDK1.6新特性測試設置線程調(diào)試播客-1.0 2012-2-29authorver*/public class HttpServerDemo3 public sic void main(String args) throwsException/線程調(diào)度ExecutorService pool = Executors.newCachedThreool();HttpServer server = HttpServer.crea

17、te(new InetSocketAddress(9999),0);server.createContext(/Overrideo,new HttpHandler() public void handle(HttpExchange exc) throws IOException System.err.prln(okok);SimpleDateFormat df = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); String tm = df.format(new Date();String str = 你好,現(xiàn)在時間是:+tm;exc.getRespons

18、eHeaders().set(Content-Type,text/html;charset=UTF-8); exc.sendResponseHeaders(200,str.getBytes().length);OutputStream out = exc.getResponseBody(); out.write(str.getBytes(UTF-8);/會輸出不同的線程名System.err.prtryln(線程名:+Thread.currentThread().getName();Thread.sleep(2000);catch(Exception e) out.flush();olose(

19、););/可以通過設置一個線程組由線程來決定執(zhí)行的過程 server.setExecutor(pool);server.start();System.err.prln(OK);4、使用 JAXB2 來實現(xiàn)對象與 XML 之間的JAXB 是 Java Architecture for XML Binding 的縮寫,可以將一個 Java 對象轉變成為XML 格式,反之亦然。把對象與關系數(shù)據(jù)庫之間的稱為 ORM,其實也可以把對象與XML 之間的稱為 OXM(Object XML Map)。原來 JAXB 是 Java EE的一部分,在 JDK1.6 中,SUN 將其放到了 Java SE 中,這也

20、是SUN 的一貫做法。JDK1.6 中自帶的這個 JAXB 版本是 2.0,比起 1.0(JSR 31)來,JAXB2(JSR 222)用 JDK5 的新特性 Annoion 來標識要作綁定的類和屬性等,這就極大簡化了開發(fā)的工作量。實際上,在 Java EE 5.0 中,EJB 和 Web Servi也通過 Annoion 來簡化開發(fā)工作。另外,JAXB2 在底層是用 StAX(JSR 173)來處理 XML 文檔。除了 JAXB 之外,還可以通過 XMLBeans 和 Castor 等來實現(xiàn)同樣的功能。示例代碼,簡單綁定:package c;import import import impo

21、rt import import/*java.io.StringReader; java.io.StringWriter; javax.xml.bind.JAXBContext; javax.xml.bind.Marshaller; javax.xml.bind.Unmarshaller;javax.xml.bind.annoion.XmlRooement;必須添加以下注解author*/XmlRooementpublic classprivate String name;privateeger age;public String getName() return name;public vo

22、id setName(String name) = name;publiceger getAge() return age;public void setAge(this.age = age;eger age) public sic void main(String args) throws Exception /獲取上下文對像JAXBContext ctx = JAXBContext.newInstance(Marshaller marsh = ctx.createMarshaller();.class);p = newp.setName(Jack); p.setAge(99);();Str

23、ingWriter w = new StringWriter();marsh.marshal(p,w);/轉成xml字符串輸出StringBuffer sb System.err.pr System.err.prString xml = :+sb);ln();80Rose;Unmarshaller unmarshObject o = unmars= ctx.createUnmarshaller();marshal(new StringReader(xml);/將xml文件轉成JavaBean o;pp = (System.err.pr)ln(pp.getName()+,+pp.getAge()

24、;5、StAXStAX(JSR 173)是 JDK1.6.0 中除了 DOM 和SAX 之外的又一種處理 XML 文檔的API。StAX 的來歷:在 JAXP1.3(JSR 206)有兩種處理 XML 文檔的方法:DOM(Object M)和SAX(Simple API for XML)。由于 JDK1.6.0 中的 JAXB2(JSR 222)和 JAX-WS 2.0(JSR 224)都會用到 StAX 所以 Sun 決定把 StAX 加入到 JAXP當中來,并將 JAXP 的版本升級到 1.4(JAXP1.4 是 JAXP1.3 的版本)。JDK1.6 里面 JAXP 的版本就是 1.4。

25、StAX 是The Streaming API for XML 的縮寫,一種利用拉模式(pull-parsing)XML 文檔的API.StAX 通過提供一種基于事件迭代器(Iterator)的API讓程序員去控制 xml 文檔過程,程序遍歷這個事件迭代器去處理每一個事件,事件可以看做是程序拉出來的,也就是程序促使器產(chǎn)生一個事件然后處理該事件,之后又促使器產(chǎn)生下一個事件,如此循環(huán)直到碰到文檔結束符;關于 StAX 的具體操作,請見別一文檔StAX.doc。(需要補充代碼)6、內(nèi)置對 JavaScript 的支持JSR 233 為 Java 設計了一套語言API。這一套API 提供了在 Java

26、 程序中調(diào)用語言引擎的接口。任何實現(xiàn)了這一接口的語言引擎都可以在 Java 程序中被調(diào)用。在 Mustang 的的 JavaScript 實現(xiàn)。他的名字來源于 OReilly。版本中包括了一個基于 Mozilla Rhino 的 JavaScript引擎。Rhino 是一個純 Java 的開源在 Mustang 中對引擎的檢索使用了工廠模式。首先需要實例化一個工廠 ScriptEngineManager。ScriptEngineManager factory = new ScriptEngineManager();以下是測試代碼:package cn.script;import import

27、import import import import import public/*java.io.InputStreamReader; java.util.List; javax.script.Invocable; javax.script.ScriptEngine; javax.script.ScriptEngineFactory; javax.script.ScriptEngineManager;.junit.Test;class ScriptDemo * 6.1、測試支持的語言*/ Testpublic void testSupport() ScriptEngineManager s

28、em = new ScriptEngineManager(); List list= sem.getEngineFactories(); for(ScriptEngineFactory sef : list)System.err.prln(+sef.getLanguageName();/只輸出EMAScript/用Jdk1.6運行JS代碼 Testpublic void testGo() throws ExceptionScriptEngineManager sem = new ScriptEngineManager();ScriptEngine en = sem.getEngineByNam

29、e(javascript);/根據(jù)語言名稱獲取引擎enen en=sem.getEngineByName(js);/根據(jù)語言獲取引擎(js); /根據(jù)文件擴展名獲取引擎sem.getEngineByExtensem.getEngineByMimeType(application/javascript);/根據(jù)文檔類型獲取引擎/直接輸出o在控制臺en.eval(pr(o););String js = if(true)pren.eval(js);(Good);/* 用JDK6運行一個外部的js文件,在本類的目錄下保存一個o.js如下:* pr(o這是語言rn);function abc(str)p

30、r(str);abc(這是新數(shù)據(jù));*/ Testpublic void testFile() throws ExceptionScriptEngineManager sem = new ScriptEngineManager();ScriptEngi= sem.getEngineByName(javascript);se.eval(new InputStreamReader(this.getClass().getResourceAsStream(o.js);/將一個類當成一段 Test運行,給了另一種以類似反射形式調(diào)用Java代碼的方法public void testCls() throws

31、 Exceptionclass Onepublic String say()System.err.prln(o.);return o;public void o(String name,eger age)System.err.prln(o:+name+,age:+age);ScriptEngineManager sem = new ScriptEngineManager();ScriptEngi= sem.getEngineByExten(js);到外而后,也可以使用反射Object one = new One();se.put(two, one);/將One類/通過put方法將one對象,成

32、JS的變量Object o = se.eval(two.say(););/調(diào)用且獲取返回值ln(返回的值是:+o);/輸出返回值o(中國,50););/調(diào)用帶有兩個參數(shù)的方法System.err.prse.eval(two./* 也可以調(diào)用JS的任意方法*/ Testpublic void testInvocation() throws ExceptionScriptEngineManager sem = new ScriptEngineManager();ScriptEngi/定義一兩個方法= sem.getEngineByExten(js);String js = function abc

33、(arg1,arg2)pr(arg1+,+arg2); +function say()return se.eval(js);o;Invocable invo = (Invocable) se;/將se轉成Invocable可執(zhí)行對象invo.invokeFunction(abc,Jack,90);/調(diào)用abc方法,將傳遞兩個參數(shù) Object res = invo.invokeFunction(say);System.err.prln(返回值是:+res);也可以使用 JavaScript 代碼,實現(xiàn)一個 Java 的接口:/* 以下是JS實現(xiàn)Java的一個接口*/erface IOne/定義一個接口public void say(String abc);Testpublic void testImpl() throws ExceptionString js = function say(str)pr(str);/此JS實現(xiàn)IOne接口,擁有與Java代碼相同的方法ScriptEngineManager sem = new ScriptEngineManager();Sc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論