新浪云計(jì)算公開(kāi)課第五期體驗(yàn)SAE多語(yǔ)言開(kāi)發(fā)魅力之Java_第1頁(yè)
新浪云計(jì)算公開(kāi)課第五期體驗(yàn)SAE多語(yǔ)言開(kāi)發(fā)魅力之Java_第2頁(yè)
新浪云計(jì)算公開(kāi)課第五期體驗(yàn)SAE多語(yǔ)言開(kāi)發(fā)魅力之Java_第3頁(yè)
新浪云計(jì)算公開(kāi)課第五期體驗(yàn)SAE多語(yǔ)言開(kāi)發(fā)魅力之Java_第4頁(yè)
新浪云計(jì)算公開(kāi)課第五期體驗(yàn)SAE多語(yǔ)言開(kāi)發(fā)魅力之Java_第5頁(yè)
已閱讀5頁(yè),還剩84頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

在這里寫(xiě)上你的標(biāo)題副標(biāo)題文字副標(biāo)題文字作者名字/日期SAEJava平臺(tái)的總體概述新浪云計(jì)算java平臺(tái)研發(fā)工程師王陽(yáng)2012年6月30日000102030405寫(xiě)上你的文字你的文字目錄Java平臺(tái)介紹Java平臺(tái)的安全性Java平臺(tái)的擴(kuò)展Java平臺(tái)的未來(lái)000102030405寫(xiě)上你的文字你的文字目錄Java平臺(tái)介紹Java平臺(tái)的安全性Java平臺(tái)的擴(kuò)展Java平臺(tái)的未來(lái)Java平臺(tái)介紹Java平臺(tái)特性:1.全部分布式環(huán)境2.JVM自動(dòng)回收,降低用戶成本3.JVM自動(dòng)擴(kuò)展遷移,增加可靠性4.完善的安全隔離機(jī)制5.各種服務(wù)客戶端支持6.低成本的遷移Java平臺(tái)介紹JVM1JVM2JVM3物理機(jī)器1物理機(jī)器2物理機(jī)器3代理服務(wù)器codefs中央管理器Java平臺(tái)介紹創(chuàng)建應(yīng)用時(shí),不會(huì)啟動(dòng)JVM實(shí)際上傳應(yīng)用的時(shí)候才會(huì)啟動(dòng)JVMJava平臺(tái)介紹分布式環(huán)境,分布式session我的JVM物理機(jī)器1物理機(jī)器2我的JVMJava平臺(tái)介紹中央管理器實(shí)時(shí)監(jiān)控每個(gè)JVM狀態(tài)當(dāng)檢查到一段時(shí)間沒(méi)有訪問(wèn)后,中央管理器會(huì)回收J(rèn)VM我的JVM我的JVM中央管理器Java平臺(tái)介紹當(dāng)檢查到某個(gè)JVM宕機(jī)后,會(huì)重新啟動(dòng)一個(gè)JVM我的JVM我的JVM中央管理器我的JVM新啟動(dòng)一個(gè)JVMJava平臺(tái)介紹當(dāng)檢查到某個(gè)JVM有類似死循環(huán)這樣的代碼,導(dǎo)致超配額后,會(huì)將當(dāng)前應(yīng)用禁用一段時(shí)間我的JVM我的JVMwhile(true){}禁用禁用Java平臺(tái)介紹刪除應(yīng)用我的應(yīng)用我的JVM我的JVM停止停止刪除000102030405寫(xiě)上你的文字你的文字目錄Java平臺(tái)介紹Java平臺(tái)的安全性Java平臺(tái)的擴(kuò)展Java平臺(tái)的未來(lái)Java平臺(tái)的安全性我的應(yīng)用和別人的應(yīng)用放在一起安全嗎?會(huì)不會(huì)有一些惡意的應(yīng)用對(duì)我的應(yīng)用造成破壞?我和別人的應(yīng)用都是部署在一個(gè)機(jī)器上,要是他們把機(jī)器資源都占光了我怎么辦?我的應(yīng)用出了安全問(wèn)題,SAE能馬上知道嗎?Java平臺(tái)的安全性Java平臺(tái)的安全特性1.進(jìn)程級(jí)別的隔離2.JVM級(jí)別的沙盒控制3.操作系統(tǒng)級(jí)別的沙盒控制4.防火墻控制5.應(yīng)用實(shí)時(shí)監(jiān)控6.內(nèi)部安全檢查Java平臺(tái)的安全性一個(gè)物理機(jī)器上會(huì)同時(shí)存在多個(gè)JVM每個(gè)應(yīng)用對(duì)應(yīng)一個(gè)JVM進(jìn)程間應(yīng)用隔離A應(yīng)用JVMB應(yīng)用JVMC應(yīng)用JVM物理機(jī)器1物理機(jī)器2物理機(jī)器3Java平臺(tái)的安全性通過(guò)JVM自身的安全管理機(jī)制,控制應(yīng)用的訪問(wèn)權(quán)限外部網(wǎng)絡(luò)A應(yīng)用JVMJVM沙盒本地文件B應(yīng)用JVMJVM沙盒Java平臺(tái)的安全性每個(gè)JVM之外還有一層操作系統(tǒng)級(jí)別的沙盒控制A應(yīng)用JVMB應(yīng)用JVM系統(tǒng)沙盒外部網(wǎng)絡(luò)本地文件Java平臺(tái)的安全性通過(guò)防火墻控制網(wǎng)絡(luò)訪問(wèn)A應(yīng)用JVMB應(yīng)用JVM外部網(wǎng)絡(luò)防火墻Java平臺(tái)的安全性內(nèi)部實(shí)時(shí)監(jiān)控,會(huì)定期檢查CPU配額異步通知一個(gè)應(yīng)用監(jiān)控計(jì)費(fèi)主機(jī)Java平臺(tái)的安全性當(dāng)內(nèi)部的監(jiān)控程序會(huì)實(shí)時(shí)的檢查安全狀態(tài)當(dāng)出現(xiàn)問(wèn)題會(huì)郵件或短信報(bào)警內(nèi)部監(jiān)控安全檢查1安全檢查2安全檢查3郵件通知短信通知Java平臺(tái)的安全性JVM級(jí)別的沙盒控制又分兩個(gè)級(jí)別,SAE內(nèi)部的代碼執(zhí)行權(quán)限更高用戶自己的代碼執(zhí)行權(quán)限較低在JVM級(jí)別,我們通過(guò)JVM的policy和安全管理器控制了不同級(jí)別的安全等級(jí)需要訪問(wèn)外部網(wǎng)絡(luò)等操作調(diào)用權(quán)限更高的SAEjar包即可Java平臺(tái)的安全性內(nèi)部的代碼權(quán)限更高普通應(yīng)用的代碼權(quán)限較低sae客戶端普通應(yīng)用受限制000102030405寫(xiě)上你的文字你的文字目錄Java平臺(tái)介紹Java平臺(tái)的安全性Java平臺(tái)的擴(kuò)展Java平臺(tái)的未來(lái)Java平臺(tái)的擴(kuò)展Web容器–jetty啟動(dòng)參數(shù)定制非常靈活各個(gè)功能模塊完全獨(dú)立通過(guò)handler擴(kuò)展很方便Java平臺(tái)的擴(kuò)展擴(kuò)展了jetty的部署,url重寫(xiě)模塊Classloader控制擴(kuò)展日志模塊定制其安全性分布式session支持…….000102030405寫(xiě)上你的文字你的文字目錄Java平臺(tái)介紹Java平臺(tái)的安全性Java平臺(tái)的擴(kuò)展Java平臺(tái)的未來(lái)Java平臺(tái)的未來(lái)Java原生API的支持Eclipse插件控制面板詳細(xì)的統(tǒng)計(jì)功能更多的框架支持Java平臺(tái)的未來(lái)正常情況下直接使用.Socket連接是不允許的Socketsocket=newSocket(“”,80);Java平臺(tái)的未來(lái)原生socket支持import.Socet;publicvoidtest(){ Socketsocket=newSocket(“”,80); socket.getOutputStream().write(……); socket.getInputStream.read(); //…………..}Java平臺(tái)的未來(lái)原生io類支持importjava.io.FileInputStream;Importjava.io.FileOutputStream;publicvoidtest(){ Stringrpath=“saestor://mydomain/hello-read.txt”; Stringwpath=“saestor://mydomain/hello-write.txt”;

FileInputStream

fis=newFileInputStream(path); fis.read(); FileOutputStreamfos=newFileOutputStream(wpath); fos.write(…..); //……}Java平臺(tái)的未來(lái)原生url類支持import.URL;Import.URLConnection;publicvoidtest(){ URLurl=newURL(“”); URLConnectionconn=url.openConnection(); conn.connect(); //……}Java平臺(tái)的未來(lái)Eclipse插件模擬本地環(huán)境通過(guò)插件提交應(yīng)用Java平臺(tái)的未來(lái)控制面板更精細(xì)的顯示Java平臺(tái)的未來(lái)更多的框架支持Java平臺(tái)的未來(lái)等等一些其他的新能夠敬請(qǐng)期待。。。關(guān)注我們的論壇。。。。在這里寫(xiě)上你的標(biāo)題副標(biāo)題文字副標(biāo)題文字作者名字/日期SAEJava

平臺(tái)的實(shí)際應(yīng)用@智云0o/2012年6月30日新浪云計(jì)算Java平臺(tái)研發(fā)工程師黎智云SAEJava是什么普青:是一個(gè)Java語(yǔ)言的Paas二

青:是一個(gè)很大的Java

Web容器?不需要維護(hù)任何服務(wù)器,只需上傳的war包,它便可為你提供服務(wù)文青:是一個(gè)云服務(wù)的集合MySQL、Memcache、KVDB、FetchURL、Storage、TaskQueue、TmpFS、Cron、DefferedJob、Mail、微博API、服務(wù)商店等等SAEJava是什么SinaAppEngineJava提供了

安全穩(wěn)定的Java運(yùn)行時(shí)環(huán)境(沙盒)強(qiáng)大的云服務(wù)支持(云存儲(chǔ))各種應(yīng)用監(jiān)控和統(tǒng)計(jì)體系有力的開(kāi)發(fā)支持(日志)對(duì)各種Web框架支撐社區(qū)的支撐(Cloudbbs)……000102030405寫(xiě)上你的文字你的文字目錄1

WhySAEJava2SAEJava如何用3SAEJava能做什么WhySAEJava

更快(高效開(kāi)發(fā))更安全穩(wěn)定(代碼、應(yīng)用)

更強(qiáng)大云服務(wù)(總類繁多)

更低成本(開(kāi)發(fā)、遷移、維護(hù))

更簡(jiǎn)單(易用性)WhySAEJava更快更高效只需上傳war包即可使用(后期eclipse插件支持單文件上傳)強(qiáng)大的服務(wù)API,讓你專注業(yè)務(wù)加速開(kāi)發(fā)應(yīng)用訪問(wèn)速度更快

(強(qiáng)大的Sina機(jī)房群的支撐)問(wèn)題反饋迅速高效WhySAEJava更安全穩(wěn)定安全的“沙盒”環(huán)境每個(gè)應(yīng)用獨(dú)享JVM應(yīng)用獨(dú)享工作空間和日志空間數(shù)據(jù)安全分布式環(huán)境(應(yīng)用、服務(wù))keeper機(jī)制,應(yīng)用永不宕機(jī)WhySAEJava更多更強(qiáng)大的云服務(wù)--云存儲(chǔ)MySQL/RDCKVDBkey-value數(shù)據(jù)分布式存儲(chǔ)(每位用戶支持100G容量)Memcache分布式緩存Storage分布式文件存儲(chǔ)WhySAEJava更多更強(qiáng)大的云服務(wù)FetchURL抓網(wǎng)頁(yè),發(fā)請(qǐng)求Mail(兼容JavaMail形式發(fā)送)TaskQueue任務(wù)隊(duì)列TmpFS臨時(shí)IO空間DeferredJob離線任務(wù)隊(duì)列(數(shù)據(jù)庫(kù)導(dǎo)出、導(dǎo)入)服務(wù)商店提供服務(wù)(第三方接入服務(wù):短信服務(wù)、服務(wù)接入)WhySAEJava更低的成本開(kāi)發(fā)成本低強(qiáng)大的API支撐(日志、社區(qū))遷移成本低(支持SSH等流行web框架,各種APIhook)維護(hù)成本低(SAE幫你完成)使用成本低(JVM關(guān)閉和自動(dòng)伸縮、開(kāi)發(fā)者認(rèn)證、)WhySAEJava更簡(jiǎn)單易用只需要上傳一個(gè)war包就可開(kāi)始體驗(yàn)云服務(wù)API支持多人協(xié)同開(kāi)發(fā)各類日志和報(bào)表SVN支持SAEJava如何用如何在SAE上創(chuàng)建一個(gè)Java應(yīng)用?本地環(huán)境搭建?

如何使用云服務(wù)?如何看應(yīng)用日志?SAEJava對(duì)框架的支持?SAEJava使用技巧?問(wèn)題如何反饋?SAEJava如何用SAEJava環(huán)境JDK版本1.6WEB服務(wù)器版本jetty7.xServlet2.5SAEJava如何用SAE上創(chuàng)建一個(gè)Java應(yīng)用–創(chuàng)建應(yīng)用登陸SAE

進(jìn)入我的首頁(yè),點(diǎn)擊“創(chuàng)建應(yīng)用”,填寫(xiě)App信息

SAEJava如何用SAE上創(chuàng)建一個(gè)Java應(yīng)用–創(chuàng)建應(yīng)用JVM

相關(guān)設(shè)置

需要上傳war包才會(huì)開(kāi)啟JVMSAEJava如何用SAE上創(chuàng)建一個(gè)Java應(yīng)用–上傳WAR包網(wǎng)頁(yè)上傳:進(jìn)入應(yīng)用管理,先創(chuàng)建版本SAEJava如何用SAE上創(chuàng)建一個(gè)Java應(yīng)用–上傳WAR包網(wǎng)頁(yè)上傳:每個(gè)war包大小不能超過(guò)50MSAEJava如何用SAE上創(chuàng)建一個(gè)Java應(yīng)用–上傳WAR包SVN上傳SVN倉(cāng)庫(kù)地址:/your_app_name用戶名:SAE安全郵箱密碼:SAE安全密碼SAEJava如何用SAE上創(chuàng)建一個(gè)Java應(yīng)用–上傳WAR包SVN上傳創(chuàng)建版本(文件夾),SVN提交war包--完成SAEJava如何用SAE上創(chuàng)建一個(gè)Java應(yīng)用–完成輸入http://your_app_

訪問(wèn)應(yīng)用SAEJava如何用本地環(huán)境搭建不使用云服務(wù):跟普通的J2EE環(huán)境無(wú)任何差異要使用云服務(wù):只需將sae-local.jar和依賴jar引入classpath文檔中心->開(kāi)發(fā)手冊(cè)->SAEJava開(kāi)發(fā)手冊(cè)->下載中心SAEJava如何用本地環(huán)境線上環(huán)境區(qū)別?線上多了一層沙盒環(huán)境服務(wù)的使用沒(méi)有區(qū)別(本地只是模擬環(huán)境、相同API接口)//自動(dòng)忽略ip和port參數(shù)

SaeMemcache

mc=newSaeMemcache(“l(fā)ocalhost”,11211);區(qū)分線上線下環(huán)境SaeUserInfo對(duì)象取得應(yīng)用的appname、version、Ak、SK、SaeTmpPath、McIP

可讀取perties文件信息(MySQL無(wú)縫結(jié)合)

SAEJava如何用如何使用云服務(wù)MySQL、KVDB、Memcache、FetchURL、Storage、TaskQueue、TmpFS、Cron、DefferedJob、Mail、服務(wù)商店下載服務(wù)API服務(wù)使用的doc/doc/index.htmlSAEJava如何用如何使用云服務(wù)MySQL/RDCRDC關(guān)系型數(shù)據(jù)庫(kù)集群,一主多從的DB結(jié)構(gòu),支持千萬(wàn)級(jí)數(shù)據(jù)后端,監(jiān)控DB健康狀況和同步延遲情況,出現(xiàn)異常自動(dòng)切換。和傳統(tǒng)MySQL一樣來(lái)使用,使用前需要開(kāi)啟應(yīng)用MySQL服務(wù)SAEJava如何用如何使用云服務(wù)MySQL/RDC管理MySQL:phpMyAdmin客戶端管理數(shù)據(jù)庫(kù)跨應(yīng)用授權(quán):將數(shù)據(jù)庫(kù)授權(quán)給其他應(yīng)用SAEJava如何用如何使用云服務(wù)MySQL/RDCphpMyAdmin管理數(shù)據(jù)庫(kù)SAEJava如何用如何使用云服務(wù)MySQL/RDC數(shù)據(jù)庫(kù)信息主庫(kù)寫(xiě)(讀)數(shù)據(jù)從庫(kù)讀數(shù)據(jù)主庫(kù)域名

SAE_MYSQL_HOST_M=''從庫(kù)域名SAE_MYSQL_HOST_S=''端口

SAE_MYSQL_PORT='3307'數(shù)據(jù)庫(kù)名

SAE_MYSQL_DB='app_appname'用戶名SAE_MYSQL_USER=access_key密碼SAE_MYSQL_PASS=secret_keySAEJava如何用如何使用云服務(wù)MySQL/RDC原生的JDBC代碼:

//主庫(kù)域名數(shù)據(jù)庫(kù)名為"app_應(yīng)用名稱"String

url="jdbc:mysql://:3307/app_java4test";String

username=SaeUserInfo.getAccessKey();Stringpassword=SaeUserInfo.getSecretKey();Stringdriver="com.mysql.jdbc.Driver";Class.forName(driver).newInstance();Connection

con=DriverManager.getConnection(url,username,password);……支持?jǐn)?shù)據(jù)庫(kù)連接池(dbcp)SAEJava如何用如何使用云服務(wù)KVDBKVDB高性能高可靠的key-value存儲(chǔ),采用一主多從的分布式架構(gòu),讀寫(xiě)可達(dá)

10wqps。每個(gè)用戶支持

100G存儲(chǔ)空間,可支持1,000,000,000條記錄。

應(yīng)用使用KVDB需手動(dòng)開(kāi)啟服務(wù)SAEJava如何用如何使用云服務(wù)KVDBKVDB支持boolean、long、double、byte[]四種類型的存儲(chǔ)

本地使用JavaDB實(shí)現(xiàn)

需要存儲(chǔ)對(duì)象可將對(duì)象轉(zhuǎn)化成byte[]再進(jìn)行存儲(chǔ)SaeKVkv=newSaeKV();kv.init();Useruser1=newUser(1,"jim",21);kv.set("user1",SaeKVUtil.serializable(user1));//get數(shù)據(jù)Useruser2=SaeKVUtil.deserializable(kv.get("user2"));SAEJava如何用如何使用云服務(wù)MemcacheMemcache分布式緩存服務(wù),快速讀寫(xiě)小于1M的數(shù)據(jù)。和標(biāo)準(zhǔn)的Memcache一樣,適合用來(lái)存儲(chǔ)小數(shù)據(jù)。需要手動(dòng)開(kāi)啟

SAEJava如何用如何使用云服務(wù)MemcacheMemcache服務(wù)提供

8種基本類型的存儲(chǔ),以及String類型,byte[]

和對(duì)象類型的存儲(chǔ),本地可使用Memcache模擬

SaeMemcachemc=newSaeMemcache();mc.init();mc.set("num",9527);mc.set("user",newUser(1,"jim",21));//get數(shù)據(jù)

Useruser2=SaeKVUtil.deserializable(mc.get("user"));

System.out.println(user2.getName());

System.out.println(mc.get("num"));

SAEJava如何用如何使用云服務(wù)Storage/TmpFSStorage為開(kāi)發(fā)者提供的分布式文件存儲(chǔ)服務(wù),可用來(lái)存儲(chǔ)用戶上傳文件,如頭像、附件等。使用Storage服務(wù)需要先創(chuàng)建一個(gè)域,創(chuàng)建過(guò)程中對(duì)域的文件進(jìn)行防盜鏈、緩存過(guò)期等設(shè)置。存儲(chǔ)的文件可通過(guò)http:///fileName

訪問(wèn)SAEJava如何用如何使用云服務(wù)Storage/TmpFSTmpFSSAE提供的請(qǐng)求級(jí)別IO路徑,請(qǐng)求完成后路徑下的文件將會(huì)被銷毀。TmpFS

是本地臨時(shí)文件,不是共享存儲(chǔ)和持久化可以用于請(qǐng)求內(nèi)處理IO,如對(duì)圖片進(jìn)行處理后上傳至Storage中SAEJava如何用如何使用云服務(wù)Storage/TmpFSStorage配合TmpFS存儲(chǔ)文件代碼范例(使用)//使用SaeUserInfo拿到TmpFS路徑StringrealPath=SaeUserInfo.getSaeTmpPath()+"/";//使用common-upload將流寫(xiě)到realPath下可

….代碼省略…..

SaeStoragess=newSaeStorage();

//使用upload方法上傳到域?yàn)閕mage下

ss.upload("image",realPath+fullFile.getName(),fullFile.getName());//當(dāng)然也可以直接用SaeStorage

.write()方法更加簡(jiǎn)潔ss.write("domain","filename","filecontent!");

SAEJava如何用如何使用云服務(wù)FetchURLFetchURL是為開(kāi)發(fā)者提供的網(wǎng)頁(yè)抓取服務(wù),當(dāng)然你也可以用它來(lái)發(fā)送httprest請(qǐng)求,彌補(bǔ)了Socket暫時(shí)無(wú)法使用的缺陷//抓取頁(yè)面SaeFetchurlfetchUrl=newSaeFetchurl();Stringcontent=fetchUrl.fetch("");//發(fā)送post請(qǐng)求fetchUrl.setMethod("post");Mapmaps=newHashMap();maps.put("name1","value1");maps.put("name2","value2");fetchUrl.setPostData(maps);Stringresult=fetchUrl.fetch("/save.php");SAEJava如何用如何使用云服務(wù)MailMail為開(kāi)發(fā)者提供的分布式郵件發(fā)送服務(wù),用來(lái)異步發(fā)送SMTP郵件。郵件服務(wù)兼容了JavaMail發(fā)送郵件方式,同時(shí)提供了SaeMail的發(fā)送郵件接口。SaeMail

mail

=newSaeMail();//快速發(fā)送郵件mail.quickSend("from@",newString[]{"to@"},"郵件標(biāo)題","郵件內(nèi)容","smtpaccount@","password");SAEJava如何用如何使用云服務(wù)TaskQueueTaskQueue為開(kāi)發(fā)者提供的分布式任務(wù)隊(duì)列服務(wù),用來(lái)異步HTTP方式執(zhí)行用戶任務(wù)(可配合Mail發(fā)送更多的郵件)SaeTaskQueue

taskQueue

=newSaeTaskQueue("test");taskQueue.addTask("/page1.php");taskQueue.addTask("/page2.php",“param",true);//將任務(wù)推入隊(duì)列taskQueue.push();SAEJava如何用如何使用云服務(wù)DefferedJobDefferedJob分布式離線任務(wù)隊(duì)列,用于數(shù)據(jù)庫(kù)的導(dǎo)入導(dǎo)出(前提開(kāi)啟Storage服務(wù))SAEJava如何用如何使用云服務(wù)服務(wù)商店第三方服務(wù)接入,更多的服務(wù)選擇,自動(dòng)生成APISAEJava如何用如何看應(yīng)用日志每個(gè)應(yīng)用對(duì)應(yīng)的日志中心可看到應(yīng)用的各種類別日志,包括JVM、HTTP、MySQL、Mail、Cron、TaskQueueSAEJava如何用如何看應(yīng)用日志那些日志會(huì)輸出到日志中心?Jetty服務(wù)器啟動(dòng)和關(guān)閉日志應(yīng)用訪問(wèn)日志服務(wù)使用日志(MySQL、Mail、Cron、TaskQueue)System.out或者System.error輸出Log4J各級(jí)別的日志(SAE對(duì)Log4J進(jìn)行了hook)SAEJava如何用如何看應(yīng)用日志各級(jí)別的日志顯示在哪控制臺(tái)界面顯示類別requestshttp非靜態(tài)資源訪問(wèn)日志,server端的訪問(wèn)debuglog4j.debug,log4j.traceerrorlog4j.error,log4j.fatal,(jetty啟動(dòng)關(guān)閉error日志)warninglog4j.warning,system.err,(jetty啟動(dòng)關(guān)閉warn日志)notice,system.out,(jetty啟動(dòng)關(guān)閉info日志)resourceshttp靜態(tài)資源訪問(wèn)日志,如.jgp之類的SAEJava如何用SAEJava

對(duì)框架的支持Struts2.xSpring3.x/SpringMVCHibern

溫馨提示

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

評(píng)論

0/150

提交評(píng)論