第一篇:javaWeb總結(jié)+小結(jié)
JavaWeb B/S與C/S的區(qū)別
1,從安裝上來講,B/S只需要在服務(wù)器端安裝即可,而C/S卻需要每一個(gè)客戶端進(jìn)行安裝。2,從部署上來說,B/S只需要服務(wù)器能夠支持即可,而C/S卻對每一個(gè)客戶端的電腦提出了要求。
3,從升級,維護(hù)角度來說,B/S只需要在服務(wù)器端升級維護(hù)即可,像網(wǎng)易的郵箱,而C/S卻是服務(wù)器更新維護(hù)一次,客戶端就要下載相關(guān)的補(bǔ)丁才能使用 4,從安全性來講,B/S是基于服務(wù)器的,較之C/S安全性好
5,從本質(zhì)上來說,B/S是基于請求驅(qū)動(dòng)的,即客戶端發(fā)送一個(gè)Http請求,然后服務(wù)器進(jìn)行處理之后,響應(yīng)給客戶端,而C/S卻是基于事件驅(qū)動(dòng)的,像騰訊的QQ。
6,從耦合度來講,B/S與服務(wù)器端耦合,而C/S卻是與客戶端的操作系統(tǒng)進(jìn)行耦合。但是Client/Server(從游戲的角度來講)較之Brows/Server具有優(yōu)質(zhì)的畫面。
Servlet的使用步驟:
1,創(chuàng)建一個(gè)JAVA類,存放在com.fit.servlet包中,并且此類extends HttpServlet類,才能成為一個(gè)Servlet 2,覆寫doGet()和doPost()方法
3,最后,在web.xml文件中進(jìn)行Servlet配置。具體的配置如下:
就是指Servlet從創(chuàng)建出實(shí)例對象到銷毀的過程。它是一個(gè)容器,負(fù)責(zé)創(chuàng)建實(shí)例來接受客戶端的請求,并且以多線程的方式響應(yīng)給客戶。具體過程如下:
Servlet被服務(wù)器實(shí)例化之后,容器運(yùn)行其init方法進(jìn)行初始化,請求到達(dá)時(shí)運(yùn)行其service方法,在此過程中僅創(chuàng)建一個(gè)對象,然后service方法自動(dòng)調(diào)用與請求相應(yīng)的doXxx方法,當(dāng)服務(wù)器決定將實(shí)例進(jìn)行銷毀時(shí),再調(diào)用其destroy方法。
與CGI(通用網(wǎng)關(guān)接口)的區(qū)別在于,Servlet處于服務(wù)器進(jìn)程中,它通過多線程的方式運(yùn)行其service方法,一個(gè)實(shí)例可以服務(wù)于多個(gè)請求,并且其實(shí)例一般不會(huì)銷毀,而CGI對每一個(gè)請求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷毀,所以效率低于Servlet 作用:可以用來進(jìn)行接收客戶端的請求,也可以進(jìn)行請求流的控制。
Http協(xié)議:(了解)
首先它是(Hypertext Transfer Protocol)超文本傳輸協(xié)議。
HTTP報(bào)文由從客戶機(jī)到服務(wù)器的請求和從服務(wù)器到客戶機(jī)的響應(yīng)構(gòu)成。請求報(bào)文格式如下:
請求行 - 通用信息頭 - 請求頭 - 實(shí)體頭 - 報(bào)文主體
請求行以方法字段開始,后面分別是 URL 字段和 HTTP 協(xié)議版本字段,并以 CRLF 結(jié)尾。
應(yīng)答報(bào)文格式如下:
狀態(tài)行 - 通用信息頭 - 響應(yīng)頭 - 實(shí)體頭 - 報(bào)文主體
狀態(tài)碼元由3位數(shù)字組成,表示請求是否被理解或被滿足。原因分析是對原文的狀態(tài)碼作簡短的描述,狀態(tài)碼用來支持自動(dòng)操作,而原因分析用來供用戶使用。客戶機(jī)無需用來檢查或顯示語法。工作流程:
一次HTTP操作稱為一個(gè)事務(wù),其工作過程可分為四步:
首先客戶機(jī)與服務(wù)器需要建立連接。只要單擊某個(gè)超級鏈接,HTTP的工作就開始了。
建立連接后,客戶機(jī)發(fā)送一個(gè)請求給服務(wù)器,請求方式的格式為:統(tǒng)一資源標(biāo)識符(URL)、協(xié)議版本號,后邊是MIME信息包括請求修飾符、客戶機(jī)信息和可能的內(nèi)容。
服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息,其格式為一個(gè)狀態(tài)行,包括信息的協(xié)議版本號、一個(gè)成功或錯(cuò)誤的代碼,后邊是MIME信息包括服務(wù)器信息、實(shí)體信息和可能的內(nèi)容。
客戶端接收服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然后客 戶機(jī)與服務(wù)器斷開連接。
Javascript的作用:
1,進(jìn)行驗(yàn)證(通過正則表達(dá)式,在css+HTML的部分特性進(jìn)行瀏覽器端的格式驗(yàn)證工作)
2,進(jìn)行交互(將客戶端的一個(gè)請求通過JavaScript可以發(fā)送到服務(wù)器端,也可以在瀏覽器端進(jìn)行人機(jī)的交互,突破了以前靜態(tài)頁面的交互性限制)3,進(jìn)行特效的處理,如走馬燈,時(shí)間時(shí)鐘。
Servlet生命周期:(詳細(xì))是指Servlet實(shí)例從被創(chuàng)建到其消失(對象銷毀,回收)中間的時(shí)間及各個(gè)階段,稱之為Servlet生命周期。
前提:web服務(wù)器加載類。之后執(zhí)行以下過程:
1,實(shí)例化:Servlet容器創(chuàng)建Servlet實(shí)例,具體就是當(dāng)接收到客戶端的第一次請求時(shí),Servlet容器負(fù)責(zé)創(chuàng)建Servlet的一個(gè)實(shí)例。且在此過程中僅創(chuàng)建一個(gè)實(shí)例,通過多線程的方式響應(yīng)客戶端的請求
2,初始化:該容器調(diào)用init()方法。
3,服務(wù):當(dāng)請求到達(dá)時(shí),該Servlet容器自動(dòng)調(diào)用server()方法,根據(jù)客戶端發(fā)送請求的方式,選擇doXxx()方法執(zhí)行
4,銷毀:當(dāng)web服務(wù)器被卸載的時(shí)候,調(diào)用destroy()方法進(jìn)行對象的銷毀。請看以下的一段代碼: package com.fit.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Test extends HttpServlet { private static final long serialVersionUID = 1L;
public Test(){
super();
System.out.println(“===========================”);
} public void destroy(){
System.out.println(“對象被銷毀!”);} public void init()throws ServletException {
System.out.println(“對象初始化!”);} protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
System.out.println(“get方法執(zhí)行”);} protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
this.doGet(request, response);} protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
System.out.println(“服務(wù)開始啟動(dòng)了!”);
super.service(arg0, arg1);}
}運(yùn)行效果如下:
=========================== 對象初始化!服務(wù)開始啟動(dòng)了!
get方法執(zhí)行
2011-7-19 12:07:04 org.apache.catalina.core.StandardContext reload 信息: Reloading this Context has started 對象被銷毀!
分析原因:
1,實(shí)例化對象發(fā)生在客戶端請求第一次到達(dá)的時(shí)候,而不是類被加載的時(shí)候。2,對象只被實(shí)例化一次.3,如果service()被覆寫的話,則調(diào)用的時(shí)候加入super.service(arg0, arg1);這句話時(shí)候才可以清楚的調(diào)用的doXxx()方法,如果不加入此句話,那么將不會(huì)執(zhí)行doGet()方法。所以一般不要覆寫service()方法。只需要覆寫doGet()和doPost()方法。
4,當(dāng)web服務(wù)器被卸載的時(shí)候,將執(zhí)行destroy()方法。進(jìn)行對象的銷毀!
Jsp頁面構(gòu)成元素,Jsp跟Html的區(qū)別,優(yōu)勢
Jsp定義:(Java Server Page)Java服務(wù)器端語言,組成如下: 1,靜態(tài)模板:由HTML,css,JavaScript等元素構(gòu)成。
2,指令:設(shè)定網(wǎng)頁元素的屬性,用于提供這個(gè)歌JSP網(wǎng)頁的相關(guān)信息。
3,腳本元素--聲明:<%!...%>,在此之中可以進(jìn)行變量,常量的定義,類,方法都可以聲明,但是一般不用。
4,腳本元素--Java腳本:<%...%>,在此期間可以進(jìn)行Java代碼的拼寫。5,腳本元素--表達(dá)式:<%=..%>,用于表達(dá)式輸出時(shí)使用。
6,動(dòng)作:利用JSP動(dòng)作可以重用JavaBean組件,可以動(dòng)態(tài)的包含頁面,也可以進(jìn)行服務(wù)器端的跳轉(zhuǎn)(即將用戶的請求轉(zhuǎn)發(fā)給其他的頁面)。7,注釋:
--HTML注釋:,此種注釋可以在頁面中看到,成為客戶端注釋。--Jsp注釋:<%----%>,此種注釋在頁面中看不到,也成為服務(wù)器端注釋。--Java注釋:
?單行注釋:// ?多行注釋:/*???*/ Jsp優(yōu)點(diǎn):使用HTML,CSS等技術(shù)構(gòu)建頁面的模板部分,用Java語言根據(jù)用戶的輸入動(dòng)態(tài)生成可變的內(nèi)容部分。既可以實(shí)現(xiàn)HTML控制頁面布局,也亦可以實(shí)現(xiàn)Servlet的功能,實(shí)現(xiàn)了內(nèi)容與表示分離。Jsp的常見指令,并說出靜態(tài)包含和動(dòng)態(tài)包含的區(qū)別
Page指令:<%@ page language=”java” import=” 完整的包.類名稱” autoFlush=”true[false]” errorPage=”文件名” isErrorPage=”false[true]” isThreadSafe(設(shè)置是否能多線程使用)contentType=”text/html;charset=ISO-8859-1” %> 包含指令:<%@ include file=”文件名”%> taglib指令:此指令用于在Jsp頁面中引入用戶自定義的標(biāo)簽庫。例如: <@% taglib url=http://java.sun.com/jsp/jstl/core prefix=”c”%> 靜態(tài)包含跟動(dòng)態(tài)包含的區(qū)別:
<%@ include file=”文件名%>,此包含屬于靜態(tài)包含,是指先將文件包含進(jìn)來然后在進(jìn)行編譯,編譯后生成的class文件中,被包含的文件在靜態(tài)塊中。且此種包含不允許帶參數(shù)。
Jsp常見的動(dòng)作,?調(diào)用JavaBean相關(guān):
?
?
?
?
?
?輸入/輸出對象
?request:表示客戶端對網(wǎng)頁的請求
?response:用于處理Jsp生成的響應(yīng),使用Http協(xié)議將響應(yīng)發(fā)送給客戶端。
?out:表示從response中取得的輸出流。常用的方法有write(),print(),println()等,用于在頁面中輸出文本形式的響應(yīng)內(nèi)容 ?作用域通信對象
?pageContext:此通信對象的作用域僅在當(dāng)前頁面有效,一旦跳轉(zhuǎn)則不可用
?request:此通信對象的作用域針對的同一個(gè)客戶的請求,如果不是同一個(gè)請求則不可以使用
?session:此通信對象的作用域適用于一次會(huì)話,即打開的同一個(gè)瀏覽器的所有頁面都可以適用
?application:此通信對象的作用域適用于基于WEB服務(wù)器的所有會(huì)話,適用于監(jiān)聽器 ?Servlet對象
?page:指向當(dāng)前Jsp頁面經(jīng)過轉(zhuǎn)譯(jsp?.java文件),編譯(.java文件?.class文件)后的對象本身,即編譯后的Servlet對象本身
?config:是在一個(gè)Servlet初始化時(shí),服務(wù)器向它傳遞的初始化信息。初始化信息可以在web.xml中找到。?錯(cuò)誤對象
?execption:表示Jsp頁面運(yùn)行時(shí)拋出的異常對象,可以在專門準(zhǔn)備的錯(cuò)誤處理頁面中訪問這個(gè)異常對象。
Jsp執(zhí)行過程:
?jsp文件轉(zhuǎn)譯:當(dāng)客戶端請求一個(gè)正確的Jsp文件時(shí),將Jsp—>.java文件(即將Jsp文件翻譯成相應(yīng)的Servlet類的源文件)?編譯:.java文件?.class文件,即將Servlet類的源文件進(jìn)行編譯成為.class的Servlet文件。?調(diào)用Servlet的service()方法響應(yīng)用戶的請求。
描述Jsp和Servlet的區(qū)別,共同點(diǎn),各自的應(yīng)用范圍:
1,從發(fā)展上來看,Jsp可以避開Servlet的輸出頁面的繁瑣步驟,它集合了HTML和Servlet的優(yōu)點(diǎn)。
2,從本質(zhì)上來說,Jsp是Servlet的擴(kuò)展,它是Servlet的簡易形式。Jsp經(jīng)過轉(zhuǎn)譯之后就成為了類Servlet。
3,從創(chuàng)建方式上來說:Jsp由HTML代碼和JSP標(biāo)簽構(gòu)成,而Servlet則完全是由程序代碼構(gòu)成擅長于流程控制和事務(wù)處理的類
4,從使用角度來說:在MVC中,Jsp擔(dān)任的是VIEW層,側(cè)重于視圖,而Servlet則充當(dāng)?shù)目刂茖樱瑐?cè)重于控制邏輯。請求轉(zhuǎn)發(fā)和重定向
? response.sendRedirect():利用response對象向客戶端發(fā)回一個(gè)響應(yīng)指示其訪問其他URL資源,或者說是一個(gè)web組件向另一個(gè)web組件發(fā)送一個(gè)新的請求,屬于重定向,地址欄有變化。且不可以傳遞屬性request參數(shù),當(dāng)所有的代碼執(zhí)行完之后才進(jìn)行重定向。
?request.getRequestDispatcher().forword(req,resp):web組件將一個(gè)請求轉(zhuǎn)發(fā)給另一個(gè)web組件,他們始終是同一個(gè)請求,在此期間可以傳遞request屬性參數(shù),地址欄沒有變化。且一執(zhí)行到此代碼處,后邊的將不再執(zhí)行
JavaBean的組成:
?類必須是具體的,公共的。?提供無參數(shù)的構(gòu)造方法
?提供getter()和setter()方法訪問它的屬性。版權(quán)所有@楊肖飛yangxf159371@126.com
第二篇:javaweb課程設(shè)計(jì)
課程設(shè)計(jì):基于Java Web的討論區(qū)BBS系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
本系統(tǒng)要求實(shí)現(xiàn)以下主要功能:
(1)登錄:提供用戶登錄系統(tǒng)的功能,需要輸入用戶名和密碼
(2)注冊:提供用戶注冊的功能,需要輸入用戶名、密碼、密碼確認(rèn)、Email、QQ
(3)修改注冊信息:提供用戶修改注冊信息的功能,可以修改密碼、Email、QQ
(4)瀏覽討論區(qū):用戶登錄后就可以瀏覽系統(tǒng)中已存在的討論區(qū),用戶可以查看某討論
區(qū)的詳細(xì)信息,也可以進(jìn)入該討論區(qū)瀏覽已發(fā)表的帖子,以及回帖
(5)創(chuàng)建討論區(qū):用戶可以創(chuàng)建討論區(qū),每個(gè)討論區(qū)包含一個(gè)名稱和順序號,每個(gè)討論
區(qū)的名稱在系統(tǒng)中是唯一的,順序號表示討論區(qū)在列表中的排序
(6)修改討論區(qū):提供討論區(qū)名稱和順序號的修改功能
(7)刪除討論區(qū):提供討論區(qū)刪除的功能,方便管理員進(jìn)行討論區(qū)管理
(8)瀏覽帖子:用戶進(jìn)入一個(gè)討論區(qū)后,可以看到帖子列表,包含帖子主題、作者、創(chuàng)
建時(shí)間、回復(fù)次數(shù),點(diǎn)擊一個(gè)帖子,可以查看該帖子的內(nèi)容和回帖
(9)創(chuàng)建帖子:用戶進(jìn)入一個(gè)討論區(qū)后,可以選擇創(chuàng)建一個(gè)新帖子,需要輸入帖子標(biāo)題
和內(nèi)容
(10)修改帖子:提供給管理員使用,修改帖子標(biāo)題和內(nèi)容
(11)刪除帖子:提供給管理員使用,方便管理員進(jìn)行帖子整理
(12)回復(fù)帖子:用戶在瀏覽帖子信息的時(shí)候,可以進(jìn)行回復(fù)
第三篇:javaweb學(xué)習(xí)心得
學(xué)習(xí)心得
在寫心得之前總結(jié)下中級部分學(xué)習(xí)的內(nèi)容,我們的中級部分主要學(xué)習(xí)了html,css,javacript,xml,dtd/scheam,以及java ee 中的jsp,servlet,過濾器,監(jiān)聽器,JSTL,EL,jQuery,Ajax。
下面就各個(gè)模塊進(jìn)行總結(jié):在學(xué)習(xí)html時(shí),我是對這個(gè)沒太在意的,因?yàn)槔锩嫒渴菢?biāo)簽,沒有需要理解的內(nèi)容,全部是屬于識記的,所以在學(xué)習(xí)時(shí)相對輕松,對于html常用的標(biāo)簽都是非常清楚的form中的十一種類型,常用的有text,password,hidden,submit,button,radio,checkbox,等其他的標(biāo)簽如div,table,span,select都是重要的標(biāo)簽.Css的學(xué)習(xí):雖然說在標(biāo)簽中也可以定義樣式,但是這么做看起來不是那么明智,我在學(xué)CSS時(shí)還是比較努力的,所有的樣式效果都測試過,并且寫了相應(yīng)的案例,只是過了不到3個(gè)月就忘了一大半,很多時(shí)候都是查文檔才能寫出來的,雖然CSS對于我們來說不必要非常精通,但是我覺得掌握的東西越多,以后的工作就越輕松,所以在中級結(jié)束后也會(huì)去看看前面的筆記和案例。
Javascript:js 我認(rèn)為是最重要的,甚至于超過servlet,jsp,在上課期間,講的內(nèi)容還是比較少的,就javascript中創(chuàng)建對象來說吧,應(yīng)該只講過3中方法,雖然在一般的情況下是用不上的,但是我覺得還是有必要學(xué)習(xí)的,這樣有助于看懂別人寫的框架,在javascript這部分學(xué)習(xí)中講的最多的還是dom操作,不過我覺得用dom操作太繁瑣了,寫的代碼太多,而且效率看起來也不高,后面就是講的事件,事件也算是簡單的,只是對觸發(fā)的事件進(jìn)行相應(yīng)的響應(yīng)。除了這些就是javascript流程控制,對象一些基本語法,這些和java類似,所以在上課時(shí)沒有講得太多。
Xml: Markup Language可擴(kuò)展標(biāo)記語言。它是由SGML(Standard Gerneralized Markup language)發(fā)展而來的,允許開發(fā)者自定標(biāo)簽,可以將標(biāo)簽和內(nèi)容有效的分離。在XML技術(shù)里,可以編寫一個(gè)文檔來約束XML文檔的書寫規(guī)范,稱之為XML約束。本文主要介紹DTD與Schema兩種約束,在這里學(xué)習(xí)了dtd,scheama,定義XML約束,這部分的學(xué)習(xí)是我感覺最累的一部分,DTD還算好,SCheama里面的內(nèi)容,現(xiàn)在都忘了,沒有任何記憶,只知道在XML約束中有著兩中方式,還好這些在剛開始工作時(shí)是用不上的,因此我也沒有用很多時(shí)間來學(xué)習(xí)。
Servlet:我覺得是比較簡單的,可能是因?yàn)樗莏ava代碼,容易理解。首先講的是開發(fā)環(huán)境的配置,安裝tomcat,了解tomcat下的目錄,以及web工程下的目錄。后來是講了servlet的訪問方式,post和get的區(qū)別,處理中文亂碼是servlet中一個(gè)重要的知識點(diǎn),幾乎每個(gè)項(xiàng)目都會(huì)遇到這個(gè)問題。主要亂碼有g(shù)et,post亂碼,是通過設(shè)置request或者response的編碼方式來實(shí)現(xiàn)的。Servlet間的跳轉(zhuǎn)方式有重定向和轉(zhuǎn)發(fā),對于重定向和轉(zhuǎn)發(fā)的區(qū)別,現(xiàn)在理解的很透徹了,重定向是不能獲取request中參數(shù),是客戶端的兩次請求,而轉(zhuǎn)發(fā)是服務(wù)器內(nèi)部跳轉(zhuǎn),不過,兩種在設(shè)置過濾器的情況下,都要通過過濾器才能跳轉(zhuǎn)。Servlet的生命周期是筆試的必考題,其實(shí)這是很簡單的,只需要理解,沒必要死記硬背的,session算是重要的知識點(diǎn),很多數(shù)據(jù)都是存儲在內(nèi)存中,如購物車,用戶信息等,還可以對session設(shè)置生存時(shí)間。說到session就必須說說四種會(huì)話跟蹤技術(shù),cookie,URL重寫,表單域隱藏和session。
JSP:JSP實(shí)際上和servlet是一樣的,只不過兩者側(cè)重點(diǎn)不同,JSP的內(nèi)置對象和作用域大致是一樣的,JSP中還有動(dòng)作,常用的有操作JavaBean的動(dòng)作,頁面跳轉(zhuǎn)的動(dòng)作,以及包含的動(dòng)作。這里重點(diǎn)提到兩種包含的區(qū)別。在JSP還講過jstl和EL表達(dá)式,都是基礎(chǔ)的應(yīng)用,不過寫自定義的標(biāo)簽還是要有一定的java基礎(chǔ)的,我開始不太理解標(biāo)簽的解析過程,后來看了幾個(gè)例子,發(fā)現(xiàn)自定義的已不是那么難。
jQuery:jQuery可以說是中級部分學(xué)的最好的,主要是它方便了,特別是選擇器,而且避免了一些瀏覽器的差異,所以在學(xué)習(xí)jQuery后,就再也不想用javascript來獲取元素了。不僅如此,jQuery中封裝的Ajax操作也是非常簡單,不需要自己封裝一個(gè)類,$.get和$.post 能夠省去很多麻煩,jQuery的監(jiān)聽事件也是很簡單,不需要在標(biāo)簽中添加對應(yīng)事件,可以動(dòng)態(tài)的綁定事件。還有就是dom操作更是方便。我在學(xué)習(xí)完Ajax,json后就發(fā)現(xiàn),即使是沒有JSP,也能做出一個(gè)動(dòng)態(tài)頁面出來,只是會(huì)存在效率問題。
總結(jié):雖然說這上面的知識大部分都掌握了,但是能否靈活運(yùn)用才是重點(diǎn),所以在今后的學(xué)習(xí)中多思考問題是否有多種解決方法。
第四篇:Javaweb期末試卷總結(jié)版2
Java Web試題 JAVA WEB部分: 1.基于HTTP協(xié)議的Servlet通常繼承__C______, 也可以繼承__B______。這些類型都實(shí)現(xiàn)了接口___A_____。
A.javax.servlet.Servlet
B.javax.servlet.GenericServlet C.javax.servlet.http.HttpServlet 2.我們實(shí)現(xiàn)的基于HTTP協(xié)議的Servlet的服務(wù)方法簽名正確的有__
BCD_____________。
A.public void doGet(ServletRequest req, ServletResponse res)throws IOException, ServletException B.public void doPost(HttpServletRequest req, HttpServletResponse res)throws IOException, ServletException C.public void service(HttpServletRequest req, HttpServletResponse res)throws IOException, ServletException D.public void service(ServletRequest req, ServletResponse res)throws IOException, ServletException
重寫服務(wù)方法,一般是以下兩種方式: doGet(HttpServletRequest req,HttpServletResponse res)doPost(HttpServletRequest req,HttpServletResqonse res)
HttpServlet繼承自GenericServlet,其中的service方法自動(dòng)實(shí)現(xiàn); GenericServlet的調(diào)用方法: 容器
-->service(ServletRequest req,ServletResponse res)-->service(HttpServletRequest req,HttpServletResponse res)-->METHOD=“GET”-->doGet(HttpServletRequest req,HttpServletResponse res)-->METHOD=“POST”-->doPost(HttpServletRequest req,HttpServletResponse res)
API中有D這個(gè)方法
3.在Servlet中要輸出內(nèi)容,使用HttpServletResponse的方法_setContentType 設(shè)置內(nèi)容,對于文本類型調(diào)用方法__ getWriter _獲得一個(gè)___ PrintWriter ___的輸出流,對于二進(jìn)制類型調(diào)用_ getOutputStream 獲得_ ServeltOutputStream _的輸出流。調(diào)用HttpServletRequest的方法_ getParameter 解析有名參數(shù),調(diào)用_ getInputStream 獲得一個(gè)_ ServletInputStream _的輸入流。在Servlet中也可以調(diào)用_ ServletContext 和_ HttpServletRequest _的方法_ getRequestDispatcher __獲得__ RequestDispatcher __, 將請求的處理權(quán)交給一個(gè)新的資源。A.ServletInputStream
B.ServletContext
C.HttpServletRequest D.setContentType
E.getInputStream
F.getOutputStream G.getRequestDispatcher H.RequestDispatcher
I.getParameter J.ServeltOutputStream K.getWriter
L.PrintWriter
4.控制一個(gè)Servlet的生命周期的方法有__C______, _____B___和____A____。其中 ___C_____在所有的請求到來之前調(diào)用,____A____在撤消應(yīng)用或關(guān)閉web container時(shí)調(diào)用。Servlet通常只有一個(gè)實(shí)例,被所有的訪問者共享,因此要注意資源的同步。A.destroy
B.service
C.init 5.以下是部署在主機(jī)”%> C.
D.
E.<% int i = 10;%>
F.<%!int i = 10;%> G.< %@taglib uri=”http://java.sun.com/jstl/core” prefix=”c”%> H.<%=new java.util.Date()%> I.
11.在directive page中,__B______屬性可反復(fù)出現(xiàn),___AC_____屬性的卻省值為true, ____E____屬性的值指向處理異常的頁面,______D__表示激活EL。A.autoFlush
B.import
C.session D.isELIgnored=false
E.errorPage
jsp的page指令(directive)
jsp的page指令(directive)影響著由JSP頁面生成的Servlet的整體結(jié)構(gòu)!page指令的功能包括(1)類的導(dǎo)入(2)Servlet父類的制定(3)內(nèi)容類型的設(shè)置(4)頁面會(huì)話的設(shè)置(5)頁面緩沖的設(shè)置
(6)錯(cuò)誤頁面的設(shè)置(7)控制線程行為
page屬性(attribute)值的兩邊的雙引號也可以用單引號代替,單引號不能省略,若屬性值本身含有引號,則在它們之前加上反斜杠來轉(zhuǎn)義。
page 的幾個(gè)重要的指令:1.import 唯一的一個(gè)允許多次出現(xiàn)的attirbute.默認(rèn)情況下有以下幾個(gè)是自動(dòng)導(dǎo)入的包,java.lang.*;java.servelt.*;javax.servlet.jsp.*;javax.servlet.http.*!2.pageEncoding用來單獨(dú)設(shè)置頁面的字符集。%@page pageEncoding=“GB2312”% 3.contentType設(shè)置響應(yīng)報(bào)頭標(biāo)明發(fā)送到客戶端的MIME類型和頁面字符集!<%@ page contentType=“text/html;charset=gb2312”%> 4.session 屬性控制頁面的會(huì)話特性!%@page session=“true|false”%
默認(rèn)值為true.5.buffer 和 autoFlush 屬性
buffer 設(shè)置緩沖區(qū)的大小 <%@ page buffer=“sizekb|none”%>
autoFlush 當(dāng)緩沖區(qū)滿后自動(dòng)清空!%@page autoFlush=“true|false”% 默認(rèn)值為true,為false時(shí)會(huì)拋出一個(gè)異常。
6.errorPage 和isErrorPage(attribute)<%@page errorPage=“RelativeURL ”%>指定一個(gè)頁面處理當(dāng)前頁面拋出但未捕獲的異常對象。
%@page isErrorPage=“true|false”% 表明當(dāng)前頁面是否可以作為其他jsp頁面的錯(cuò)誤頁面。可以將此頁面放在WEB-INF目錄中,有助于提高程序的安全性。
1、<%@ page buffer=“25kb” autoFlush=“true” %>
2、buffer=“none | 8kb | sizekb” buffer的大小被out對象用于處理執(zhí)行后的JSP對客戶瀏覽器的輸出。缺省值是8kb
3、autoFlush=“true | false” 設(shè)置如果buffer溢出,是否需要強(qiáng)制輸出,如果其值被定義為true(缺省值),輸出正常,如果它被設(shè)置為false,如果這個(gè)buffer溢出,就會(huì)導(dǎo)致一個(gè)意外錯(cuò)誤的發(fā)生.如果你把buffer設(shè)置為none,那么你就不能把a(bǔ)utoFlush設(shè)置為false.12.有一個(gè)JavaBean com.briup.Student, 在JSP中用action在session作用域里創(chuàng)建一個(gè)對象hellen的語句是___
什么是JavaBean?(參見文檔)
13.以下_ABCD_______是JSP中正確的注釋:
A.<%--comments--%> 真正的注釋
B.<% //comments %> C. 會(huì)寫在頁面當(dāng)中
D.<%!/* comments */ %> JAVA中的單行和多行注釋
14.以下__AB______是錯(cuò)誤的:
A.<%!int i = 10;int j = 10;i += j;%> B.<% int getHash(String str){ return str.hashCode();} %> 聲明腳本 C.<%!class A { void print(){System.out.println(“in A”);}} %> 15.在JSP中有很多隱含變量,request的類型是C_javax.servlet.http.HttpServletRequest______, response的類型是_I__javax.servlet.http.HttpServletResponse__, page的類型是__E__javax.servelet.jsp.JspPage_,pageContext的類型是__B__javax.servlet.jsp.PageContext____, session的類型是_D__javax.servlet.http.HttpSession_____, application的類型是____G__ javax.servlet.ServletContext__, config的類型是__F_javax.servlet.ServletConfig_, out的類型是_H__ javax.servlet.jsp.JspWriter_____, exception的類型是___A__java.lang.Throwable___。A.java.lang.Throwable
B.javax.servlet.jsp.PageContext C.javax.servlet.http.HttpServletRequest
D.javax.servlet.http.HttpSession E.javax.servelet.jsp.JspPage
F.javax.servlet.ServletConfig G.javax.servlet.ServletContext H.javax.servlet.jsp.JspWriter I.javax.servlet.http.HttpServletResponse
參見PDF97頁
16.JSP在處理客戶請求前會(huì)被編譯成servlet, JSP中declaration中定義的變量和方法在運(yùn)行時(shí)成為對應(yīng)servlet的___B_____變量和方法;scripting會(huì)成為服務(wù)方法____C____的語句。JSP的生命周期受到____A____,___C_____和___D_____的控制。A.jspInit
B.member
C._jspService
D.jspDestroy
調(diào)出一個(gè)編譯后的JSP文件給學(xué)生看
D:JAVATomcat-5.5.25workCatalinalocalhostRunCommunityorgapachejsppages
17.在web應(yīng)用webdev的WEB-INF的目錄下有一個(gè)標(biāo)簽庫描述文件sample.tld, 其內(nèi)容部分如下:
在hello.jsp中要使用標(biāo)簽hello, 因此必須先引入該標(biāo)簽庫,語句是__<%@taglib uri=”/WEB-INF/sample.tld” prefix=”s”%>_____。要用hello標(biāo)簽在頁面上給”world“打招呼的語句是___
18.在web應(yīng)用webdev的WEB-INF/tags目錄下放置了一些標(biāo)簽文件,用前綴”me”引入這些標(biāo)簽到一個(gè)jsp的 directive taglib的表達(dá)式是___<%@taglib tagdir=”/WEB-INF/tags” prefix=”me”%>__。
19.一個(gè)沒有body的標(biāo)簽其tag handler要實(shí)現(xiàn)接口__C______;如果某個(gè)標(biāo)簽有body, 但標(biāo)簽不與body交互,tag handler要實(shí)現(xiàn)接口___E_____, 如果要與body交互,tag handler要實(shí)現(xiàn)接口____D____。通常前兩種情況的tag handler會(huì)繼承___A_____, 最后一種情況tag handler會(huì)繼承_____B___。
A.javax.servlet.jsp.tagext.TagSupport B.javax.servlet.jsp.tagext.BodyTagSupport C.javax.servlet.jsp.tagext.Tag D.javax.servlet.jsp.tagext.BodyTag E.javax.servlet.jsp.tagext.IterationTag 20.在EL中以下____B____可以獲得requestURI:
A.${requestScope.request.requestURI} B.${pageContext.request.requestURI} C.${requestScope.requestURI} 21.EL中可使用一些隱含對象,通過____C____可以訪問request中的屬性(attriubte), 通過___A_____可以訪問session中的屬性, 通過___B_____可以訪問application中的屬性, 通過___D_____可以訪問瀏覽器輸入的參數(shù),通過____G____可以訪問請求頭中的參數(shù),通過____E____可以訪問web應(yīng)用的參數(shù),通過____F____可以訪問cookie。A.sessionScope
B.applicationScope
C.requestScope D.param
E.initParam
F.cookie G.header 22.在EL中能夠訪問的函數(shù)(function)必須是_____A___。
A.public static
B.protected
C.protected static D.public static void
F.protected static void 23.在EL中訪問JavaBean Student的對象smallTank的屬性name正確的是__ABC______。A.${smallTank.name}
B.${smallTank[?name?]} C.${smallTank[“name”]}
D.${smallTank(?name?)}
SESSION AAA=”aa”
APPLICATION(aa=”hhhh”)
applicationScope['aa'] 此種情況只能用方括號
24.Struts提供MVC的一個(gè)實(shí)現(xiàn),是Java Web應(yīng)用的一個(gè)框架(Framework).它主要采用了____D____模式。瀏覽器請求被控制器servlet ___A_____截取,控制器將瀏覽器表單的輸入封裝到____F____類型的JavaBean對象中,如果應(yīng)用需要作合法性檢測,該類型的____G____方法會(huì)被調(diào)用,該方法的返回類型是_____B___。如果合法性檢測正確,控制器會(huì)將調(diào)用類型為____H____對象的方法__E______處理請求,該方法返回類型為____C____。A.org.apache.struts.action.ActionServlet
B.org.apache.struts.action.ActionErrors C.org.apache.struts.action.ActionForward
D.command
E.execute F.org.apache.struts.action.ActionForm G.validate H.org.apache.struts.action.Action 25.使用Tomcat,我們通常會(huì)設(shè)置環(huán)境變量_C_ CATALINA_HOME_指向安裝目錄;web應(yīng)用的卻省部署目錄在安裝目錄下的___A__webapps___子目錄;如果有多個(gè)web應(yīng)用共享的包如數(shù)據(jù)庫驅(qū)動(dòng)程序,我們應(yīng)該將其放置在安裝目錄的__D__common/lib__子目錄;Tomcat的主要配置文件是安裝目錄下__B_conf _子目錄下的___F__server.xml___;Tomcat 5的應(yīng)用相關(guān)的配置文件放在安裝目錄下___E__conf/Catalina/
B.conf
C.CATALINA_HOME D.common/lib
E.conf/Catalina/
第五篇:javaweb筆試題
(1)假設(shè)在helloapp應(yīng)用中有一個(gè)hello.jsp,它的文件路徑如下:
%CATALINA_HOME%/webapps/helloapp/hello/hello.jsp c 那么在瀏覽器端訪問hello.jsp的URL是什么? 選項(xiàng):
(A)http://localhost:8080/hello.jsp(B)http://localhost:8080/helloapp/hello.jsp(C)http://localhost:8080/helloapp/hello/hello.jsp
(2)假設(shè)在helloapp應(yīng)用中有一個(gè)HelloServlet類,它位于org.javathinker包下,那么這個(gè)類的class文件應(yīng)該放在什么目錄下?(2)選項(xiàng):
(A)helloapp/HelloServlet.class(B)helloapp/WEB-INF/HelloServlet.class(C)helloapp/WEB-INF/classes/HelloServlet.class(D)helloapp/WEB-INF/classes/org/javathinker/HelloServlet.class
(3)假設(shè)在helloapp應(yīng)用中有一個(gè)HelloServlet類,它在web.xml文件中的配置如下:
那么在瀏覽器端訪問HelloServlet的URL是什么? 選項(xiàng):
(A)http://localhost:8080/HelloServlet(B)http://localhost:8080/helloapp/HelloServlet(C)http://localhost:8080/helloapp/org/javathinker/hello(D)http://localhost:8080/helloapp/hello
(4)客戶請求訪問HTML頁面與訪問Servlet有什么異同? 選項(xiàng):
(A)相同:都使用HTTP協(xié)議
(B)區(qū)別:前者Web服務(wù)器直接返回HTML頁面,后者Web服務(wù)器調(diào)用Servlet的方法,由Servlet動(dòng)態(tài)生成HTML頁面
(C)相同:前者Web服務(wù)器直接返回HTML頁面,后者Web服務(wù)器直接返回Servlet的源代碼。(D)區(qū)別:后者需要在web.xml中配置URL路徑。(E)區(qū)別:前者使用HTTP協(xié)議,后者使用RMI協(xié)議。
(5)HttpServletRequest對象是由誰創(chuàng)建的? 選項(xiàng):
(A)由Servlet容器負(fù)責(zé)創(chuàng)建,對于每個(gè)HTTP請求,Servlet容器都會(huì)創(chuàng)建一個(gè)HttpServletRequest對象
(B)由JavaWeb應(yīng)用的Servlet或JSP組件負(fù)責(zé)創(chuàng)建,當(dāng)Servlet或JSP組件響應(yīng)HTTP請求時(shí),先創(chuàng)建
HttpServletRequest對象
(6)從HTTP請求中,獲得請求參數(shù),應(yīng)該調(diào)用哪個(gè)方法? 選項(xiàng):
(A)調(diào)用HttpServletRequest對象的getAttribute()方法(B)調(diào)用ServletContext對象的getAttribute()方法(C)調(diào)用HttpServletRequest對象的getParameter()方法
(7)ServletContext對象是由誰創(chuàng)建的? 選項(xiàng):
(A)由Servlet容器負(fù)責(zé)創(chuàng)建,對于每個(gè)HTTP請求,Servlet容器都會(huì)創(chuàng)建一個(gè)ServletContext對象(B)由JavaWeb應(yīng)用本身負(fù)責(zé)為自己創(chuàng)建一個(gè)ServletContext對象
(C)由Servlet容器負(fù)責(zé)創(chuàng)建,對于每個(gè)JavaWeb應(yīng)用,在啟動(dòng)時(shí),Servlet容器都會(huì)創(chuàng)建一個(gè)ServletContext對象
(8)jspForward1.jsp要把請求轉(zhuǎn)發(fā)給jspForward2.jsp,應(yīng)該在jspForward1.jsp中如何實(shí)現(xiàn)?選項(xiàng):
(A)jspForward2.jsp (B)
(9)當(dāng)瀏覽器第二次訪問以下JSP網(wǎng)頁時(shí)的輸出結(jié)果是什么?
<% int b=0;a++;b++;%>
a:<%= a %>
b:<%= b %> 選項(xiàng):
(A)a=0 b=0(B)a=1 b=1(c)a=2 b=1
(10)下面哪個(gè)說法是正確的? 選項(xiàng):
(A)對于每個(gè)要求訪問maillogin.jsp的HTTP請求,Servlet容器都會(huì)創(chuàng)建一個(gè)HttpSession對象(B)每個(gè)HttpSession對象都有惟一的ID。
(C)JavaWeb應(yīng)用程序必須負(fù)責(zé)為HttpSession分配惟一的ID
(11)如果不希望JSP網(wǎng)頁支持Session,應(yīng)該如何辦?(單選)選項(xiàng):
(A)調(diào)用HttpSession的invalidate()方法(B)<%@ page session= “false“>
(12)在標(biāo)簽處理類中,如何訪問session范圍內(nèi)的共享數(shù)據(jù)? 選項(xiàng):
(A)在TagSupport類中定義了session成員變量,直接調(diào)用它的getAttribute()方法即可。
(B)在標(biāo)簽處理類TagSupport類中定義了pageContext成員變量,先通過它的getSession()方法獲得當(dāng)前的
HttpSession對象,再調(diào)用HttpSession對象的getAttribute()方法。
(C)pageContext.getAttribute(“attributename”,PageContext.SESSION_SCOPE)
(13)在下面的選項(xiàng)中,哪些是TagSupport類的doStartTag()方法的有效返回值? 選項(xiàng):
(A)Tag.SKIP_BODY(B)Tag.SKIY_PAGE(C)Tag.EVAL_BODY_INCLUDE(D)Tag.EVAL_PAGE
(14)以下代碼能否編譯通過,假如能編譯通過,運(yùn)行時(shí)得到什么打印結(jié)果? request.setAttribute(”count“,new Integer(0));Integer count = request.getAttribute(”count");選項(xiàng):
A)不能編譯通過 B)能編譯通過,并正常運(yùn)行 C)編譯通過,但運(yùn)行時(shí)拋出ClassCastException