『壹』 tomcat 怎麼配置mysql資料庫
1、 將mysql-connector-java-5.1.6-bin.jar,也在%Tomcat_Home%\common\lib\下,
2、 在tomcat中manager中配置數據源名,配置完後內容自動放在conf\server.xml中。
3、 在conf\catalina\localhost\下建你應用程序的xml文件,例wei2.xml中,內容為<Context docBase="wei2" path="/wei2">
<ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource"/>
</Context>攜基
其中jdbc/mysql為配置的JNDI;
下面說下JNDI與DataSource
JNDI java naming directory interface命名和目錄介面命名服務來使組件定位到其它組件和資源(資料庫資源),JNDI所有名應該以字元串java:comp/env開始;
要定位JDBC資源中,這時就可以編寫消櫻代碼使用JNDI的lookup()方法來定位到這個資源了。
JNDI命名服務有一組將名稱與對象聯系在一起的綁定。JNDI中的lookup()方法傳遞一個JNDI參數(java:comp/env/myjdbc,前面java:comp/env是必要的。),返回相應的對象(返回類型為DataSource,若為資料庫,則可用DataSource中的getConnection()方法獲拿隱叢取資料庫連接).
『貳』 Java教程書中的最適合初學者的書是哪一本。
建議你先看教程抄,《JAVA2實用教程》襲清華大學出版社的,這個作為入門教程還不錯,你先照著上面的代碼寫,學編程語言一定要多寫啊~!
有基礎了之後,再看<Think in java>中文名叫《JAVA 編程思想》,這本書很精典,一定要看~!
希望對你有幫助。。。。仍有問題可以HI我。。。。
『叄』 求java程序,用JNDI連接Weblogic數據源(weblogicjndi數據源配置)
1。Java基本語法、類、繼承、方法、介面、Java面向對象程序設計、Java用戶界面(GUI)、Java-JDBC對資料庫進行訪問了解面向對象、封裝、抽象、繼承,掌握Java語法、GUI編程、JDBC,GUI訪問資料庫60課時
2。JavaWEB應用實戰WEB伺服器安裝、配置、SQLServer資料庫使用,JDBC、JavaScript、Servlet、jsP技術,JSP-Servlet-JavaBean三層架構70課時
3。JAVA與資料庫實戰(Oracle、DB2、SQLServer)WebLogic伺服器安裝配置,Oracle、DB2、SQLServer資料庫管理,連接池、數據源、JNDI技術,Java和各種資料庫交互實例50課時
4。JBuilder-WebLogic-EJB-Oracle企業級應用WebLogic、Jbuilder、Oracle集成配置,Java分布式平台技術,連接池、數據源配置,RMI與JNDI技術,中間件概念,會話Bean、實體Bean,開發《購物車》實例全面了解J2EE架構、掌握WebLogic伺服器、Jbuilder開發工具,EJB組件以及JDBC、JNDI分布式平台技術50課時
5。Struts技術揭密及WEB開發實例Struts框架安裝配置,M-V-C模型,Struts控制器模型組件、視圖組件,標記庫原理,數據源配置Struts開發實例50課時
6Linux-Apache-Tomcat-MYSQL集成環境高級應用Linux操作系統安裝,Linux各種命令用法、各種服務配置,Linux系統下WEB伺服器配置;MySQL資料庫安裝及管理;Java和MySQL進行交互40課時
7。UML-Rose建模實戰統一建模語言(UML)概述、概述、健壯性分析,用例和用例圖、用例和角色、識別和角色、邊界、力度、類圖。40課時
8。J2EE框架技術實戰(表示層:Struts,業務層:Spring,持久層:hibernate)表示層:Struts技術業務層:Spring技術數據持久層:hibernate技術、ibatis(sqlmap)技術。60課時
9日語與Java編程經過兩個月日語強化培訓,掌握生活常用的日語,特別是Java編程中經常使用的計算機日語,具有一定日語表達能力。
1、先學學JSP,用純JSP做個日記本簡單的小系統,純粹從語言層面上了解一些基礎知識,把tomcat玩熟了,就用記事本編就行,主要是熟悉,能夠理解jsp運行機制。然後學學java,看本基礎的書,都是那種講講語法的,變數怎麼定義,流程式控制制語句怎麼寫,怎麼編寫函數,怎麼處理表單元素,處理字元串,連接資料庫,會一種就行。這些都是浮在語言表面,你編寫的程序還是結構化的,跟你以前用asp編的程序沒慶拆什麼區別,但是這很重要。你可以直接選擇目前公司里都在使用的Eclips來開發,但是你要區分IDE和Java的區別,不要被IDE邦死了。這些都熟了之後看《thinkinginjava》,看完之後,看corejava兩卷,深入了解到java本身。看這些書的時候你可能就懵懂的進入oo世界了,估計還不太明白。可以配合一些oo的理論方面的書,oo不過就是那幾個特點,封裝分配,多態性,繼承,第一個要理解的當然是對象。看完這些後就可以學習UML建模了,主要會畫三種圖,用例圖,類圖,序列圖,三種圖就足夠了。不要期望自己一下就學會UML,就會建模,得跟java學習聯系起來,編個幾萬行代碼,慢慢就會設計對象了。然後看GOF《謹神設計模式》,對你的面向對象思想一個巨大的提升,這時譽晌棗你一定會去重讀繼承,介面,抽象類的相關的細節了,並且你會發現你的理解能力上了一個台階。然後看看三層結構的知識,這時候編程考慮使用jspservletjavabean,分出表示層,業務層和數據訪問層,這是基礎。
2、以上都是J2SE,然後看thinkinginenterprisejava,學習j2ee基礎知識,你慢慢就會明白持久層的一些機制了,後面的什麼各種新鮮的東西,CMP的東西本質是什麼,你都很好理解了。當然你要不斷編碼,把書里的概念都變成實踐,只有自己動手做,才能理解,看會不等於學會,學會不等於學精,學好技術不等於會設計,層次會越來越高。實踐是認識的唯一來源!!!一定要實踐。
3、編碼時你可以考慮看看《重構》這本書,覺得很好,同時還可以看看,會使你的代碼越來越漂亮。
4、現在你的代碼已經很專業了,而且可以分出不同的層次,因為你知道了最基本的原則,那就是要高內聚,低耦合,要不斷地解耦,但是怎麼更好的解耦,什麼是最佳實踐,你可能並不知道,雖然你看了下面這本書,你會發現你有些做法已經是最佳實踐了,但是依然會存在這種情況,有些你並不確定,那就看看corejavapattern吧,都是14年以上開發經驗的架構師和眾多java大師的經驗總結,書中序言所寫,看完這本書,你將成為Java架構師。
5、這些知道之後,你已經對分層的本質很理解了,你可以知道Struts不過是框架而已,只是運用了頁面助手,前端控制器,應用控制器等這些表示層或者表示層和業務層(Tier)中間連接層(Layer)的模式,對於標簽的理解你也是深刻的。而到集成層,採取不同的策略和模式,數據持久化的理論和經驗,框架不過是把大家都用得著的東西做好了給你用,沒有框架的話很多事需要你自己做,僅此而已,跟那些偉大的思想相比,它們太簡單了。至於到具體的容器,DAO策略還是CMP,BMP,在具體使用怎樣的ORM工具,都是更簡單的事情了。但是看spring,struts這些框架時你會重新閱讀前面的java教程的,因為spring用到了java的反射機制等。
6、到此為止,你會發現你OOP時,想到的就會是性能,到底用數組還是ArryList,還是用HashMap,OOD時,你會考慮並發性,擴展性,復用性,現有框架,池,事務等方面,你會發現每一個問題,你都有好幾種選擇方案,你會不斷重構你的代碼,改良你的設計。
7、下一步是OOA,那就看一本《分析模式》吧,會教你很多分析的現成方法。
此時,你已經是OO方面的專家了,構架一個大型系統應該沒有問題了,而且你的能力可以很輕易的學會WebService,AJAX等這些時髦的東西,你編程的時候可能最常翻的書是JDKAPI,但是你會遇到新的問題,就是讓你設計一套股票系統,可是你對股票一無所知,現學,這是必須的,但是這時你會發現你基礎好差,所以在學技術的同時,多看看各個領域的書吧,其實都是有模式的,比如ERP選型,CRM的幾種樣子,電子商務的幾種模式,看多了你也就會了,所以要學會域建模,因為你是要為商務,政務服務的,是為人服務的。
我覺得這在技術方面就算到頭了,如果你想學管理,當然前提是技術,要不你不知道完成一個項目到底要多久花多少錢。你必須了解開發方法,迭代開發,XP等,當你有了技術,再看這些很容易,因為你會明白為什麼要測試先行,在技術上怎麼實現技術先行;你也會知道結對編碼的意義。學習了這些你會是項目經理。
但是你可能還需要多看看經濟領域的書和法律書,還包括中國政府的報告等等,要政治敏感,這樣你才能成為比爾蓋茨。這離主題有點遠了。
總的原則是:
1、先從語言層面掌握Java(很多說Java容易的人都是只掌握了語言層面的人,當你面對如何解耦,怎樣利用線程,如何更好復用,面向對象時,你就會覺得它好復雜好難)然後再到深入理解Java,先學J2SE再學J2EE。
2、理論和實踐相結合,先看操作,理解本質和原理,然後做,然後翻過來看理論,你會覺得這件事做起來就是順理成章的了,因為當初理論就是這么被推出來的。
3、高處著眼,有了基礎後,你可以從本質上去跟上時髦的東西,比如ORM,更細點說就是Hibernate等,比如各層框架,Spring,Struts等,都很簡單。
4、學好理論,你用到多線程時可能會覺得自己對於線程機制不慎了解,對對象在內存中的生命周期不清楚,對於JUnit斷言的不理解,對調試程序的原理不明白,去看計算機組成原理吧;可能搞不清楚數組的本質,去看數據結構,這時你會發現自己線性代數太差;去討論Java自帶的排序演算法和你自己編寫的演算法,可能覺得自己對一個簡單的函數都看不懂,設計復雜的函數就更不會了,去看計算方法吧,這時你可能會感到你的高等數學太差了;不理解HTTP的接收應答機制,不知道AJAX原理,那麼多語言都有request,response,到底原理是什麼,XML的作用是什麼,SOAP協議,怎麼在網路上傳輸這些數據,看看基礎知識,這些都很簡單。掌握基礎,只有到這時你才會覺得它重要,那就等你知道了再去看吧,也不會太晚,而且你會學的更好。不要羨慕那些碩士博士,他們沒編過程序,照樣不如你,有些都是真的是你不做就永遠不理解,不做底層,理解不了上層。
5、學好外語,因為你會發現很多資料很多問題的答案很多調試錯誤的解釋都是外文的,這時google是最好的工具,但是你的英文要起碼可以讀懂人家說什麼;還有研究Webservice,SOA之類的東西,往往都是英文的。
學好我說的這些,大約需要3年,但是學好JAVA,達到語言層面,只需要1周,達到內部,需要半年,達到會設計,需要做3個以前項目,達到架構師,估計得2到3年,同時那些基礎中的基礎,你更需要好好學,那些是最慢的。
學到語言層面只需要兩樣東西:玩會IDE拿一本包含我所說的那些基本語法的書。玩會IDE你要做到會簡單配置,能運行出東西,會調試(不會調試就沒法編程),然後拿本JDKAPI,打開google和網路,有了錯誤就去搜索,這樣學習Java真的很簡單。
Linux也是要先會玩,要能上網,會下載東西,安裝軟體,寫文檔,然後就是能聽歌看電影,就夠了。接下來在編程,關鍵要會shell那些命令。看看多用戶操作系統的書,建立一個理論高度,就OK了
最後說一句,中國大多數程序都停留在語言層面,很多人都是在懵懂中編程,可能調不通程序,突然改了個東西就通了,但是深層原因並不知道,很多都是東試西試試驗出來的,都是黑箱編程,總感覺隔著霧看程序,我身邊很多人寫了一萬行代碼,還不理解equals和==的區別呢,還不知道Classobject=newClass()等號左右兩邊各代表什麼呢。但是他們一樣能編程,一樣能開發出系統,很多人都以為這樣就算Java高手了,什麼都能編並不等於編的好,當然什麼都能編是個前提。所以要學,就學深入,起碼一種語言要學深,在web開發方面,我推薦java學深,或者說沿著java路學深,這樣去研究C#,.Net平台就很容易,再看ASP和PHP就覺得大家都一樣了,上升到高度不過也就是設計模式的問題了,殊途同歸。
『肆』 java高級編程:基於JNDI的應用開發
基於JNDI的應用開發
JNDI(The Java Naming and Directory Interface Java命名和目錄介面)是一組在Java應用中訪問命名和目錄服務的API 命名服務將名稱和對象聯系起來 使得我們可以用名稱訪問對象 目錄服務是知指兄一種命名服務 在這種服務里 對象不但有名稱 還有屬性
命名或目錄服務使你可以集中存儲共有信息 這一點在網路應用中是重要的 因為這使得這樣的應用更協調 更容易管理 例如 可以將列印機設置存儲在目錄服務中 以便被與列印機有關的應用使用
本文用代碼示例的方式給出了一個快速教程 使你可以開始使用JNDI 它
l 提供了JNDI概述 l 描述了JNDI的特點 l 體驗了一下用JNDI開發應用 l 表明了如何利用JNDI訪問LDAP伺服器 例如 Sun ONE 目錄伺服器 l 表明了如何利用JNDI訪問J EE服務 l 提供了示例代碼 你可以將其改編為自己的應用
JNDI概述
我們大家每天都不知不覺地使用了命名服務 例如 當你在web瀏覽器輸入URL 時 DNS(Domain Name System 域名系統)將這個符號URL名轉換成通訊標識(IP地址) 命名系統中的對象可以是DNS記錄中的名稱 應用伺服器中的EJB組件(Enterprise JavaBeans Component) LDAP(Ligheight Directory Access Protocol)中的用戶Profile
目錄服務是命名服務的自然擴展 兩者之間的關鍵差別是目錄服務中對象可以有屬性(例如 用戶有email地址) 而命名服務中對象沒有屬性 因此 在目錄服務中 你可以根據屬性搜索對象 JNDI允許你訪問文件系統中的文件 定位遠程RMI注冊的對象 訪問象LDAP這樣的目錄服務 定位網路上的EJB組件
對於象LDAP 客戶端 應用launcher 類瀏覽器 網路管理實用程序 甚至地址薄這樣的應用來說 JNDI是一個很好的選擇
JNDI架構
JNDI架構提供了一組標準的獨立於命名系統的API 這些API構建在與命名系統有關的驅動之上 這一層有助於將應用與實際數據源分離 因此不管應用訪問的是LDAP RMI DNS 還是其他的目錄服務 換句話說 JNDI獨立於目錄服務的具體實現 只要你有目錄的服務提供介面(或驅動) 你就可以使用目錄 如圖 所示 圖 JNDI架構
關於JNDI要注意的重要一點是 它提供了應用編程介面(application programming interface API)和服務提供者介面(service provider interface SPI) 這一點的真正含義是 要讓你的應用與命名服務或目錄服務交互 必須有這個服務的JNDI服務提供者 這正是JNDI SPI發揮作用的地方 服務提供者基本上是一組類 這些類為各種具體的命名和目錄服務實現了JNDI介面?很象JDBC驅動為各種具體的資料庫系統實現了JDBC介面一樣 作為一個應用開發者 你不必操心JNDI SPI 你只需要確認你要使用的每一個命名或目錄服逗空務都有服務提供者
J SE和JNDI
Java SDK 及以上的版本包含了JNDI 對於JDK 和 也有一個標搭襲準的擴展 Java SDK x的最新版本包括了幾個增強和下面的命名/目錄服務提供者
l LDAP(Ligheight Directory Access Protocol)服務提供者 l CORBA COS(Common Object Request Broker Architecture Common Object Services)命名服務提供者 l RMI(Java Remote Method Invocation)注冊服務提供者 l DNS(Domain Name System)服務提供者
更多的服務提供者
可以在如下網址找到可以下載的服務提供者列表
特別有意思的或許是如下網址提供的Windows 注冊表JNDI服務提供者 這個服務提供者使你可以訪問Windows XP/ /NT/Me/ x的windows注冊表
也可以在如下網址下載JNDI/LDAP Booster Pack 這個Booster Pack包含了對流行的LDAP控制的支持和擴展 它代替了與LDAP 服務提供者捆綁在一起的booster pack 關於控制和擴展的更多信息可以在如下網站看到 另一個有趣的服務提供者是Sun的支持DSML v (Directory Service Markup Language 目錄服務標記語言)的服務提供者 DSML的目的是在目錄服務和XML之間架起一座橋梁
JNDI API
JNDI API由 個包組成
l Javax naming 包含了訪問命名服務的類和介面 例如 它定義了Context介面 這是命名服務執行查詢的入口 l Javax naming directory 對命名包的擴充 提供了訪問目錄服務的類和介面 例如 它為屬性增加了新的類 提供了表示目錄上下文的DirContext介面 定義了檢查和更新目錄對象的屬性的方法 l Javax naming event 提供了對訪問命名和目錄服務時的時間通知的支持 例如 定義了NamingEvent類 這個類用來表示命名/目錄服務產生的事件 定義了偵聽NamingEvents的NamingListener介面 l Javax naming ldap 這個包提供了對LDAP 版本 擴充的操作和控制的支持 通用包javax naming directory沒有包含這些操作和控制 l Javax naming spi 這個包提供了一個方法 通過javax naming和有關包動態增加對訪問命名和目錄服務的支持 這個包是為有興趣創建服務提供者的開發者提供的
JNDI 上下文
正如在前面提到的 命名服務將名稱和對象聯系起來 這種聯系稱之為綁定(binding) 一組這樣的綁定稱之為上下文(context) 上下文提供了解析(即返回對象的查找操作) 其他操作包括 名稱的綁定和取消綁定 列出綁定的名稱 注意到一個上下文對象的名稱可以綁定到有同樣的命名約定的另一個上下文對象 這稱之為子上下文 例如 如果UNIX中目錄/home是一個上下文 那麼相對於這個目錄的子目錄就是子上下文?例如 /home/guests中guests就是home的子上下文 在JNDI中 上下文用介面javax naming Context表示 這個介面是與命名服務交互的關鍵介面 在Context(或稍後討論的
DirContext)介面中的每一個命名方法都有兩種重載形式
l Lookup(String name) 接受串名 l Lookup(javax naming Name) 接受結構名 例如 CompositeName(跨越了多個命名系統的名稱)或CompondName(單個命名系統中的名稱) 它們都實現了Name介面 Compound name的一個例子是 cn=mydir cn=Q Mahmoud ou=People posite name的一個例子是 cn=mydir cn=Q Mahmoud ou=People/myfiles/max txt(這里 myfiles/max txt是表示第二部分的文件名) Javax naming InitialContext是實現了Context介面的類 用這個類作為命名服務的入口 為了創建InitialContext對象 構造器以java util Hashtable或者是其子類(例如 Properties)的形式設置一組屬性 下面給出了一個例子
Hashtable env = new Hashtable() // select a service provider factory env put(Context INITIAL_CONTEXT_FACTORY sun jndi fscontext RefFSContext ) // create the initial context Context contxt = new InitialContext(env)
INITIAL_CONTEXT_FACTORY指定了JNDI服務提供者中工廠類(factory class)的名稱 Factory負責為其服務創建適當的InitialContext對象 在上面的代碼片斷中 為文件系統服務提供者指定了工廠類 表 給出了所支持的服務提供者的工廠類 要注意的是文件系統服務提供者的工廠類需要從Sun公司單獨下載 J SE x沒有包含這些類
表 上下文INITIAL_CONTEXT_FACTORY的值 Name Service Provider Factory File System sun jndi fscontext RefFSContextFactory LDAP sun jndi ldap LdapCtxFactory RMI sun jndi rmi registry RegistryContextFactory CORBA snaming CNCtxFactory DNS sun jndi dns DnsContextFactory
lishixin/Article/program/Java/hx/201311/26774
『伍』 java中計算兩個時間相差多少分鍾
java中計算兩個時間相差多少分鍾
具體代碼如下:
public static String getDatePoor(Date endDate, Date nowDate) {
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
// long ns = 1000;
// 獲得兩個時間的毫秒時間差異
long diff = endDate.getTime() - nowDate.getTime();
// 計算差多少天
long day = diff / nd;
// 計算差多少小時
long hour = diff % nd / nh;
// 計算差多少分鍾
long min = diff % nd % nh / nm;
// 計算差多少秒//輸出結果
// long sec = diff % nd % nh % nm / ns;
return day + "天" + hour + "小時" + min + "分鍾";
}
data默認有toString()
輸出格林威治時間,比如說Date date = new Date();
String toStr = date.toString();
(5)jndi教程視頻擴展閱讀:
Java是由Sun Microsystems公司於1995年5月推出的Java程序設計語言(以下簡稱Java語言)和Java平台的總稱。
用Java實現的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平台、動感的Web、Internet計算。
從此,Java被廣泛接受並推動了Web的迅速發展,常用的瀏覽器現在均支持Java applet。另一方面,Java技術也不斷更新。
Java語言是一個面向對象的。Java語言提供類、介面和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持介面之間的多繼承,並支持類與介面之間的實現機制(關鍵字為implements)。
『陸』 零基礎學習Java的書籍有哪些,請推薦
主要分三階段來說:入門,進階程序員,攻城獅思維,每個階段推薦相關書籍:
java入門書籍推薦: 入門者最需要靜下心來系統化的學習知識,但同時也有很多可能與Java本身無關但很重要的疑問。
Head First Java(中文版)(第2版)
head first系列的教材,看起來都特別輕松,圖文並茂,簡單易懂,適合初學者選擇。缺點則是只介紹一些最基礎最實用的東西 知識點不夠豐富。
Java核心技術 第七版 卷Ⅰ(基礎知識)
統全面講解Java語言的核心概念、語法、重要特性和開發方法,包含大量案例,實踐性強,第1章概述了Java語言與其他程序設計語言不同的性能。
Java開發實戰經典
書中的代碼和案例較多,知識點也比較全面,在實際開發的過程中來講解一些基礎內容,對於新手而言很實用。
Thinking In Java 4(完美高清中文版)
Think in java被譽為「java聖經」。無論你處於什麼階段,每一次閱讀都能有所收獲。也因此,對於新手而言,這本書毀譽參半,自行斟酌吧。
———————————華麗分割線————————-——————
程序員進階篇:
這一階段的Java學習者處於高速成長期,需要不斷的獲取項目經驗、掌握更多開發知識。當然,最重要的還是為了成功拿到靠譜的offer。
《Effective Java中文版 第2版》
本書介紹了在java編程中78條極具實用價值的經驗規則,每條規則都以簡短、獨立的小文章形式出現,並通過例子代碼加以進一步說明,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。
Java並發編程實戰(中文版)
深入淺出地介紹了Java線程和並發,是一本完美的Java並發參考手冊。其中並非只講述了Java的多線程設施,對一般的並發編程的rationale也有相當透徹的闡述 測試驅動開發 by Example 書中不僅以案例的形式呈現了測試驅動開發的原則和方法,而且詳盡地闡述了測試驅動開發(TDD)的模式和最佳實踐。本書從始至終貫穿了兩個TDD項目,展示了如何輕而易舉且卓有成效地編寫優質代碼的技術。
現在很多小夥伴喜歡在互聯網上找視頻資料學習網頁製作,但是光看視頻你是不可能學會網頁製作的,沒有人指導你,而且很多視頻已經過時了 並沒有什麼用! 如果你真的想學習網頁製作這門技術,你可以來這個群,前面是6 5 7 ,中間是1三7,最後是九O六, 在這里有最新的HTML課程 免費學習 也有很多人指導你 進步 不需要你付出什麼 只要你有一顆學習的心就可以了 不是願意學習或者自認不需要學習的就不要加了。
重構_改善既有代碼的設計[高清版]
書中給出了70多個可行的重構,每個重構都介紹了一種經過驗證的代碼變換手法的動機和技術。本書提出的重構准則將幫助你一次一小步地修改你的代碼,從而減少了開發過程中的風險。
——————————進階攻城獅———————————- ——————
java攻城獅推薦學習書籍:
這一階段的Java學習者已經漸入佳境,沉下心來研究技術點的同時,更多的是關於Java的思考。
企業應用架構模式(中文版)
作者將40多種經常出現的解決方案轉化成模式,最終寫成這本能夠應用於任何一種企業應用平台的、關於解決方案的、不可或缺的手冊。
敏捷開發-敏捷軟體開發:原則、模式與實踐(全)
好的技術書籍的標準是通俗易懂;文字精煉;耐讀,有吸引力;有思想性。作者的書寫功力有目共睹,而且他的技術修為也絕對無人質疑。因此他寫的這本書秉承了他一貫的優勢。符合所有好處所具備的條件。
《Java性能優化權威指南》
Java性能優化聖經!主要為Java SE 和Java EE 應用的性能調優提供建議。主要包括以下幾方面:性能監控、性能分析、Java HotSpot VM 調優、高效的基準測試以及Java EE 應用的性能調優。
學習過程中精品開發工具推薦:
JDK(Java開發工具包)、SparkJava、jClarity、Eclipse、NetBeans、JUnit.org、IntelliJ IDEA 13.1 以上都是本人收集的資料希望對你有所幫助。
『柒』 JAVA很難學嗎
之前加過一些Java群,群里經常有人問Java好學嗎?或者是抱怨為什麼報這么多錯之類的問題。其實我覺著他們把這些用在問這些問題或者抱怨的時間花在學習上,肯定能有大的收獲,我覺著這其實是一個態度的問題。
有一次幫一個網友遠程解決問題,發現他那maven包下載有點問題,我更新了幾次也是不行,後來讓他自己把之前下載的jar包全部刪掉重新下載,可他卻說太麻煩了,不整了。既然想學又怕麻煩,那永遠是學不到東西的。
學習往往是一點點積累起來的,怕麻煩永遠也學不好。
在此給想學習java的同學推薦一篇零基礎入門的教程:
網頁鏈接
希望會給你帶來幫助!
『捌』 java開發都需要學什麼
首先要明確後端包括哪些職業:DBA(資料庫維護優化專家),Developer(程序猿),Architect(構架師),Scrum master及類似(敏捷開發專家),Project Manager(產品狗),Maintenance&IT support(通訊和伺服器相關),當然這只是一個大致的分類,並沒有一個清晰的界限。
按程序猿內功而言:關系型資料庫,領域驅動設計(Domain-Driven Design),設計模式Design Pattern,演算法Algorithm,面向對象編程OOP(SOLID),線程安全,事件驅動,測試驅動開發,依賴注入框架,等等。
對於初學Java並且有志於後端開發的同學來說,需要重點關注以下幾個部分:
基礎:比如計算機系統、演算法、編譯原理等等
Web開發: 主要是Web開發相關的內容,包括HTML/CSS/js(前端頁面)、 Servlet/JSP(J2EE)以及MySQL(資料庫)相關的知識。它們的學習順序應該是從前到後,因此最先學習的應該是HTML/CSS/JS(前端頁面)。
J2EE:你需要學習的是Servlet/JSP(J2EE)部分,這部分是Java後端開發必須非常精通的部分,因此這部分是這三部分中最需要花精力的。關於Servlet/Jsp部分視頻的選擇,業界比較認可馬士兵的視頻。
最後一步,你需要學會使用資料庫,mysql是個不錯的入門選擇,而且Java領域里主流的關系型資料庫就是mysql。這部分一般在你學習Servlet/Jsp的時候,就會接觸到的,其中的JDBC部分就是資料庫相關的部分。你不僅要學會使用JDBC操作資料庫,還要學會使用資料庫客戶端工具,比如navicat,sqlyog,二選一即可。
開發框架:目前比較主流的是SSM框架,即spring、springmvc、mybatis。你需要學會這三個框架的搭建,並用它們做出一個簡單的增刪改查的Web項目。你可以不理解那些配置都是什麼含義,以及為什麼要這么做,這些留著後面你去了解。但你一定要可以快速的利用它們三個搭建出一個Web框架,你可以記錄下你第一次搭建的過程,相信我,你一定會用到的。還要提一句的是,你在搭建SSM的過程中,可能會經常接觸到一個叫maven的工具。這個工具也是你以後工作當中幾乎是必須要使用的工具,所以你在搭建SSM的過程中,也可以順便了解一下maven的知識。在你目前這個階段,你只需要在網路上了解一下maven基本的使用方法即可,一些高端的用法隨著你工作經驗的增加,會逐漸接觸到的。
因此,你需要去看一些JDK中的類的源碼,也包括你所使用的框架的源碼。這些源碼能看懂的前提是,你必須對設計模式非常了解。否則的話,你看源碼的過程中,永遠會有這樣那樣的疑問,這段代碼為什麼要這么寫?為什麼要定義這個介面,它看起來好像很多餘?由此也可以看出,這些學習的過程是環環相扣的,如果你任何一個階段拉下來了,那麼你就真的跟不上了,或者說是一步慢步步慢。而且我很負責的告訴你,我在這個階段的時候,所學習的東西遠多於這里所羅列出來的。
總而言之,這個階段,你需要做的是深入了解Java底層和Java類庫(比如並發那本書就是Java並發包java.concurrent的內容),也就是JVM和JDK的相關內容。而且還要更深入的去了解你所使用的框架,方式比較推薦看源碼或者看官方文檔。
『玖』 200分求j2ee入門到精通教程!!!
一、准備篇
1 什麼是J2EE?它和普通的Java有什麼不同?
答:J2EE全稱為Java2 Platform, Enterprise Edition。
「J2EE平台本質上是一個分布式的伺服器應用程序設計環境——一個Java環境,它提供了:
·宿主應用的一個運行基礎框架環境。
·一套用來創建應用的Java擴展API。」(引自《J2EE伺服器端高級編程》)
2 J2EE好學嗎?
答:J2EE是很多技術的集合體,並且還在成長中。
你會遇到很多專有名詞:比如(X)HTML,Servlet/JSP,JDBC,JMS,JNDI,EJB,XML,Web Service……。
尤其是XML和Web Service正在快速成長。幸運的是,你不需要等到學會所有技術後再開始編程。
大體上J2EE可以分成3個主要應用:Servlet/JSP,EJB,XML/Web Service 和一些支撐技術例如JDBC和JNDI。
你可以一個一個的學。
3 J2EE有什麼用?
答:用來建設大型的分布式企業級應用程序。或者用更時髦的名詞說就是「電子商務」應用程序。
這些企業可能大到擁有中心資料庫伺服器,Web伺服器集群和遍布全國的辦公終端,也可能小到只不過想做一個網站。
4 學J2EE有前途嗎?
答:在這一市場目前只有一種技術可以和J2EE競爭,那就是Microsoft的.NET。
相對來說.NET要「新」一些而J2EE要「老」一些。
但是.NET只能用於Windows平台(Microsoft聲稱要開發C#在Linux上的虛擬機但是尚未兌現該諾言),
考慮到Linux的發展勢頭,你可以相信.NET不會一統天下。
5 據說J2EE的性能不如.NET好,是真的嗎?
答:在Sun公司提供的樣常式序Pet Store上,Microsoft聲稱不如相同的.NET程序好。
而Sun公司反駁說這一程序不能真正體現J2EE的性能,並且指責Microsoft在資料庫上做了優化。
作者沒有學習過.NET因而不能妄下斷言。
無論如何,大型分布式程序中的性能瓶頸通常首先來自於錯誤的設計。
6 聽你說了這么多,我想學著玩玩。
答:除非你想靠它當飯吃或者作為技術儲備,否則請不要浪費你的時間。
Flash要好玩得多。計算機游戲就更加好玩了。
7 學習J2EE該怎麼開始?
答:首先,下載一個J2EE伺服器。其次,去java.sun.com下載J2EE的API。第三,找一本好的參考書。最後,找一個順手的IDE。
J2EE伺服器。你可以用Sun的J2EE SDK(免費),或者Weblogic(性能最好,但是太大,而且作者不推薦盜版行為),或者JBoss(免費,就是文檔太少),或者JRun(開發版免費,作者用這個)。參考書作者感覺Wrox的《J2EE伺服器端高級編程》不錯,但是太老(作者手頭的是2001年中文版)。你還需要去下載一些最新的技術資料(當然肯定是英文的)。
IDE如果你的機器配置夠好(內存至少512M以上,256M或以下請勿考慮),可以用IBM的WSAD,不然就繼續用Eclipse或者其他。
你也可以經常去水木清華的Java版逛逛,但是在發貼前先看看精華區里有沒有你要的答案。
8 我下了一個J2EE伺服器但是不會配置。
答:請認真閱讀隨機指導文檔,不同的伺服器的配置都不一樣,作者愛莫能助。
9 我發現你沒有提到Tomcat。
答:Tomcat只是一個Web伺服器,更准確地說主要只是一個Web Container。
如果你想要學習EJB的話,Tomcat無法滿足你的需要。
二、 Servlet/JSP篇
10 什麼是Servlet?
答:一個Servlet是一個Java類。它處理Http(s)請求並作出響應,包括返回一個HTML頁面或轉交給其他URL處理。
Servlet必須運行在一個Web Container例如Tomcat中。
Servlet必須是javax.servlet.http.Http Servlet的子類,
你可以繼承doGet()或者doPost()方法,兩者分別對應於Http(s)中的Get請求和Post請求。
11 我怎麼獲得Http請求里的參數?
答:HttpRequest的getParameter()方法。例如:String paramValue = request.getParameter("paramName");
12 我怎麼返回結果?
答:你可以利用相關API打開一個輸出流,並向流中直接寫入一個HTML頁面。
但是作者完全不贊成這樣做。一方面這樣做會很羅嗦。
另一方面從Model-View-Controller模式(在《J2EE核心模式》中被歸為Front Controller模式)的觀點來看,
你應當提供一些HTML或者JSP作為視圖(view),而Servlet則根據請求參數決定轉到哪一個視圖。
你可以利用response.sendRedirect(...)方法或request.getDispatcher(...).forward()方法來實現。
13 sendRedirect()和forward()有什麼不同?
答:sendRedirect()是向瀏覽器發送一個redirect通知,瀏覽器重定向到新的URL。
而forward是在伺服器端直接轉到新的URL,對於瀏覽器是透明的。
前者瀏覽器的地址欄顯示的是新的URL,後者瀏覽器的地址欄顯示的是Servlet的URL。
因而當目標URL會自動刷新時,兩者會造成一些差別。
14 我寫了一個Servlet程序,怎麼運行它?
答:開發J2EE程序有一個部署(deploy)的概念,實際上是開發——部署——運行的三部曲。
大多數伺服器支持Hot deploy。你只需要在相應的Application目錄(具體路徑依賴於伺服器)下面
建立一個符合WAR或EAR格式(參見16,17)的目錄,啟動伺服器,就可以通過瀏覽器訪問了。
特別的,你的Servlet的class文件應當放在/WEB-INF/classes目錄中。
注意J2EE SDK不支持Hot deploy,你需要通過它的deploy tool來部署。
Tomcat只支持WAR格式。
15 EAR和WAR有什麼不同?
答:EAR是一個完整的J2EE應用程序,包括Web部分和EJB部分。
WAR只是其中的Web部分。
16 EAR格式是怎樣的?
答:一個EAR可以包含任意多個WAR或EJB JAR,並且包含一個META-INF的目錄。
在/META-INF中包含了一個application.xml,其中描述了這個EAR包含哪些模塊,以及安全性配置。
細節請看參考書。
17 WAR格式是怎樣的?
答:一個WAR包含一個WEB-INF的目錄,這個目錄下包含classes目錄,lib目錄和web.xml。
/WEB-INF/classes存放按package組織的class文件,/WEB-INF/lib目錄存放jar文件,
web.xml描述了很多東西,請讀參考書。
18 我的普通HTML文件應當放在哪裡?
答:放在除了/WEB-INF以外的其他地方。
19 我訪問不到servlet,甚至連HTML文件都訪問不到!
答:第一你沒啟動伺服器。第二你敲錯了埠。第三你沒有正確配置context-path。
第四你的伺服器不支持auto reload或者你關閉了這一選項,你得重啟伺服器。
第五確認你沒有把HTML放在/WEB-INF目錄下,那是訪問不到的。
20 我能訪問HTML但是訪問不到servlet。
答:請檢查你的web.xml文件。確保你正確定義了<servlet>和<servlet-mapping>元素。
前者標識了一個servlet,後者將一個相對於context-path的URL映射到一個servlet。
在Tomcat中你可以通過/context-path/servlet/package/servletname的形式訪問servlet,
但是這只是Tomcat的便捷訪問方式,並不是正式規范。
細節請看參考書。
21 什麼是JSP?它和Servlet有什麼區別?
答:你可以將JSP當做一個可擴充的HTML來對待。
雖然在本質上JSP文件會被伺服器自動翻譯為相應的Servlet來執行。
可以說Servlet是面向Java程序員而JSP是面向HTML程序員的,除此之外兩者功能完全等價。
『拾』 java開發需要學習什麼
1.java基礎
2.JSP+Servlet+JavaBean 這個環節主要是懂流程的
什麼是MVC而已 別往深了研究 現在開發基本不用這個模式
3.Struts+Hibernate+Spring
這個才是開發的主流技術 把每個都搞清楚 哪個框架是什麼層的
4.Ajax(最好學學 很多公司都注重這個)
然後用3+4 做個例子 不是要實現功能 關鍵是要你知道什麼時候
該用什麼 流程是怎樣的 面試會問及這些
如何學習 Java的問題,「我已經學習了J2SE,怎麼樣才能轉向J2EE?」,「我看完了Thinking in Java, 可以學習J2EE了么?」。於是就有了寫這篇文章的想法,希望能幫助初學者少走一些彎路。也算是對自己幾年來學習Java的一個總結吧。
在開始之前有必要再討論一下J2ME,J2SE,J2EE這些概念。J2ME,The Micro Edition of the Java 2 Platform。主要用於嵌入式Java,如手機,PDA等等。J2SE,Java 2 Platform,Standard Edition,我們通常所說的JDK(Java Development Kit)包含在此,是J2EE的基礎。J2EE,Java 2 Platform,Enterprise Edition,就是所謂的企業級Java。這些只是從API級別上的劃分,實際上Sun給J2EE的定義是:開發基於組件的多層的企業級應用的規范。也就是為各種不同的技術定義一個Java的規范,使這些不同的技術結合起來,在Java平台上構建強壯的企業級應用。從這一點來看,J2EE這個概念應該是涵蓋J2ME,J2SE的。比如一個典型的J2EE應用,網上商店,它支持web方式下訂單,也支持手機下訂單。顯然必須用到J2SE,J2ME。所以也就不存在所謂的從J2SE轉向J2EE的問題了,只是後者包含的范圍更廣而已。
來看看Sun給出的J2EE 相關技術主要分為幾大塊。
1. Web Service技術
- Java API for XML Processing (JAXP)
- Java API for XML Registries (JAXR)
- Java API for XML-based RPC (JAX-RPC)
- SOAP with Attachments API for Java (SAAJ)
2. 組件模型技術(Component Model Technologies)
- Java Servlet
- JavaServer Pages
- JavaServer Faces
- Enterprise JavaBeans
- Java Message Service
- J2EE Connector Architecture
3. 管理技術(Management Technologies)
- J2EE Deployment Specification
- J2EE Management Specification
- J2EE Client Provisioning
- Java Authorization Contract for Containers
4. 其他相關技術(Other J2EE Technologies)
- JDBC
- Java Data Objects (JDO)
- CORBA (Java IDL and Java RMI-IIOP)
- JavaMail
- Transactions
如此之多的技術難免使初學者無所適從,望而卻步。即使是一位經驗豐富的J2EE開發者,又有幾個人敢說J2EE相關的技術我都熟練掌握了。不過作為一名普通J2EE應用程序的開發者來說,我們只需要重點學習其中的一部分技術就可以了,對於其他部分只要做到心中有數,哪天需要用到了知道跑哪裡去找到資料就行了。以我個人的觀點,下面這些技術是一般J2EE應用開發人員所必須熟練掌握的。Java Server Page,Java Servlet,Enterprise JavaBean,JDBC,Transactions。還有JAXP等XML相關技術,Java Message Service,Java Mail,JDO等等是最好應該掌握的。其他Management Technologies,Connector Architecture等等主要是給容器提供商中間件提供商參考的,應用開發者不需要怎麼關心,等用到了再去學習也不遲。 、、
Java發展到現在,按應用來分主要分為三大塊:J2SE,J2ME和J2EE。這三塊相互補充,應用范圍不同。
J2SE就是Java2的標准版,主要用於桌面應用軟體的編程;
J2ME主要應用於嵌入是系統開發,如手機和PDA的編程;
J2EE是Java2的企業版,主要用於分布式的網路程序的開發,如電子商務網站和ERP系統。
先學習j2se
要學習j2ee就要先學習j2se,剛開始學習j2se先建議不要使用IDE,然後漸漸的過渡到使用IDE開發,畢竟用它方便嘛。學習j2se推薦兩本書,《java2核心技術一二卷》,《java編程思想》,《java模式》。其中《java編程思想》要研讀,精讀。這一段時間是基本功學習,時間會很長,也可能很短,這要看學習者自身水平而定。
不要被IDE糾纏
在學習java和j2ee過程中,你會遇到五花八門的IDE,不要被他們迷惑,學JAVA的時候,要學語言本身的東西,不要太在意IDE的附加功能,JAVA編程在不同IDE之間的轉換是很容易的,過於的在意IDE的功能反而容易耽誤對語言本身的理解。目前流行的IDE有jbuilder,eclipse和eclipse的加強版WSAD。用好其中一個就可以了,推薦從eclipse入手j2ee。因為Jbuilder更適合於寫j2se程序。
選擇和學習伺服器使用配置
當你有了j2se和IDE的經驗時,可以開始j2ee的學習了,web伺服器:tomcat,勿庸置疑,tomcat為學習web服務首選。而應用伺服器目前主要有三個:jboss、weblogic、websphere。有很多項目開始採用jboss,並且有大量的公司開始做websphere或weblogic向jboss應用伺服器的移植(節省成本),這里要說的是,學習tomcat和jboss我認為是首選,也是最容易上手的。學習伺服器使用配置最好去詢問有經驗的人(有條件的話),因為他們或許一句話就能解決問題,你自己上網摸索可能要一兩天(我就干過這種傻事),我們應該把主要時間放在學習原理和理論上,一項特定技術的使用永遠代替不了一個人的知識和學問。
學習web知識
如果你是在做電子商務網站等時,你可能要充當幾個角色,這是你還要學習:
html,可能要用到dreamwave等IDE。
Javascript,學會簡單的數據校驗,數據聯動顯示等等
J2eeAPI學習
學習j2eeAPI和學習伺服器應該是一個迭代的過程。
先學習jsp和servlet編程,這方面的書很多,我建立看oreilly公司的兩本《jsp設計》和《java servlet編程》,oreilly出的書總是那本優秀,不得不佩服。
學習jdbc資料庫編程,j2ee項目大多都是MIS系統,訪問資料庫是核心。這本應屬於j2se學習中,這里拿出來強調一下。
學習jndi api,它和學習ejb可以結合起來。
學習ejb api,推薦書《精通ejb》
經過上面的這些的學習,大概可以對付一般的應用了。
有人說跟著sun公司的《j2ee tutorial》一路學下來,當然也可以。
學習ejb設計模式和看代碼(最重要)
設計模式是練內功,其重要性可以這么說吧,如果你不會用設計模式的話,你將寫出一堆使用了ejb的垃圾,有慢又是一堆bug,其結果不如不用ejb實現(ejb不等於j2ee)
無論學習什麼語言,都應該看大量代碼,你看的代碼量不到一定數量,是學不好j2ee的
目前有很多開源的工程可以作為教材:
jive論壇
petstore sun公司
ne sun公司
等等,研讀一個,並把它用到自己的工程中來。
J2ee其他學習
當你漸漸對j2ee了解到一定深度時,你要開始關注當前領域中的一些技術變化,J2ee是一塊百家爭鳴的領域,大家都在這里提出自己的解決方案,例如structs,hiberate,ofbiz等等,學習這些東西要你的項目和目標而定,預先補充一下未嘗不可,但不用涉及太深,畢竟學習原理和理論是最最重要的事。
目前常見j2eeAPI
JavaServer Pages(JSP)技術1.2
Java Servlet技術2.3
JDBC API 2.0
Java XML處理API(JAXP)1.1
Enterprise JavaBeans技術2.0
Java消息服務(JMS)1.0
Java命名目錄介面(JNDI)1.2
Java事務API(JTA) 1.0
JavaMail API 1.2
JavaBeans激活架構(JAF)1.0
J2EE連接器體系結構(JCA)1.0
Java認證和授權服務(JAAS)1.0
學習上面的某些API要以你的項目而定,了解所有他們總之是有好處的
上面印證了大家說的一句話,java語言本身不難學,但是技術太多,所以學java很費勁。回想一下,基本上每個初學者,在剛學習java的時候可能都會問別人這么一句話,你怎麼知道的哪個方法(api)在哪個包里的?呵呵,無他,唯手熟爾。