JSP隱式對(duì)象和MVC設(shè)計(jì)模式_JSP教程
推薦:jsp 中 ActionForm中文亂碼問(wèn)題解決方法jsp教程 中 actionform中文亂碼問(wèn)題解決方法 先我們來(lái)了解一下actionform actionform概念 actionform用于封裝用戶的請(qǐng)求參數(shù),而請(qǐng)求參數(shù)是通過(guò)jsp頁(yè)面的表單域傳遞過(guò)來(lái)的。因此應(yīng) 保證actionform的參數(shù),與表單域的名字相同。 編輯本段actionform配置 所有的actionfor
今天我們一起來(lái)了解一下關(guān)于JSP應(yīng)用的JSP的隱式對(duì)像和MVC設(shè)計(jì)模式。
首先我們先來(lái)說(shuō)一下JSP的隱式對(duì)象:JSP隱式對(duì)象是Web容器加載的一組類(lèi)的實(shí)例。它是可以直接在JSP頁(yè)面使用的對(duì)象。分為4個(gè)主要類(lèi)別:1、 輸入和輸出對(duì)象:控制頁(yè)面的輸入和輸出(request、response、out)。
2、 作用域通信對(duì)象:檢索與JSP頁(yè)面的Servlet相關(guān)的信息(session、application、pageContext)。
3、 Servlet對(duì)象:提供有關(guān)頁(yè)面環(huán)境的信息(page、config)。
4、 錯(cuò)誤對(duì)象:處理頁(yè)面中的錯(cuò)誤(exception)。
我們先了解一下輸入和輸出對(duì)象:request對(duì)象:request隱式對(duì)象表示客戶端的請(qǐng)求,包含了所有的請(qǐng)求信息,常用的方法:voidsetContentType(String name):設(shè)置作為響應(yīng)生成的內(nèi)容的類(lèi)型和字符編碼。
void sendRedirect(Stringname):發(fā)送一個(gè)響應(yīng)給瀏覽器,指示其應(yīng)請(qǐng)求另一個(gè)URL(會(huì)丟失數(shù)據(jù),跳轉(zhuǎn)后不再執(zhí)行sendRedirect方法下面的代碼。
out對(duì)象:在JSP頁(yè)面中應(yīng)使用out隱式對(duì)象來(lái)向客戶端發(fā)送文本形式的實(shí)體內(nèi)容。
out對(duì)象是通過(guò)調(diào)用pageContext對(duì)象的getOut方法返回的,其作用和用法與ServletResponse.getWriter方法返回的PrintWriter對(duì)象非常相似。
JSP頁(yè)面中的out隱式對(duì)象的類(lèi)型為JspWriter,JspWriter相當(dāng)于一種帶緩存功能的PrintWriter,設(shè)置JSP頁(yè)面的page指令的buffer屬性可以調(diào)整它的緩存大小,甚至關(guān)閉它的緩存。
JSP頁(yè)面中的out隱式對(duì)象相當(dāng)于插入到ServletResponse.getWriter方法返回的PrintWriter對(duì)象前面的緩沖包裝類(lèi)對(duì)象。
只有向out對(duì)象中寫(xiě)入了內(nèi)容,且滿足如下任何一個(gè)條件時(shí),out對(duì)象才去調(diào)用ServletResponse.getWriter方法,并通過(guò)該方法返回的PrintWriter對(duì)象將out對(duì)象的緩沖區(qū)中的內(nèi)容真正寫(xiě)入到Servlet引擎提供的緩沖區(qū)中:設(shè)置page指令的buffer屬性關(guān)閉了out對(duì)象的緩存功能寫(xiě)入到out對(duì)象中的內(nèi)容充滿了out對(duì)象的緩沖區(qū)整個(gè)JSP頁(yè)面結(jié)束作用域通信對(duì)象:pageContext對(duì)象是javax.servlet.jsp.PageContext類(lèi)的實(shí)例對(duì)象,javax.servlet.jsp.PageContext類(lèi)是javax.servlet.jsp.JspContext的子類(lèi)。
pageContext對(duì)象是通過(guò)調(diào)用JspFactory.getPageContext方法返回的。
pageContext對(duì)象封裝了當(dāng)前JSP頁(yè)面的運(yùn)行信息,它提供了返回JSP頁(yè)面的其他隱式對(duì)象的方法。
在JSP頁(yè)面中只需將pageContext對(duì)象傳遞給某個(gè)Java類(lèi)的實(shí)例對(duì)象,在該Java對(duì)象中就可以訪問(wèn)和調(diào)用其他隱式對(duì)象的功能了。
pageContext對(duì)象使用戶可以訪問(wèn)當(dāng)前頁(yè)面作用域中定義的所有隱式對(duì)象。
getException()方法返回exception隱式對(duì)象getPage()方法返回page隱式對(duì)象getRequest()方法返回request隱式對(duì)象getResponse()方法返回response隱式對(duì)象getServletConfig()方法返回config隱式對(duì)象getServletContext()方法返回application隱式對(duì)象getSession()方法返回session隱式對(duì)象getOut()方法返回out隱式對(duì)象PageContext類(lèi)中定義了一個(gè)setAttribute方法來(lái)將對(duì)象存儲(chǔ)進(jìn)pageContext對(duì)象內(nèi)部的一個(gè)HashMap對(duì)象中,同時(shí)也定義了一個(gè)getAttribute方法來(lái)檢索存儲(chǔ)在該HashMap對(duì)象中的對(duì)象。
void setAttribute(String name, ob ject value) ob ject getAttribute(String name)
(注意:PageContext類(lèi)除了可以存儲(chǔ)和檢索自身中的屬性對(duì)象外,還定義了可以存儲(chǔ)和檢索其他域范圍內(nèi)的屬性對(duì)象的方法。)
在application、session、request、pageContext對(duì)象中都可以調(diào)用setAttribute方法和getAttribute方法來(lái)設(shè)置和檢索各自域范圍內(nèi)的屬性。
存儲(chǔ)在application對(duì)象中的屬性可以被同一個(gè)WEB應(yīng)用程序中的所有Servlet和JSP頁(yè)面訪問(wèn)。
存儲(chǔ)在session對(duì)象中的屬性可以被屬于同一個(gè)會(huì)話的所有Servlet和JSP頁(yè)面訪問(wèn)。
存儲(chǔ)在request對(duì)象中的屬性可以被屬于同一個(gè)請(qǐng)求的所有Servlet和JSP頁(yè)面訪問(wèn),例如使用PageContext.forward和PageContext.include方法連接起來(lái)的多個(gè)Servlet和JSP頁(yè)面。
存儲(chǔ)在pageContext對(duì)象中的屬性?xún)H可以被當(dāng)前JSP頁(yè)面的當(dāng)前響應(yīng)過(guò)程中調(diào)用的各個(gè)組件訪問(wèn),例如,正在響應(yīng)當(dāng)前請(qǐng)求的JSP頁(yè)面和它調(diào)用的各個(gè)自定義標(biāo)簽類(lèi)。
PageContext類(lèi)中還提供了對(duì)各個(gè)域范圍的屬性進(jìn)行統(tǒng)一管理的方法,以簡(jiǎn)化對(duì)各個(gè)域范圍內(nèi)的屬性的訪問(wèn)。
public void setAttribute(java.lang.String name,java.lang.ob ject value,int scope) public java.lang.ob ject getAttribute(String name,int scope)
其中參數(shù)scope的取值為:PageContext.APPLICATION_SCOPE PageContext.SESSION_SCOPE PageContext.REQUEST_SCOPE PageContext.PAGE_SCOPE publicvoid removeAttribute(String name)
publicvoid removeAttribute(String name,int scope)
getAttributeNamesInScope方法findAttribute方法PageContext類(lèi)中定義了一個(gè)forward方 法和兩個(gè)include方法來(lái)分別簡(jiǎn)化和替代RequestDispatcher.forward方法和 RequestDispatcher.include方法的調(diào)用:public void forward(java.lang.String relativeUrlPath)throwsjavax.servlet.ServletException,java.io.IOException public voidinclude(java.lang.String relativeUrlPath)
throwsjavax.servlet.ServletException,java.io.IOException public void include(java.lang.String relativeUrlPath,boolean flush)throws javax.servlet.ServletException,java.io.IOException傳遞給這些方法的資源路徑都只能是相對(duì)路徑,如 果路徑以“/”開(kāi)頭,表示相對(duì)于當(dāng)前WEB應(yīng)用程序的根目錄,否則,表示相對(duì)于當(dāng)前JSP所映射到的訪問(wèn)路徑。
session對(duì)象session對(duì)象表示用戶的會(huì)話狀況,用此項(xiàng)機(jī)制可以輕易識(shí)別每一個(gè)用戶,能保存和跟蹤用戶的會(huì)話狀態(tài)。session對(duì)象最常用的方法:void setAttribute(String name, ob ject value)
void getAttribute(String name)
application對(duì)象application對(duì)象作用于整個(gè)應(yīng)用程序,所有的客戶端窗口都可以共享該對(duì)象,從服務(wù)器開(kāi)始就存在,直到服務(wù)器關(guān)閉為止。application對(duì)象最常用的方法:void setAttribute(String name, ob ject value):以名稱(chēng)/值的方式,將一個(gè)對(duì)象的值存放到application中(存的值的類(lèi)型為ob ject)。
void getAttribute(String name):根據(jù)名稱(chēng)去獲取application中存放對(duì)象的值(獲取的值的類(lèi)型為ob ject)。
設(shè)置context初始參數(shù)。在web.xm l文件適當(dāng)?shù)奈恢迷黾觾?nèi)容:
<context-param> <param-name>website</param-name> <param-value>www.sohu.com</param-value> </context-param>
在JSP頁(yè)面中,使用applicatin對(duì)象的getInitParameter()方法可以取得 website參數(shù)對(duì)應(yīng)的參數(shù)值。在Servlet中用ServletContext對(duì)象的同名方法獲得參數(shù)值。
使用log()方法記錄日志。
可以使用application對(duì)象提供的log()方法,實(shí)現(xiàn)日志記錄功能,在Tomcat服務(wù)器中,記錄的日志都保存在Tomcat根目錄的logs目錄下。日志內(nèi)容分成不同文件進(jìn)行記錄。
Servlet對(duì)象:page對(duì)象page對(duì)象提供對(duì)網(wǎng)頁(yè)上定義的所有對(duì)象的訪問(wèn)。page對(duì)象表示頁(yè)面本身,它是java.lang.ob ject類(lèi)的一個(gè)實(shí)例。
分享:jsp的注釋可能會(huì)影響頁(yè)面加載速度讓代碼扔繼續(xù)執(zhí)行在jsp頁(yè)面使用!-- --的注釋?zhuān)⑨尷锩娴膉ava代碼還是會(huì)得到執(zhí)行,可以再查看頁(yè)面源代碼上看到執(zhí)行完成的內(nèi)容,這樣就會(huì)讓不希望執(zhí)行的代碼得到執(zhí)行,影響加載速度。比如如下代碼: 代碼如下: 性別:select name=qureyItemGroup.sex class=selinp style=width:75px; opti
- jsp 中 ActionForm中文亂碼問(wèn)題解決方法
- jsp的注釋可能會(huì)影響頁(yè)面加載速度讓代碼扔繼續(xù)執(zhí)行
- jsp中兩個(gè)框中內(nèi)容互換可以添加也可以移除
- jsp中獲取當(dāng)前目錄的方法
- 一個(gè)JSP頁(yè)面導(dǎo)致的tomcat內(nèi)存溢出的解決方法
- jsp+ajax發(fā)送GET請(qǐng)求的方法
- java使用smartupload組件實(shí)現(xiàn)文件上傳的方法
- jsp利用application統(tǒng)計(jì)在線人數(shù)的方法
- jsp分頁(yè)顯示完整實(shí)例
- JSP 開(kāi)發(fā)環(huán)境搭建
- JSP 生命周期
- jsp中URL傳遞中文參數(shù)的處理方法
- 相關(guān)鏈接:
- 教程說(shuō)明:
JSP教程-JSP隱式對(duì)象和MVC設(shè)計(jì)模式
。