java web項目開發(fā)案例精粹-補技術(shù)jsp4內(nèi)置對象_第1頁
java web項目開發(fā)案例精粹-補技術(shù)jsp4內(nèi)置對象_第2頁
java web項目開發(fā)案例精粹-補技術(shù)jsp4內(nèi)置對象_第3頁
java web項目開發(fā)案例精粹-補技術(shù)jsp4內(nèi)置對象_第4頁
java web項目開發(fā)案例精粹-補技術(shù)jsp4內(nèi)置對象_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章JSP為了簡化在JSP表達式和程序中的Java代碼,可以使用9個預定義的內(nèi)部對象。這些對象由JSP服務器建立,JSP可以直接使用,不需要顯式地。這9個對象分別為:request用來請求信息,reaponse用來響應信息,outHTML標準輸出,pageContext表示當前JSP頁面的上下文信息,sessionHTTP聯(lián)機會話信息,applicationservlet上下文信息,configJSPservlet配置信息,由web應用配置描述文件,exception用來處理異常信息和page代表當前頁面。requestequetavax.erve.hp.HtpServetequetrequest、s和請求相關(guān)的參數(shù)值等。該對象封裝了用戶提交的信息,通過調(diào)用該對象相應的方法可以獲取封裝的信息,即使用該對象可以獲取用戶提交信息。RequestHTTPHeaderHTTP請址和端口等;獲取協(xié)議版本。Request對象方法見表4-2。4-2request對象方ObjectgetAttribute(StringnameEnumerationrequest對象的所有屬性名稱的集String返回用來保護servlet的認證方法的名稱,未受保護時nullString返回請求中的字符編碼方法,可以在response對象中int返回請求BODY的長度,不能確定長度時返回-1??梢栽趓esponse中設置Stringresponse中定義的內(nèi)容類String[]get返回客戶端所有的的數(shù)EnumerationEnumerationgetHeaders(StringStringgetHeader(String返回指定名稱HTTP頭的信longgetDateHeader(String返回指定名稱Data類型HTTPintgetIntHeader(String返回指定名稱Int類型HTTP頭的信ServletInputStreamLocale返回當Locale對象responseEnumeration返回請求中Locale對象的集StringStringintStringStringgetParameter(StringMap該方法返回包含請求中所有參數(shù)Map對EnumerationString[]getParameterValues(StringStringget方法傳遞的參數(shù)字符串,該方法不分解出單String取出請求中處于ServletPath和QueryString之間的額外String返回用getPathInfo()方法取得的路徑信息的實際路StringBufferedReader返回請求的輸入流對應的Reader對象String獲取發(fā)出請求的客戶IP地StringString返回經(jīng)過客戶端驗證的用戶名 驗證返回intStringgetRealPath(StringgetRequestDispatcher(Stringpath)Stringsession的標StringStringBufferString獲取協(xié)議名稱,缺省值HTTP協(xié)StringString intvoidremoveAttribute(StringvoidsetAttribute(Stringname,ObjectvoidsetCharacterEncoding(StringHttpSessionHttpSessiongetSession(booleancreate boolean檢查請求的會IDURL傳boolean檢查請求的會ID是否仍然有boolean ,如果HTTPSbooleanisUserInRole(String檢查已經(jīng)通過驗證的用戶是否在role所指定的角Principal返回包含用戶登陸名的一個java.security.Principal對request4-3request成員列StringBASIC_AUTH= 認StringCLIENT_CERT_AUTH=StringDIGEST_AUTH=StringFORM_AUTH=requestRequestgetParameter(strings)方法獲取表單所提交的信息。格式為:<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法<FORMaction="show.jsp"method=post:<INPUTtype="text"<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法<FORMaction="show.jsp"method=post:<INPUTtype="text"name="name">:<INPUTtype="text"name="sex">:<INPUTtype="text"name="age"><INPUTTYPE="submit"value="enter"用戶在瀏覽器中輸入該頁面的部署路徑,可得到如圖4-1所示的界面,然后用戶action所指定的頁面,在這里一定要注意了,前面這個頁面可以隨便取名,但是第二個頁面的相對路徑和名字一定要和第一個頁面中的action屬性的值符合。4-1用戶輸入信息頁<%@pagelanguage="java"<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法<%--在這里設定request得到參數(shù)的字符編碼,否則中文會出現(xiàn)亂碼<%request.setCharacterEncoding("gb2312");<font :<%=request.getParameter("sex").toString() <font 當用戶在第一個頁面單擊“提交”按鈕后,用戶輸入的信息就會提交到4-2show.jsp頁面顯<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法<%--在這里設<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法<%--在這里設定request得到參數(shù)的字符編碼,否則中文會出現(xiàn)亂碼 StringnameParam=request.getParameter("name").toString();StringsexParam=request.getParameter("sex").toString();StringageParam=request.getParameter("age").toString();StringbuttonParam=request.getParameter("submit").toString();If(nameParam!=null&&sexParam!=null&&ageParam!=null&&buttonParam!=null){<font :<%=nameParam:<%=sexParam:<%=ageParam<font<%=buttonParam<fontcolor=red><%@pagelanguage="java"contentType="text/html"<title>request<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法StringnameParam=request.getParameter("name");bytenameByte=nameParam.getBytes("GB2312");nameParam=newString(nameByte);StringsexParam=request.getParameter("sex");bytesexByte=sexParam.getBytes("GB2312");sexParam=newString(sexByte);StringageParam=request.getParameter("age");byteageByte=ageParam.getBytes("GB2312");ageParam=newString(ageByte);StringbuttonParam=request.getParameter("submit");bytebuttonByte=buttonParam.getBytes("GB2312");buttonParam=newString(buttonByte);If(nameParam!=null&&sexParam!=null&&ageParam!=null&&buttonParam<font<font :<%=nameParam:<%=sexParam:<%=ageParam<font<%=buttonParam<fontcolor=red><%@pagecontentType="text/html<%@pagecontentType="text/html;charset=GB2312"<%@pageimport="java.util.*"<BODY<%Stringprotocol=request.getProtocol();<%Stringpath=request.getServletPath();<%intlength=request.getContentLength();<%Stringmethod=request.getMethod();<BR>HTTP頭文User-Agent的值<%Stringheader1=request.getHeader("User-Agent");<%Stringheader2=request.getHeader("accept");<%Stringheader3=request.getHeader("Host");<BR>HTTP頭文件accept-encoding<%Stringheader4=request.getHeader("accept-encoding");<BR>獲取IP地址<%StringIP=request.getRemoteAddr();<%StringclientName=request.getRemoteHost();<%StringserverName=request.getServerName(); <%intserverPort=request.getServerPort();<%Enumerationenum=request.getParameterNames();while(enumhasMoreElements()){String ement();}<%Enumerationenum_headed=request.getHeaderNames();while(enum_headedhasMoreElements()){Strings=(String)enum_headednex }<%Enumerationenum_headedValues=request.getHeaders(" while(enum_headedValueshasMoreElements()){Strings=(String)enum_headedValues ement();}4-34-3request常用方法實responseResponsejavax.servlet.http.HttpServletResponse類的實現(xiàn)實例。response對JSPresponseHTTP的狀態(tài)和向客戶端發(fā)送數(shù)據(jù),如,HTTP文件頭信息等。esponeHTTPHeader信息進行處理;設置數(shù)據(jù)內(nèi)容的類型和長度;獲取輸出流;進行本地化操作;緩沖控制;瀏覽器重定向;響應狀態(tài)控制;向瀏覽器送。espone表4-4所示。4-4response對象方void 添加一個對象,保存客戶端信voidaddDateHeader(Stringname,long添加一個日期類型的HTTP頭信息,覆蓋同名HTTPvoidaddHeader(Stringname,String添加一HTTP頭,覆蓋同HTTPvoidaddIntHeader(Stringname,intbooleancontainsHeader(StringHTTP頭是否存StringencodeRedirectURL(StringsendRedirect()方法使URL進行編StringencodeURL(StringURL予以編碼,回sessionIDvoidintkb為單位的緩沖StringStringLocaleLocale對ServletOutputStreamPrintWriter獲取輸出流對應writer對 voidvoidbuffer中所有的內(nèi)容,但是保HTTP頭和狀voidsendError(intxc,Stringmsg)voidsendError(intxc)voidsendRedirect(StringlocationgvoidsetBufferSize(intsizekb為單位的緩沖voidsetCharacterEncoding(StringvoidsetContentLength(intlength設置響應BODY長voidsetContentType(StringtypevoidsetDateHeader(Stringname,long設置指定名稱Data類型HTTPvoidsetHeader(Stringname,StringvoidsetIntHeader(Stringname,int設置指定名稱int類型HTTP頭的voidsetStatus(intreponse4-5response4-5response成員列intSC_ACCEPTED=intSC_BAD_REQUEST=intSC_=intSC_CONTINUE=intSC_CREATED=intSC_FORBIDDEN=intSC_FOUND=intSC_GONE=不支持HTTP版intSC_HTTP_VERSION_NOT_SUPPORTED=intSC_INTERNAL_SERVER_ERROR=intSC_LENGTH_REQUIRED=intSC_METHOD_NOT_ALLOWED=intSC_MOVED_PERMANENTLY=intSC_MOVED_TEMPORARILY=intSC_MULTIPLE_CHOICES=intSC_NO_CONTENT= intSC_NON_AUTHORITATIVE_INFORMATION=intSC_NOT_ACCEPTABLE=intSC_NOT_FOUND=intSC_NOT_IMPLEMENTED=intSC_NOT_MODIFIED=intSC_OK=intSC_PARTIAL_CONTENT=intSC_PAYMENT_REQUIRED=intSC_PRECONDITION_FAILED= intSC_PROXY_AUTHENTICATION_REQUIRED=intSC_REQUEST_ENTITY_TOO_LARGE=intSC_REQUEST_TIMEOUT=intSC_REQUEST_URI_TOO_LONG=intSC_REQUESTED_RANGE_NOT_SATISFIABLE=intSC_RESET_CONTENT=intSC_SEE_OTHER=intSC_SWITCHING_PROTOCOLS=intSC_TEMPORARY_REDIRECT=未intSC_UNAUTHORIZED= intSC_UNSUPPORTED_MEDIA_TYPE=intSC_USE_PROXY=Response當一個用戶一個jsp頁面時,如果該頁面用page指令設置頁面的contentType屬性是text/html,那么jsp引擎將按照這種屬性值作出反映。如果要動態(tài)改變這個屬性值來響應客戶,就需要使用response對象的setContentType(Strings)方法來改變contentTypestext/html(html文件,application/x-msexcel<%@pagecontentType="text/html;charset=GB2312"ResponsesetContentType方(Excel文件aplicatin/sword<%@pagecontentType="text/html;charset=GB2312"ResponsesetContentType方ResponsesetHeader()方法可以設置頁面的自動刷新時間間隔。實現(xiàn)重新加 response.setIntHeader(“Refresh”,等待刷新時間 <%@pagelanguage="java"<%@pagelanguage="java"contentType="text/html;charset=gb2312"<metahttp-equiv="Content-Type"content="text/html;<title>response對象刷新out.println(new4-4自動刷新當前時Response<%@pagelanguage="java"contentType="text/html;charset=gb2312"<metahttp-equiv="Content-Type"content="text/html;<%@pagelanguage="java"contentType="text/html;charset=gb2312"<metahttp-equiv="Content-Type"content="text/html;charset=ISO-8859-<title>sendRedirect方法定位Stringaddress=request.getParameter("position"); elseif(address.equals("MS"))elseif(address.equals("MS"))elseif(address.equals("IBM"))}<formaction="redirect.jsp"<select<optionvalue="CSDN"selected>goto<optionvalue="MS">go<optionvalue="IBM">goto<inputtype="submit"value="提交4-5response重定outOut對象用于把結(jié)果輸出到網(wǎng)頁上,它是javax.servlet.jsp.JspWriter的一個實例。從java.io.Writer拓展而來的公共抽象類JspWriter效仿了java.io.BufferedWriter和java.Io.PrintWriter中的某些功能。但是,不同之處在于它會在打印方法中拋出(throw)java。Io.IOExceptionpageautoflush="true",那么當出現(xiàn)由于當前的操作不清空緩存而造成緩沖區(qū)溢出的情況時,這個類的所有I/O操作會自動清空緩沖區(qū)的內(nèi)容。如果autoflush="false",那么當操作造成了緩沖區(qū)溢出時,這個類的所有的I/O操作將拋出一個IOException。Out對象可以輸出變量的值,字符和字符串;緩沖控制。Out4-4-6outvoidvoidvoidvoidintkb為單位的目前緩沖區(qū)大int獲取kb為單位的緩沖區(qū)中未被占用的空間大booleanvoidvoidprint(數(shù)據(jù)類型將指定類型的數(shù)據(jù)輸出Http流,不換voidprintln(數(shù)據(jù)類型將指定類型的數(shù)據(jù)輸出Http流,并輸出一個換行Appendableappend(charc) cxq,intstart,intend) cxq將一個字符或者實現(xiàn)了CharSequence接口的對象添加到輸out4-7outintDEFAULT_BUFFER=intNO_BUFFER=-intUNBOUNDED_BUFFER=-out<%@pagelanguage="java"contentType="text/html;charset=gb2312"用<%@pagelanguage="java"contentType="text/html;charset=gb2312"<metahttp-equiv="Content-Type"content="text/html;charset=ISO-8859-<title>Inserttitlejava.util.DaterightNow=new分秒4-64-6當前時pageContextpageContext對象JSP頁面相關(guān)信息,如屬性、內(nèi)建對象等。pageContext對象是javax.servlet.jsp.PageContext類的一個實例。pageContext對象提供了存取所有關(guān)于JSPsession,application,config,out等對象屬性。對于pageContext對象,它的范圍是page。 HttpSessionsession= PageContextJSP隱含對象;所有范圍的屬性操作;頁面重定向;頁面包含其他頁面操作。PageContext對象方法見表4-8所示。4-8pageContext對象方voidsetAttribute(Stringname,Objectvalue,intscope)voidsetAttribute(Stringname,ObjectvalueObjectgetAttribute(Stringname,intscope)ObjectgetAttribute(Stringname)取得指定共享范name為名字的ObjectfindAttribute(StringnamevoidremoveAttribute(Stringname,intscope)voidremoveAttribute(Stringname)voidforward(Stringurl將頁面導航到指定 scope)intgetAttributeScope(StringnameErrorDataerrorData對Exceptionexception對ExpressionEvaluator取得頁expressionEvaluator對JspWriterout對Objectpage對ServletRequestrequest對ServletResponseresponse對ServletConfigconfig對ServletContext取得頁servletContext對HttpSessionVariableResolvervoidinclude(Stringurl,booleanflush)voidinclude(Stringurl)voidvoidinitialize(Servletservlet,ServletRequestrequest,ServletResponseresponse,StringerrorPageURL,booleanintbufferSize,booleanautoFlush初始化初始化的pageContext對BodyContextBodyContextpushBody(Writerwriter保存當前的out對象,并更新pageContextpage范圍內(nèi)out對JspWritepageContext4-9pageContext成員列intPAGE_SCOPE=intREQUEST_SCOPE=intSESSION_SCOPE=intAPPLICATION_SCOPE=pageContext<%@<%@pagelanguage="java"contentType="text/html;charset=gb2312"<metahttp-equiv="Content-Type"content="text/html;<title>pageContext對象 toString())%>pageContext圖4-7pageContext對象不同范圍的屬sessionessionSession對象是一個jpp戶打開瀏覽器并連接到服務器開始,到客戶關(guān)閉瀏覽器離開這個服務器結(jié)束,被稱為一個會話。當一個客戶一個服務器時,可能會在這個服務器的幾個頁面之間反復連接,反復刷新一個頁面,服務器應當通過某種辦法知道這是同一個客戶,這就需要ession對象。當一個客戶首次服務器上的一個jsp頁面時,JSP引擎產(chǎn)生一個session對象,同時分配一個String類型的ID號,JSP引擎同時將這個ID號發(fā)送到客戶端,存放在中,這樣session對象和客戶之間就建立了一一對應的關(guān)系。當客戶再連務器端該客戶的session對象才取消,并且和客戶的會話對應關(guān)系。當客戶重新打開瀏覽器再連接到該服務器時,服務器為該客戶再創(chuàng)建一個新的session對象。有時,用戶可能會忘記退出登錄或關(guān)閉瀏覽器,這時,往往需要指定會話持續(xù)時間,也就是沒有請求操作的持續(xù)時間,一般是30分鐘的過期時間??梢灾苯邮褂胹etMaxnacvenerva()方法來設定當前會話的可持續(xù)時間。Session對象可以和獲取會話有效的屬性對象;控制會話;得到會話狀態(tài);獲取會話相關(guān)的servlet上下文。Session對象方法見表4-10所示。4-10session對象方ObjectgetAttribute(Stringname獲取與指定名字相關(guān)聯(lián)sessionEnumerationlongsession的創(chuàng)建時間,最小單位千分之一Stringsession標long返回與當前session相關(guān)的客戶端最后一次的時間,由1970-01-01算起,單位毫秒intgetMaxInactiveInterval(intinterval返回總時間,以秒為單位,表示session的有效時(session不活動時間)。-1為永不過ServletContextJSPServletContextHttpSessionContextObjectgetValue(Stringname取得指定名稱sessionString[]取得所session變量的名稱的集voidbooleanvoidpubValue(Stringname,Objectvalue)voidremoveValue(StringnamevoidsetAttribute(Stringname,Stringvalue)設置指定名稱sessionvoidsetMaxInactiveInterval(intintervalvoidremoveAttribute(StringnamesessionJSPsession<%@<%@pagelanguage="java"contentType="text/html;charset=gb2312"<%@pageimport="java.util.*"<title>session對象StringsessionID=會話標識Sessionid:<%=sessionID%>建立時Created<%=<%=newDate原設置一次會話持續(xù)的時間OldMaxInactiveInterval 的時間<%=newDateSessionNew設置會話共享的屬性content="sessionexample<%session.setAttribute("content","session顯示原會話共享的屬性<%=session.getAttribute 設置會話新的持續(xù)的時間New<%4-8session對象方法、屬<%@<%@pagelanguage="java"contentType="text/html;charset=gb2312"<title>session統(tǒng) 量<%!intnumber=0;synchronizedvoidcount(){number++;}{Stringstr=String.valueOf(number);}<P>您是第<%=(String)session.getAttribute("count")%> 4-9圖4-9量統(tǒng)applicationApplicationWebServletJSP頁面中共享信息,也就是說,application對象中的信息不是對具體用戶而是對同一個Web應用都有所以,application對象實現(xiàn)了用戶間數(shù)據(jù)的共享,可存放全局變量。它開始于服對象屬性的操作,都將影響到其他用戶對此的。在JSP服務器運行時刻,僅有一,開發(fā)人員只能創(chuàng)建這個Appliation對象的同步拷貝。MIMEpath的實際路徑;日志管理。Application對象的方法見表4-11所示。4-11application對象方ObjectgetAttribute(Stringname返回nameapplication屬Enumerationapplication屬 uripath)取得當前應用ServletContext對StringgetInitParameter(Stringname返回name指定application屬性的初始Enumeration返回所有application屬性的初始值的集intservlet容器ServletAPI的版本StringgetMimeType(Stringfile返回指定文件的類型,未知類型返回null。一般為"text/html"和intservlet容器支持ServletAPI的副版本StringgetRealPath(StringpathgetNamedDispatcher(Stringname)為指定名字的Servlet對象返回一個RequestDispatcher對getRequestDispatcher(Stringpath)返回一RequestDispatcher對象的實URLgetResource(Stringpath返回指定的資源路徑對應的一URL對象實例,參數(shù)要getResourceAsStream(Stringpath返回一個由path指定位置的資源的InputStreamSetgetResourcePaths(Stringpath 在web-app中所有資源路徑的集StringServletgetServlet(StringnameServletContext中檢索指定名稱EnumerationStringEnumerationServletContext中所servlet的名稱集voidlog(Exceptionex,Stringmsgvoidlog(Stringmsg,Throwablet)voidlog(Stringmsg)把指定的信息servletlog文voidremoveAttribute(Stringname移除指定名稱application屬voidsetAttribute(Stringname,Objectvalue)設定指application屬性的applicationapplication<%@<%@pagelanguage="java"contentType="text/html;charset=gb2312"<title>application對象<%=application.getServerInfo()<%=application.getMajorVersion()%>.<%=application.getMajorVersion()web應用名稱<%=application.getServletContextName()<%=application.getRealPath("/application.jsp")<%=application.getMimeType("application.jsp")4-10application對象獲取服務器對象中和<%@<%@pagelanguage="java"contentType="text/html;charset=gb2312"<title>application方法Stringusername="application對象";Stringpassword="attribute屬性";out.println("<fontcolor=red>"+"application設定的屬性之值:"+"</font>"+"<BR>");out.println("<fontcolor=red>"+"application屬性后的值:"+"</font>"+"<BR>");applicationremoveAttribute("username");applicationremoveAttribute("password");4-11application方法page對應得Servlet類的實現(xiàn)對象??梢杂胘avax.servlet.jsp.HttpJspPage)pagepage對象占用的內(nèi)存比較多,一般情況下,不建議使用page對象。4-12page對象方classint返回Objecthashbooleanequals(Object判斷Object是否與Object對象相voidcopy(ObjectObjectStringObject對象轉(zhuǎn)換Stringvoidvoidvoidwait(int使一個線程處于等待直到timeout結(jié)束或被喚voidvoidObject加voidObject開page<%@pagelanguage="java"contentType="text/html;charset=gb2312"<%@pagelanguage="java"contentType="text/html;charset=gb2312" <title>page對象<b>page指令info屬性取值<%=((javax.servlet.jsp.HttpJspPage)page).getServletInfo()Page對象類型為Object,需要使用強制類型轉(zhuǎn)換(javax.servlet.Servlet())12page對config配置描述文件

溫馨提示

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

評論

0/150

提交評論