第一篇:Java web開發(fā)的學(xué)習(xí)過程
Java web開發(fā)的學(xué)習(xí)過程
不知不覺從開始學(xué)習(xí)Java到現(xiàn)在已經(jīng)有三年多的時間了。
這三年多里,自己真的學(xué)到了很多,也做了一些商業(yè)項目的開發(fā)。最近有一些師弟在問我,如何去學(xué)習(xí)Java Web開發(fā),在這里我簡單地總結(jié)一下我這三年多來的學(xué)習(xí)過程,希望對他們有一些幫助。
1.java基礎(chǔ)。這是最基本的,也是最重要的,熟悉java語言基礎(chǔ)不只在面試的時候有幫助,在以后的開發(fā)過程中也是不可或缺的。從一無所知到基本上能夠?qū)懗鲆恍┬〕绦颍沂腔擞袃蓚€多月的時間的。但是我的java基礎(chǔ)還不行,所以打算最近再惡補一下thinking in java這本經(jīng)典。
2.HTML+CSS+Javascript。學(xué)完java基礎(chǔ)之后,如果真的要學(xué)web開發(fā),那么就必須得學(xué)習(xí)HTML+CSS+Javascript,能夠?qū)懗鲮o態(tài)的頁面。這些算比較簡單的,但是javascript的話,我沒有學(xué)得很好,但是還是算會用。
3.SQL語法,MySQL,Oracle數(shù)據(jù)庫操作,PL/SQL語言。因為我們做的系統(tǒng)大部分是信息管理系統(tǒng),所以數(shù)據(jù)庫操作是必須的,最好也找數(shù)據(jù)庫設(shè)計相關(guān)的書來看。
4.JDBC+JSP+Servlet的開發(fā)。應(yīng)該要先了解MVC的概念,了解如何用JSP+Servlet來實現(xiàn)MVC結(jié)構(gòu)的系統(tǒng)。這也是非常重要的,MVC這種思想雖然現(xiàn)在有些人覺得它很舊,很out了,但是目前大部分的系統(tǒng)還是用這種思想來實現(xiàn)的。而且這三種技術(shù)也是基礎(chǔ)中的基礎(chǔ)。我當(dāng)時花了一個多月的時間學(xué)的,而且還寫了一個《汽車銷售》的課程設(shè)計。
5.SSH。然后就開始進入流行的開源框架這一塊了。SSH絕對是目前最流行的JavaEE開發(fā)技術(shù),特別是在國內(nèi),雖然有些公司有自己的框架,但是大部分也是基于SSH的,或者說思想和SSH是一致的。所以這三個框架也是必備的。我是花了有三個月的時間在這上面,而且也只是會用而已,對其中一些比較核心的東西還是不懂。
6.AJAX。AJAX的話算是比較簡單,學(xué)習(xí)完它的原理后,可以用一些流行的開源框架來實現(xiàn),如果DWR。也可以順便學(xué)習(xí)一下JQUERY和Prototype,可以讓你的AJAX應(yīng)用更加便捷。
7.XML。XML也是重中之重,開發(fā)時的法寶之一。
8.如果學(xué)習(xí)完以上七個部分,那么去一般做Java Web的軟件公司都是沒有問題的了。但是現(xiàn)在關(guān)鍵的是熟手多,高手少。真正要成為高手,還有很長的路要走,包括時刻關(guān)注java web的發(fā)展,不斷地學(xué)習(xí)一些新的技術(shù),一些新的框架。也要開始學(xué)著如何去架構(gòu),包括如何去做性能調(diào)優(yōu),如何去做更好的數(shù)據(jù)庫設(shè)計,如果去做項目管理等。
所以目前我跟所有剛開始學(xué)習(xí)java的人們一樣,都是有很長的路要走,只要腳踏實地,一步一步向目標(biāo)邁進,我想,沒有什么可以難倒我們的。
第二篇:javaweb開發(fā)要學(xué)習(xí)的所有技術(shù)和框架總結(jié):
學(xué)習(xí)javaweb開發(fā)要學(xué)習(xí)的技術(shù)和框架總結(jié):
前言:當(dāng)初想學(xué)習(xí)javaweb開發(fā)的時候,希望能夠全方面地學(xué)習(xí)(這樣找工作時就胸有成足了)。但是對這個根本不理解,又不認(rèn)識從事這方面的熟人,所以學(xué)習(xí)起來無從下手。經(jīng)過了一年的‘死’學(xué)習(xí),從網(wǎng)上,從書本,從視頻里面深入了解了java。想從事java的朋友,只要把這些技術(shù)全學(xué)會了,哪就業(yè)肯定沒有問題了。
前端技術(shù):
HTML, CSS, JAVASCRIPT, JQUERY, AJAX HTML “超文本”就是指頁面內(nèi)可以包含圖片、鏈接,甚至音樂、程序等非文字元素。超文本標(biāo)記語言的結(jié)構(gòu)包括“頭”部分(外語:Head)、和“主體”部分(外語:Body),其中“頭”部提供關(guān)于網(wǎng)頁的信息,“主體”部分提供網(wǎng)頁的具體內(nèi)容。
CSS 級聯(lián)樣式表是一種用來表現(xiàn)HTML(標(biāo)準(zhǔn)通用標(biāo)記語言的一個應(yīng)用)或XML(標(biāo)準(zhǔn)通用標(biāo)記語言的一個子集)等文件樣式的計算機語言。
JavaScript JavaScript一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動態(tài)功能。
jQuery jQuery是一個兼容多瀏覽器的javascript庫,核心理念是write less,do more(寫得更少,做得更多)。jQuery在2006年1月由美國人John Resig在紐約的barcamp發(fā)布,吸引了來自世界各地的眾多JavaScript高手加入,由Dave Methvin率領(lǐng)團隊進行開發(fā)。如今,jQuery已經(jīng)成為最流行的javascript庫,在世界前10000個訪問最多的網(wǎng)站中,有超過55%在使用jQuery。AJAX AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。
AJAX = 異步 JavaScript和XML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)。AJAX 是一種用于創(chuàng)建快速動態(tài)網(wǎng)頁的技術(shù)。
通過在后臺與服務(wù)器進行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁實現(xiàn)異步更新。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行更新。
Javase Javase學(xué)習(xí)是javaee的基礎(chǔ),不管學(xué)習(xí)javaee(web)還是javame(安卓),但必須深入學(xué)習(xí)javase。Javase學(xué)習(xí):java語法,數(shù)組,集合,面向?qū)ο螅惓L幚恚嗑€程,GUI,注解,泛型,反射,動態(tài)代理。
javaee:
xml編程,http協(xié)議,servlet,jsp,javamail,javabean,el表達(dá)式,jstl自定義標(biāo)簽,會話管理(session,cookie)。
servlet
是在服務(wù)器上運行的小程序。這個詞是在Java applet的環(huán)境中創(chuàng)造的,Java applet是一種當(dāng)作單獨文件跟網(wǎng)頁一起發(fā)送的小程序,它通常用于在客戶端運行,結(jié)果得到為用戶進行運算或者根據(jù)用戶互作用定位圖形等服務(wù)。
JSP
全名為Java Server Pages,中文名叫java服務(wù)器頁面,其根本是一個簡化的Servlet設(shè)計,是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁HTML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件,后綴名為(*.jsp)。
用JSP開發(fā)的Web應(yīng)用是跨平臺的,既能在Linux下運行,也能在其他操作系統(tǒng)上運行。
EL表達(dá)式(Expression Language)
目的:為了使JSP寫起來更加簡單。表達(dá)式語言的靈感來自于 ECMAScript 和 XPath 表達(dá)式語言,它提供了在 JSP 中簡化表達(dá)式的方法。
JSTL(JSP Standard Tag Library,JSP標(biāo)準(zhǔn)標(biāo)簽庫)是一個不斷完善的開放源代碼的JSP標(biāo)簽庫,是由apache的jakarta小組來維護的。JSTL只能運行在支持JSP1.2和Servlet2.3規(guī)范的容器上,如tomcat 4.x。在JSP 2.0中也是作為標(biāo)準(zhǔn)支持的。
會話管理(session,cookie):
JavaMail avaMail 顧名思義,提供給開發(fā)者處理電子郵件相關(guān)的編程接口。它是Sun發(fā)布的用來處理email的API。它可以方便地執(zhí)行一些常用的郵件傳輸。我們可以基于JavaMail開發(fā)出類似于Microsoft Outlook的應(yīng)用程序。
SSH
ssh為 struts+spring+hibernate的一個集成框架,是目前較流行的一種Web應(yīng)用程序開源框架。
集成SSH框架的系統(tǒng)從職責(zé)上分為四層:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域模塊層,以幫助開發(fā)人員在短期內(nèi)搭建結(jié)構(gòu)清晰、可復(fù)用性好、維護方便的Web應(yīng)用程序。
其中使用Struts作為系統(tǒng)的整體基礎(chǔ)架構(gòu),負(fù)責(zé)MVC的分離,在Struts框架的模型部分,控制業(yè)務(wù)跳轉(zhuǎn),利用Hibernate框架對持久層提供支持,Spring做管理,管理struts和hibernate。
具體做法是:用面向?qū)ο蟮姆治龇椒ǜ鶕?jù)需求提出一些模型,將這些模型實現(xiàn)為基本的Java對象,然后編寫基本的DAO(Data Access Objects)接口,并給出Hibernate的DAO實現(xiàn),采用Hibernate架構(gòu)實現(xiàn)的DAO類來實現(xiàn)Java類與數(shù)據(jù)庫之間的轉(zhuǎn)換和訪問,最后由Spring做管理,管理struts和hibernate。
系統(tǒng)的基本業(yè)務(wù)流程是: 在表示層中,首先通過JSP頁面實現(xiàn)交互界面,負(fù)責(zé)傳送請求(Request)和接收響應(yīng)(Response),然后Struts根據(jù)配置文件(struts-config.xml)將ActionServlet接收到的Request委派給相應(yīng)的Action處理。在業(yè)務(wù)層中,管理服務(wù)組件的Spring IoC容器負(fù)責(zé)向Action提供業(yè)務(wù)模型(Model)組件和該組件的協(xié)作對象數(shù)據(jù)處理(DAO)組件完成業(yè)務(wù)邏輯,并提供事務(wù)處理、緩沖池等容器組件以提升系統(tǒng)性能和保證數(shù)據(jù)的完整性。
而在持久層中,則依賴于Hibernate的對象化映射和數(shù)據(jù)庫交互,處理DAO組件請求的數(shù)據(jù),并返回處理結(jié)果。
采用上述開發(fā)模型,不僅實現(xiàn)了視圖、控制器與模型的徹底分離,而且還實現(xiàn)了業(yè)務(wù)邏輯層與持久層的分離。
這樣無論前端如何變化,模型層只需很少的改動,并且數(shù)據(jù)庫的變化也不會對前端有所影響,大大提高了系統(tǒng)的可復(fù)用性。而且由于不同層之間耦合度小,有利于團隊成員并行工作,大大提高了開發(fā)效率。
struts struts 是開源軟件。使用Struts的目的是為了幫助我們減少在運用MVC設(shè)計模型來開發(fā)Web應(yīng)用的時間。
如果我們想混合使用Servlets和JSP的優(yōu)點來建立可擴展的應(yīng)用,struts是一個不錯的選擇。
Struts 是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,并在2004年3月成為ASF的頂級項目。它通過采用JavaServlet/JSP技術(shù),實現(xiàn)了基于Java EEWeb應(yīng)用的MVC設(shè)計模式的應(yīng)用框架,是MVC經(jīng)典設(shè)計模式中的一個經(jīng)典產(chǎn)品。
spring spring 是一個開源框架,Spring是于2003 年興起的一個輕量級的Java 開發(fā)框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。
它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。框架的主要優(yōu)勢之一就是其分層架構(gòu),分層架構(gòu)允許使用者選擇使用哪一個組件,同時為 J2EE 應(yīng)用程序開發(fā)提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。
從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。簡單來說,Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架
hibernate Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。
Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。
Spring MVC Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面。Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構(gòu),可以選擇是使用內(nèi)置的 Spring Web 框架還可以是 Struts 這樣的 Web 框架。通過策略接口,Spring 框架是高度可配置的,而且包含多種視圖技術(shù),例如 JavaServer Pages(JSP)技術(shù)、Velocity、Tiles、iText 和POI。Spring MVC 框架并不知道使用的視圖,所以不會強迫您只使用 JSP 技術(shù)。
Spring MVC 分離了控制器、模型對象、分派器以及處理程序?qū)ο蟮慕巧@種分離讓它們更容易進行定制。
MyBatis MyBatis本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,并且改名為MyBatis。MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。
MyBatis 消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。
MyBatis 使用簡單的 XML或注解用于配置和原始映射,將接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java對象)映射成數(shù)據(jù)庫中的記錄。
JBPM JBPM,全稱是Java Business Process Management(業(yè)務(wù)流程管理),它是覆蓋了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等領(lǐng)域的一個開源的、靈活的、易擴展的可執(zhí)行流程語言框架。
jBPM是公開源代碼項目,使用它要遵循 ASL(Apache License Version 2.0),EULA(JBoss End User License Agreement)協(xié)議。
Maven Maven是基于項目對象模型(POM),可以通過一小段描述信息來管理項目的構(gòu)建,報告和文檔的軟件項目管理工具。
Maven 除了以程序構(gòu)建能力為特色之外,還提供高級項目管理工具。由于 Maven 的缺省構(gòu)建規(guī)則有較高的可重用性,所以常常用兩三行 Maven 構(gòu)建腳本就可以構(gòu)建簡單的項目。由于 Maven 的面向項目的方法,許多 Apache Jakarta 項目發(fā)文時使用 Maven,而且公司項目采用 Maven 的比例在持續(xù)增長。
Lucene Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎。Lucene是一套用于全文檢索和搜尋的開源程式庫,由Apache軟件基金會支持和提供。Lucene提供了一個簡單卻強大的應(yīng)用程式接口,能夠做全文索引和搜尋。
在Java開發(fā)環(huán)境里L(fēng)ucene是一個成熟的免費開源工具。就其本身而言,Lucene是當(dāng)前以及最近幾年最受歡迎的免費Java信息檢索程序庫。
第三篇:javaweb學(xué)習(xí)課程總結(jié)
總結(jié)一:javaweb課程總結(jié)
剛開始學(xué)的時候,感覺這兩門課程好高大上的樣子,因為自從學(xué)軟件工程這個專業(yè)以來,一直都是學(xué)的理論性、框架性的東西,就沒有接觸到編程的實質(zhì)性的部分,終于開始學(xué)編程了,感覺蠻興奮的,也是精神飽滿,信心十足,懷著一腔熱血來聽課。
由于JAVAWEB和JSP兩門課是同時上的,而且每次都是一整上午,上課時間很長,老師一直有條不紊的講著,雖然時間很長,但是每當(dāng)大家上完課,心中都是有一種充實的感覺,大家都覺得有所收獲,所以也就不曾覺得累了。
JAVAWEB這門課讓我認(rèn)識了以前見所未見聞所未聞的專業(yè)術(shù)語,Web應(yīng)用程序的概述。我從中了解到Web應(yīng)用程序的三層體系結(jié)構(gòu):表示層、業(yè)務(wù)層、數(shù)據(jù)存取層。從而想到了學(xué)數(shù)據(jù)庫設(shè)計時的數(shù)據(jù)庫設(shè)計三大范式,它們同是敘述在編寫代碼時應(yīng)做的規(guī)劃和應(yīng)遵循的規(guī)則,這種規(guī)劃在以后的學(xué)習(xí)中時有出現(xiàn),說明編程并不是一味地進行循環(huán)判斷、死記硬背,而需要在技術(shù)上有所加強、在效率上有所提高。做任何事都是如此,事先必須有目標(biāo)、有計劃,有統(tǒng)籌,這樣執(zhí)行時才不會盲目,才不會事倍功半。學(xué)習(xí)編程對綜合能力都是一種培養(yǎng)。
接下來是JSP知識。要學(xué)JSP,就必須會HTML,如果HTML學(xué)不通,這對以后的學(xué)習(xí)都是一個瓶頸。基礎(chǔ)一定要打扎實,吃透,否則上層建筑的建起就不會很順利甚至沒法起步。然后是JavaBean。以下是個人對JavaBean的一點學(xué)習(xí)體會。JavaBean里有set()和get()方法,用這些方法能很容易地傳值,邏輯上更標(biāo)準(zhǔn),代碼看起來也更規(guī)范。但set()和get()方法只是用來對屬性進行操作的,所以如果是進行復(fù)雜的邏輯或?qū)?shù)據(jù)庫進行操作等,那么就不要寫成set()和get()方法,只用一個有返回值的方法就足以。這樣直觀方便,且符合規(guī)范。總之,set()和get()方法不要沒有效率地濫定義。
接著是Servlet。Servlet是一個用Java編寫的應(yīng)用程序,在服務(wù)器上運行,用來處理請求和響應(yīng),也可以單獨做為一個Web頁面。然后講的是標(biāo)簽,包括自定義標(biāo)簽和JSP標(biāo)準(zhǔn)標(biāo)簽庫。用一般的Java代碼都幾乎能實現(xiàn)它們的功能。它們的好處是提高了代碼的重用性。
我們需要配置的壞境有JDK,Tomcat,還要用到Myeclips這一基礎(chǔ)的編程工具。在學(xué)習(xí)JSP之前,由于沒有網(wǎng)頁編程的基礎(chǔ),便學(xué)習(xí)了HTML這種文本標(biāo)記語言,自己試著去做簡單的靜態(tài)網(wǎng)站。后來學(xué)做JSP動態(tài)網(wǎng)站時,就涉及到了多方面的知識,JSP內(nèi)部對象及內(nèi)部對象所涉及的方法,JSP與數(shù)據(jù)庫連接,如何去引用數(shù)據(jù)庫。這門課更是鞏固了JAVA這一基礎(chǔ)編程語言,要求對JAVA掌握的要透徹,每門語言要學(xué)扎實,深入理解,都要花費很大的功夫,不是容易的事情。
Jsp與servlet有一定的區(qū)別,Servlet可以看作是HTML的Java代碼,而JSP可看作是包含Java代碼的HTML。共同點:JSP和Servlet實際上是一回事。JSP頁面最終要轉(zhuǎn)換成Servlet,并進行編譯,在請求期間執(zhí)行的實際上是編譯后的Servlet。因此,JSP頁面不過是編寫Servlet的另一種方式。各自應(yīng)用的范圍:Servlet比較適合于做處理任務(wù),如做業(yè)務(wù)邏輯;JSP適合于表示任務(wù),如網(wǎng)頁制作,生成動態(tài)網(wǎng)頁。
對JAVAWEB和JSP課程的知識就簡單介紹到這里,本學(xué)期的這兩門課程讓我對軟件工程這門課有了一個全新的認(rèn)識,我真切的學(xué)到了能用的東西,大學(xué)里的很多課是浪費時間,而把時間花在學(xué)習(xí)這兩門課上,不會覺得是在虛度光陰,相反,會有一種無比滿足與充實的感覺,感謝彭老師半年以來的精心教誨,感謝這兩門課給我?guī)砜鞓罚?/p>
總結(jié)二:javaweb課程總結(jié)
今天老師講的一定的程度了,發(fā)現(xiàn)有一些細(xì)節(jié),自己并沒有學(xué)好,如下是自己認(rèn)為自己學(xué)的模糊的地方。
1.www是(worldwideweb)萬維網(wǎng),www的客戶端程序:ie,foxfire.2.什么叫web服務(wù)器,就是一段網(wǎng)絡(luò)程序,讓人們通過瀏覽器可以看到任何主機上的內(nèi)容(通俗的說法).3.微軟開發(fā)的搜索引擎?Bing
4.B/S結(jié)構(gòu)的知名缺點是什么?
受瀏覽器功能的限制。
C/S結(jié)構(gòu)的優(yōu)點,在實際中還有一部分地方需要它。如:游戲。
5.老師說再過五年就沒有操作系統(tǒng)了,搜索引擎是未來發(fā)展的趨勢。學(xué)JAVAweb就是做網(wǎng)站,保證以后20年活得比較滋潤。
6.常見的web服務(wù)器
weblogic是bea公司
WebSphere是IBM公司
Tomcat是免費的,是Apache
7.建議使用壓縮的TOMCAT的安裝版,因為現(xiàn)實
中我們是這樣用的。
8.安裝tomcat的常見問題。
在這里要學(xué)習(xí)一門語言:批處理編程。打開STARTUP.BAT.1.說catalina_home沒有配置
2.一安裝完閃就沒有了。
解決方法:
1.環(huán)境變量設(shè)置catalina。還有JAVA_HOME的配置
2.端口被占有的問題。
3.安裝多個tomcat,解決方法進入當(dāng)前的安裝目錄中雙擊startup.bat進入。
總結(jié)三:javaweb課程總結(jié)
我們的JSP課程終于結(jié)束。掐指算來,用一個多月的時間。這次的課程和以往的課程有一些不同。一是,需要理解的概念、專業(yè)術(shù)語很多。比如,JavaWeb里引入了Web體系結(jié)構(gòu)、MVC設(shè)計模式等的概念,出現(xiàn)了Servlet、JavaBean、Scriptlet、JSTL等無法替代的術(shù)語;二是,這次學(xué)習(xí)的內(nèi)容和Internet接軌,十分實用。比如,第四章講解了JavaMail,這是一個用來發(fā)送接收郵件的組件。學(xué)完JSP,既復(fù)習(xí)了Java的知識,又具備了做網(wǎng)站的能力。
回想一下這個階段的過程。
第一章是對Web應(yīng)用程序的概述。我從中了解到Web應(yīng)用程序的三層體系結(jié)構(gòu):表示層、業(yè)務(wù)層、數(shù)據(jù)存取層。從而想到了學(xué)數(shù)據(jù)庫設(shè)計時的數(shù)據(jù)庫設(shè)計三大范式,它們同是敘述在編寫代碼時應(yīng)做的規(guī)劃和應(yīng)遵循的規(guī)則,這種規(guī)劃在以后的學(xué)習(xí)中時有出現(xiàn),說明編程并不是一味地進行循環(huán)判斷、死記硬背,而需要在技術(shù)上有所加強、在效率上有所提高。做任何事都是如此,事先必須有目標(biāo)、有計劃,有統(tǒng)籌,這樣執(zhí)行時才不會盲目,才不會事倍功半。學(xué)習(xí)編程對綜合能力都是一種培養(yǎng)。
接下來學(xué)的是JSP知識。要學(xué)JSP,就必須會HTML,如果HTML學(xué)不通,這對以后的學(xué)習(xí)都是一個瓶頸。這點我有所體會。因為我對HTML掌握得比較好,在這方面沒有遇到什么困難。但如果沒掌握好這些知識,加上要學(xué)新知識,就會在舊難題的基礎(chǔ)上增加新難題,兩頭招架,實有些吃不消。所以,基礎(chǔ)是很重要的,基礎(chǔ)一定要打扎實,吃透,否則上層建筑的建起就不會很順利甚至沒法起步。
然后是JavaBean。以下是個人對JavaBean的一點學(xué)習(xí)體會。JavaBean里有set()和get()方法,用這些方法能很容易地傳值,邏輯上更標(biāo)準(zhǔn),代碼看起來也更規(guī)范。但set()和get()方法只是用來對屬性進行操作的,所以如果是進行復(fù)雜的邏輯或?qū)?shù)據(jù)庫進行操作等,那么就不要寫成set()和get()方法,只用一個有返回值的方法就足以。這樣直觀方便,且符合規(guī)范。總之,set()和get()方法不要沒有效率地濫定義。
接著是Servlet。一上手,我第一個感覺是,很專業(yè)、很難懂。書上介紹了一大堆接口、類、和重寫的方法,一時覺得暈頭轉(zhuǎn)向。后來用得多、看得多了,Servlet的基本格式也記得差不多,其實也沒什么難的。只要記住Servlet是一個用Java編寫的應(yīng)用程序,在服務(wù)器上運行,用來處理請求和響應(yīng),也可以單獨做為一個Web頁面,就足夠了。
在EL表達(dá)式這章,我遇到了一些困難。課后作業(yè)題完成得不順利。但通過后面的學(xué)習(xí),我了解到,EL表達(dá)式最大的作用是在各種標(biāo)簽里使用。標(biāo)簽以外對變量的引用,用其他方法,比如JSP表達(dá)式就能夠達(dá)到目的。
然后講的是標(biāo)簽,包括自定義標(biāo)簽和JSP標(biāo)準(zhǔn)標(biāo)簽庫。這兩章的內(nèi)容不太常用。因為用一般的Java代碼都幾乎能實現(xiàn)它們的功能。它們的好處是提高了代碼的重用性。標(biāo)準(zhǔn)標(biāo)簽庫里有幾個比較有用的標(biāo)簽,比如forTokens和setBundle,這兩個標(biāo)簽的作用是一般代碼實現(xiàn)不了的。
最后一章是MVC設(shè)計模式。所謂MVC,就是Model(JavaBean)、View(JSP)、Controller(Servlet),和第一章講的Web應(yīng)用程序三層體系結(jié)構(gòu)相呼應(yīng)。結(jié)合起來,可以這樣理解。Model是數(shù)據(jù)存取層,View是表示層,Controller是業(yè)務(wù)層。用這樣的規(guī)則編寫網(wǎng)站,能做到邏輯分明,代碼重用度高,便于維護等。
以上就是對這階段學(xué)習(xí)的回顧。
通過學(xué)習(xí)JSP,我了解了更多的編程概念和理念,更增強了信心,只要有克服困難的勇氣和決心,就沒有什么難關(guān)無法克服。我會抱著十足的勇氣和決心向下一個階段挑戰(zhàn)。
從一期學(xué)到現(xiàn)在,我對Java有了一個比較具體的認(rèn)識。
Java的特點是:面向?qū)ο蟆⒖缙脚_、可移植。面向?qū)ο蟮暮x是,這種語言可以形象地模擬現(xiàn)實生活中的實物。在面向?qū)ο蟮恼Z言中,“類”是對一組實物的共同特征描述,“對象”是類的實例,同一個類的一些對象具有類所定義的共同特點。面向?qū)ο蟮娜筇攸c是“封裝”、“繼承”和“多態(tài)”。封裝的表現(xiàn)有三,一是它把數(shù)據(jù)成員zǔzhīzà(因為這里被屏蔽,所以用拼音)在一起,形成一個整體;二是它可以隱藏細(xì)節(jié),簡化操作,比如,聲明一個JTextField類的對象,你可以實現(xiàn)這個API中所有的功能,但看不到這個類的代碼;你可以直接調(diào)用它的setText()、getText()等方法,而不用考慮它具體是怎么實現(xiàn)的。三是它可以保護數(shù)據(jù),比如,一個類里有privateintage的屬性,產(chǎn)生一個setAge(intageTemp)的方法,在這個方法里對傳入的參數(shù)進行檢驗,如果不符合要求,就不對age賦值。
第四篇:JavaWeb學(xué)習(xí)總結(jié)
一、基本概念
1.1、WEB開發(fā)的相關(guān)知識
WEB,在英語中web即表示網(wǎng)頁的意思,它用于表示Internet主機上供外界訪問的資源。
Internet上供外界訪問的Web資源分為:
1.靜態(tài)web資源(如html 頁面):指web頁面中供人們?yōu)g覽的數(shù)據(jù)始終是不變。
2.動態(tài)web資源:指web頁面中供人們?yōu)g覽的數(shù)據(jù)是由程序產(chǎn)生的,不同時間點訪問web頁面看到的內(nèi)容各不相同。
靜態(tài)web資源開發(fā)技術(shù):Html
常用動態(tài)web資源開發(fā)技術(shù):JSP/Servlet、ASP、PHP等
在Java中,動態(tài)web資源開發(fā)技術(shù)統(tǒng)稱為Javaweb。1.2、WEB應(yīng)用程序
WEB應(yīng)用程序指供瀏覽器訪問的程序,通常也簡稱為web應(yīng)用。例如有a.html、b.html?..多個web資源,這多個web資源用于對外提供服務(wù),此時應(yīng)把這多個web資源放在一個目錄中,以組成一個web應(yīng)用(或web應(yīng)用程序)
一個web應(yīng)用由多個靜態(tài)web資源和動態(tài)web資源組成,如:html、css、js文件,Jsp文件、java程序、支持jar包、配置文件等等。
Web應(yīng)用開發(fā)好后,若想供外界訪問,需要把web應(yīng)用所在目錄交給web服務(wù)器管理,這個過程稱之為虛似目錄的映射 1.3、WEB發(fā)展史
WEB發(fā)展的兩個階段:靜態(tài)、動態(tài) 1.4、靜態(tài)WEB
*htm、*html,這些是網(wǎng)頁的后綴,如果現(xiàn)在在一個服務(wù)器上直接讀取這些內(nèi)容,那么意味著是把這些網(wǎng)頁的內(nèi)容通過網(wǎng)絡(luò)服務(wù)器展現(xiàn)給用戶。整個靜態(tài)WEB操作的過程圖如下:
在靜態(tài)WEB程序中,客戶端使用WEB瀏覽器(IE、FireFox等)經(jīng)過網(wǎng)絡(luò)(Network)連接到服務(wù)器上,使用HTTP協(xié)議發(fā)起一個請求(Request),告訴服務(wù)器我現(xiàn)在需要得到哪個頁面,所有的請求交給WEB服務(wù)器,之后WEB服務(wù)器根據(jù)用戶的需要,從文件系統(tǒng)(存放了所有靜態(tài)頁面的磁盤)取出內(nèi)容。之后通過WEB服務(wù)器返回給客戶端,客戶端接收到內(nèi)容之后經(jīng)過瀏覽器渲染解析,得到顯示的效果。
靜態(tài)WEB中存在以下幾個缺點:
1、Web頁面中的內(nèi)容無法動態(tài)更新,所有的用戶每時每刻看見的內(nèi)容和最終效果都是一樣的。
為了可以讓靜態(tài)的WEB的顯示更加好看,可以加入了JavaScript以完成一些頁面上的顯示特效,但是這些特效都是在客戶端上借助于瀏覽器展現(xiàn)給用戶的,所以在服務(wù)器上本身并沒有任何的變化。
實現(xiàn)靜態(tài)WEB客戶端動態(tài)效果的手段:
? ? JavaScript VBScript
在實際的開發(fā)中JavaScript使用得最多。
2、靜態(tài)WEB無法連接數(shù)據(jù)庫,無法實現(xiàn)和用戶的交互。
使用數(shù)據(jù)庫保存數(shù)據(jù)是現(xiàn)在大多數(shù)系統(tǒng)的選擇,因為數(shù)據(jù)庫中可以方便地管理數(shù)據(jù),增刪改查操作可以使用標(biāo)準(zhǔn)的SQL語句完成。1.5、動態(tài)WEB
所謂的動態(tài)不是指頁面會動,主要的特性的是:“WEB的頁面展示效果因時因人而變”,而且動態(tài)WEB具有交互性,WEB的頁面的內(nèi)容可以動態(tài)更新。整個動態(tài)WEB操作的過程圖如下:
動態(tài)WEB中,程序依然使用客戶端和服務(wù)端,客戶端依然使用瀏覽器(IE、FireFox等),通過網(wǎng)絡(luò)(Network)連接到服務(wù)器上,使用HTTP協(xié)議發(fā)起請求(Request),現(xiàn)在的所有請求都先經(jīng)過一個WEB Server Plugin(服務(wù)器插件)來處理,此插件用于區(qū)分是請求的是靜態(tài)資源(*.htm或者是*.htm)還是動態(tài)資源。
如果WEB Server Plugin發(fā)現(xiàn)客戶端請求的是靜態(tài)資源(*.htm或者是*.htm),則將請求直接轉(zhuǎn)交給WEB服務(wù)器,之后WEB服務(wù)器從文件系統(tǒng)中取出內(nèi)容,發(fā)送回客戶端瀏覽器進行解析執(zhí)行。
如果WEB Server Plugin發(fā)現(xiàn)客戶端請求的是動態(tài)資源(*.jsp、*.asp/*.aspx、*.php),則先將請求轉(zhuǎn)交給WEB Container(WEB容器),在WEB Container中連接數(shù)據(jù)庫,從數(shù)據(jù)庫中取出數(shù)據(jù)等一系列操作后動態(tài)拼湊頁面的展示內(nèi)容,拼湊頁面的展示內(nèi)容后,把所有的展示內(nèi)容交給WEB服務(wù)器,之后通過WEB服務(wù)器將內(nèi)容發(fā)送回客戶端瀏覽器進行解析執(zhí)行。1.6、動態(tài)WEB應(yīng)用的實現(xiàn)手段
動態(tài)WEB現(xiàn)在的實現(xiàn)手段非常多,較為常見的有以下幾種:
? ? ? Microsoft ASP、ASP.NET PHP JAVA Servlet/JSP
1、Microsoft ASP、ASP.NET
微軟公司動態(tài)WEB開發(fā)是比較早的,而且最早在國內(nèi)最流行的是ASP。ASP就是在HTML語言之中增加了VB腳本,但是標(biāo)準(zhǔn)的開發(fā)應(yīng)用應(yīng)該是使用ASP+COM,但是實際情況來看,在開發(fā)ASP的時候基本上都在一個頁面中寫上成百上千的代碼,頁面代碼極其混亂。
ASP本身有開發(fā)平臺的限制:Windows+IIS+SQL Server/Access,ASP只能運行在Windows操作系統(tǒng)上,ASP現(xiàn)在基本上已經(jīng)淘汰,現(xiàn)在基本上都是使用ASP.NET進行開發(fā),ASP.NET在性能有了很大的改善,而且開發(fā)迅速,但是依然受限于平臺。ASP.NET中主要是使用C#語言。2.PHP
PHP開發(fā)速度很快,功能強大,跨平臺(平臺指的就是運行的操作系統(tǒng)),而且代碼也簡單。3.Servlet/JSP
這是SUN公司(SUN現(xiàn)在已經(jīng)被Oracle公司收購)主推的B/S架構(gòu)的實現(xiàn)語言,是基于JAVA語言發(fā)展起來的,因為JAVA語言足夠簡單,而且很干凈。
Servlet/JSP技術(shù)的性能也是非常高的,不受平臺的限制,各個平臺基本上都可以使用。而且在運行中是使用多線程的處理方式,所以性能非常高。
SUN公司最早推出的WEB技術(shù)推出的是Servlet程序,Servlet程序本身使用的時候有一些問題,所有的程序是采用JAVA代碼+HTML的方式編寫的,即,要使用JAVA輸出語句,一行一行地輸出所有的HTML代碼,之后,SUN公司受到了ASP的啟發(fā),發(fā)展出了JSP(Java Server Page),JSP某些代碼的編寫效果與ASP是非常相似的。這樣可以很方便地使一些ASP程序員轉(zhuǎn)向JSP的學(xué)習(xí),加大市場的競爭力度。
二、WEB服務(wù)器 2.1、WEB服務(wù)器簡介
1、Web服務(wù)器是指駐留于因特網(wǎng)上某種類型計算機的程序,是可以向發(fā)出請求的瀏覽器提供文檔的程序。當(dāng)Web瀏覽器(客戶端)連到服務(wù)器上并請求文件時,服務(wù)器將處理該請求并將文件反饋到該瀏覽器上,附帶的信息會告訴瀏覽器如何查看該文件(即文件類型)。
2、服務(wù)器是一種被動程序:只有當(dāng)Internet上運行在其他計算機中的瀏覽器發(fā)出請求時,服務(wù)器才會響應(yīng)。
2.2、常見的Web服務(wù)器介紹
1、WebLogic
WebLogic是美國bea公司出品的一個application server。BEA WebLogic是用于開發(fā)、集成、部署和管理大型分布式Web應(yīng)用、網(wǎng)絡(luò)應(yīng)用和數(shù)據(jù)庫應(yīng)用的Java應(yīng)用服務(wù)器。將Java的動態(tài)功能和Java Enterprise標(biāo)準(zhǔn)的安全性引入大型網(wǎng)絡(luò)應(yīng)用的開發(fā)、集成、部署和管理之中。是目前應(yīng)用最廣泛的Web服務(wù)器,支持J2EE規(guī)范,而且不斷的完善以適應(yīng)新的開發(fā)要求,啟動界面如圖
2、WebSphere
WebSphere Application Server 是一種功能完善、開放的Web應(yīng)用程序服務(wù)器,是IBM公司電子商務(wù)計劃的核心部分,它是基于 Java 的應(yīng)用環(huán)境,用于建立、部署和管理 Internet 和 Intranet Web 應(yīng)用程序。這一整套產(chǎn)品進行了擴展,以適應(yīng) Web應(yīng)用程序服務(wù)器的需要,范圍從簡單到高級直到企業(yè)級。啟動界面如圖:
3、Tomcat
TomcatTomcat是一個實現(xiàn)了JAVA EE標(biāo)準(zhǔn)的最小的WEB服務(wù)器,是Apache 軟件基金會的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發(fā)而成。因為Tomcat 技術(shù)先進、性能穩(wěn)定,而且開源免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用服務(wù)器。學(xué)習(xí)JavaWeb開發(fā)一般都使用Tomcat服務(wù)器,該服務(wù)器支持全部JSP以及Servlet規(guī)范,啟動界面如圖:
4、IIS
Microsoft的Web服務(wù)器產(chǎn)品為Internet Information Services(IIS),IIS 是允許在公共Intranet或Internet上發(fā)布信息的Web服務(wù)器。ⅡS是目前最流行的Web服務(wù)器產(chǎn)品之一,很多著名的網(wǎng)站都是建立在ⅡS的平臺上。IIS提供了一個圖形界面的管理工具,稱為Internet信息服務(wù)管理器,可用于監(jiān)視配置和控制Internet服務(wù)。
IIS是一種Web服務(wù)組件,其中包括Web服務(wù)器、FTP服務(wù)器、NNTP服務(wù)器和SMTP服務(wù)器,分別用于網(wǎng)頁瀏覽、文件傳輸、新聞服務(wù)和郵件發(fā)送等方面,它使得在網(wǎng)絡(luò)(包括互聯(lián)網(wǎng)和局域網(wǎng))上發(fā)布信息成了一件很容易的事。它提供ISAPI(Intranet Server API)作為擴展Web服務(wù)器功能的編程接口;同時,它還提供一個Internet數(shù)據(jù)庫連接器,可以實現(xiàn)對數(shù)據(jù)庫的查詢和更新。
學(xué)習(xí)web開發(fā),需要先安裝一臺web服務(wù)器,然后再在web服務(wù)器中開發(fā)相應(yīng)的web資源,供用戶使用瀏覽器訪問。
三、搭建JavaWeb應(yīng)用開發(fā)環(huán)境——Tomcat服務(wù)器
3.1、疑問:學(xué)習(xí)web開發(fā),為什么必須要先裝一個WEB服務(wù)器?
在本地計算機上隨便創(chuàng)建一個web頁面,用戶是無法訪問到的,但是如果啟動tomcat服務(wù)器,把web頁面放在tomcat服務(wù)器中,用戶就可以訪問了。這說明什么問題?
1、不管什么web資源,想被遠(yuǎn)程計算機訪問,都必須有一個與之對應(yīng)的網(wǎng)絡(luò)通信程序,當(dāng)用戶來訪問時,這個網(wǎng)絡(luò)通信程序讀取web資源數(shù)據(jù),并把數(shù)據(jù)發(fā)送給來訪者。
2、WEB服務(wù)器就是這樣一個程序,它用于完成底層網(wǎng)絡(luò)通迅。使用這些服務(wù)器,We應(yīng)用的開發(fā)者只需要關(guān)注web資源怎么編寫,而不需要關(guān)心資源如何發(fā)送到客戶端手中,從而極大的減輕了開發(fā)者的開發(fā)工作量。3.2、下載和安裝Tomcat服務(wù)器
Tomcat官方站點:http://jakarta.apache.org
下載Tomcat安裝程序包:http://tomcat.apache.org/
點擊【Download】跳轉(zhuǎn)到如下圖所示的下載頁面
1.tar.gz文件是Linux操作系統(tǒng)下的安裝版本 2.exe文件是Windows系統(tǒng)下的安裝版本 3.zip文件是Windows系統(tǒng)下的壓縮版本
下載完成后,得到的是一個壓縮包,將壓縮包解壓就可以完成Tomcat服務(wù)器的安裝
將壓縮包解壓后,得到的就是如下圖所示的文件夾,這樣就完成了Tomcat服務(wù)器的安裝。
3.3、啟動和測試Tomcat服務(wù)器
啟動Tomcat服務(wù)器
雙擊 bin 目錄下的 startup.bat 文件啟動Tomcat服務(wù)器
測試Tomcat服務(wù)器
打開瀏覽器,輸入http://localhost:8080/,能顯示如下界面代表安裝成功。
3.4、Tomcat啟動常見問題
導(dǎo)致Tomcat服務(wù)器無法正常啟動的原因一般來說就是如下的兩個:
1、JAVA_HOME環(huán)境變量設(shè)置問題
要想雙擊bin目錄下的startup.bat文件啟動Tomcat服務(wù)器,首先要做的就是在windows中設(shè)置JAVA_HOME環(huán)境變量,因為Tomcat服務(wù)器的啟動需要用到這個JAVA_HOME環(huán)境變量,如果windows中不存在JAVA_HOME環(huán)境變量,則Tomcat服務(wù)器是無法啟動的。
在Window中配置JAVA_HOME變量
操作步驟(win7系統(tǒng)):計算機→右鍵“屬性”→高級系統(tǒng)設(shè)置→高級→環(huán)境變量,如下圖所示:
點擊系統(tǒng)變量下面的“【新建】”,彈出一個新建系統(tǒng)變量對話框,首先在變量名寫上JAVA_HOME,顧名思義,JAVA_HOME的含義就是JDK的安裝路徑,然后在變量值寫JDK的安裝路徑,如這里設(shè)置的變量值是“D:Program Files(x86)Javajdk1.7.0”,設(shè)置好變量值之后,點擊【確定】按鈕,JAVA_HOME環(huán)境變量就設(shè)置完成,如下圖所示:系統(tǒng)變量中多了一個“JAVA_HOME”變量。
正常來說,學(xué)習(xí)Java開發(fā)的第一步就是配置Path環(huán)境變量,比較好的配置方式是先配置JAVA_HOME環(huán)境變量,然后在Path變量中使用“%JAVA_HOME%”引用JAVA_HOME變量的值。
所以這個JAVA_HOME環(huán)境變量在Window中一般都是已經(jīng)配置好了的,如果忘記配置JAVA_HOME環(huán)境變量,那么可以使用上述的方式配置
2、端口占用問題
因為Tomcat服務(wù)器啟動時是需要默認(rèn)是使用8080端口的,如果這個8080端口被別的應(yīng)用程序占用了,那么Tomcat服務(wù)器就無法正常啟動,看到的現(xiàn)象就是“Tomcat服務(wù)器啟動界面會打印出異常錯誤信息,然后就自動關(guān)閉了”,如下圖所示:
由于這個窗口從啟動到關(guān)閉的時間非常短,我們很難通過這個窗口看到Tomcat啟動時的報錯異常信息,因此我們一般只能通過Tomcat服務(wù)器的記錄的log(日志)信息去查看Tomcat服務(wù)器的運行情況。
在Tomcat服務(wù)器的根目錄下有一個logs文件夾,logs文件夾存放Tomcat 的日志文件,打開logs文件夾,可以看到里面的log文件,其中有一個以“catalina.yyyy-MM-dd.log”形式命名的log文件,例如“catalina.2014-05-17.log”日志文件就是記錄Tomcat服務(wù)器2014-05-17這一天的運行情況。
打開catalina.2014-05-17.log文件,看看里面的日志記錄信息,日志信息里面清楚的記錄了Tomcat服務(wù)器的運行情況,如果因為8080端口被占用而無法正常啟動,就會記錄如上圖所示的異常信息,通過查看異常信息,我們就可知道Tomcat服務(wù)器為什么不能夠正常啟動了!
總結(jié):當(dāng)Tomcat服務(wù)器無法正常啟動時,首先檢查是否配置了JAVA_HOME環(huán)境變量,然后再檢查Tomcat服務(wù)器啟動時的端口是否被別的應(yīng)用程序占用了。
第五篇:javaWeb學(xué)習(xí)[小編推薦]
JavaWeb學(xué)習(xí)筆記___d9.txt
2010-12-14 22:51
Session(會話)
Session對象
1、存在于服務(wù)器端
2、依賴于線程
3、Session的生命周期,跟一次瀏覽器窗口有關(guān),只要窗口不關(guān)閉,Session便存在,所以稱會話。
Session1、技術(shù)內(nèi)核使用cookie:
session參在與服務(wù)器端
服務(wù)器端為多個session創(chuàng)建不同的session id
把session id以cookie的形式送入到客戶端
request.getSession()內(nèi)涵是:在cookie中查找
session id,若cookie中存在sessionId,則根據(jù)
sessionId,將sessionID對應(yīng)的session找到,并返回;若cookie中并不存在sessionID,服務(wù)器端創(chuàng)建session,并將sessionID寫入到Cookie中。
2、當(dāng)關(guān)掉對話窗口(結(jié)束一次會話)時,session并沒有被刪除,只是關(guān)掉對話窗口時,cookie被清空
無法再獲得sessionID,無法找到對應(yīng)的session,但是session還是存在于服務(wù)器端。
若想真正刪除session,需要調(diào)用HttpSession中的invalidate()方法,使得session失效。
3、服務(wù)器為了考慮效率,不會讓無用的session存在很久,Http協(xié)議是無連接協(xié)議,服務(wù)器端無法判斷客戶端是否關(guān)閉“會話”,所以服務(wù)器設(shè)置了失效時間。若用戶在了段時間內(nèi),不操作session,則系統(tǒng)刪除session。
我們可以設(shè)置此時間setMaxInactiveInterval(),但不推薦用戶自行設(shè)置。
4、session技術(shù)在很大程度上,依賴于Cookie,若Cookie被禁用,或瀏覽器不支持Cookie,則session就無法使用。
5、為了解決第四點所引申的session不可用的問題。我們使用URL重寫,將sessionID通過地址欄提交參數(shù),發(fā)給服務(wù)器端。
使用response.encodeURL()在地址欄中加載sessionID通過
request.getParameter(jsessionid)得到sessionID
a、String url encodeURL(String url);通過超鏈接,重新發(fā)出請求,此請求會在地址之后自動加上sessionID及其ID值,此方法又被子稱為URL重寫,或重新封裝。
b、String url encodeRedirectURL(String url);將地址封裝成sendRedirect方法所需要的地址,并在此地址后加入sessionID
Servlet API小結(jié):
HttpServletRequest:接口
1、setAttribute()、getAttribute()、getAttributeNames
getParameter()//只能獲得表單中的內(nèi)容
2、getCharacterEncoding()、setCharacterEncoding()
獲得、設(shè)置request中的數(shù)據(jù)編碼方式
3、getContentType()得到MIME,即IE文件打開的方式
4、Cookie[] getCookies()
得到當(dāng)前所有的cookie5、getSession()
獲得或創(chuàng)建session6、getRequestDispatcher(String path)將目標(biāo)頁面封裝,為了forward()進行頁面轉(zhuǎn)向。
7、getRequestedSessionId()得到一個session的id
總結(jié):
request對象封裝了客戶端的請求和相關(guān)信息。
包括:
1、cookie2、封裝http協(xié)議的報頭(請求方式、請求服務(wù)器的端口、請求服務(wù)器ip地址、編碼方式、請求的項目用的名字、請求消息的長度、瀏覽器的信息、客戶端信息??)
3、表單數(shù)據(jù)
HttpServletResponse:接口(響應(yīng))
用它跟客戶端聯(lián)系,并且向客戶端發(fā)送數(shù)據(jù)
1、getCharacterEncoding()得到向客戶端發(fā)送數(shù)據(jù)的默認(rèn)編碼方式。
2、getContentType()得到向客戶端發(fā)送數(shù)據(jù)的默認(rèn)類型(html或者jpeg等等)。
3、getOutputStream()得到與客戶端建立的輸出字節(jié)流,傳輸二進制。
4、getWriter()得到與客戶建立的輸出字符流,傳輸文本文件。
5、setCharacterEncoding()設(shè)置的是要發(fā)送給客戶端的數(shù)據(jù)的編碼方式。
6、setContentType(String type)設(shè)置并告知客戶端,執(zhí)行這些二進制時,用何種類型打開(html、jpeg等等)。
7、addCookie(Cookie cookie)將cookie的鍵和鍵值成對的送到客戶端
8、一些的set方法用來指定客戶端運行時的一些屬性。例:緩存、打開方式、消息頭的控制等等
9、encodeURL(String url)、encodeRedirectURL(String url)**在地址后追加session的id,用來實現(xiàn)cookie被禁用后,session依然可以使用。
10、sendRedirect(String location)頁面的重定向
Cookie:類
1、Cookie(String name,String value)創(chuàng)建Cookie并將鍵,鍵值,存入到Cookie中
2、getMaxAge(int)設(shè)置Cookie的生命服周期,當(dāng)參數(shù)是負(fù)數(shù)時:窗口(會話)被關(guān)掉時,清空Cookie3、getName()獲得Cookie中的鍵
4、getValue()獲得Cookie中的健值
HttpSession:接口
1、getAttribute(String name)、setAttribute(String name)
2、getId()獲得session的唯一標(biāo)識id3、getMaxInactiveInterval()、setMaxInactiveInterval()得到和設(shè)置session的失效時間
4、invalidate()使得session失效
5、isNew()布爾類型,判斷session是否是新創(chuàng)建的HttpServlet:類
1、doGet(HttpServletRequest req,HttpServletResponse resp)
當(dāng)用戶以get方式發(fā)出請求時,servlet調(diào)用此方法
2、doPost(HttpServletRequest req,HttpServletResponse resp)當(dāng)用戶以post方式發(fā)出請求時,servlet調(diào)用此方法
3、public void init()throws ServletException
用戶第一次請求servlet的時候,容器需建立servlet對象,同時調(diào)用init()方法
4、service(ServletRequest req,ServletResponse res)
開辟多線程,并根據(jù)用戶提交的方式,選擇調(diào)用doGet()還是doPost()方法
此方法不建議重寫