1. 程式人生 > >jsp四大作用域和九大內建物件

jsp四大作用域和九大內建物件

jsp是執行在服務端的程式

JSP有九個內建物件(又叫隱含物件),不需要預先宣告就可以在指令碼程式碼和表示式中隨意使用

JSP九大內建物件分為四類:

  • 輸入輸出物件:out物件、response物件、request物件
  • 通訊控制物件:pageContext物件、session物件、application物件
  • Servlet物件:page物件、config物件
  • 錯誤處理物件:exception物件

jsp四大作用域:

page範圍:只在一個頁面保留資料(javax.servlet.jsp.PageContext(抽象類))

request範圍:只在一個請求中儲存資料(javax.servlet.httpServletRequest)

Session範圍:在一次會話中儲存資料,僅供單個使用者使用(javax.servlet.http.HttpSession)

Application範圍:在整個伺服器中儲存資料,全部使用者共享(javax.servlet.ServletContext)

九種物件簡介:

  1. out物件:用於向客戶端、瀏覽器輸出資料。
  2. request物件:封裝了來自客戶端、瀏覽器的各種資訊。
  3. response物件:封裝了伺服器的響應資訊。
  4. exception物件:封裝了jsp程式執行過程中發生的異常和錯誤資訊。
  5. config物件:封裝了應用程式的配置資訊。
  6. page物件:指向了當前jsp程式本身。
  7. session物件:用來儲存會話資訊。也就是說,可以實現在同一使用者的不同請求之間共享數
  8. application物件:代表了當前應用程式的上下文。可以在不同的使用者之間共享資訊。
  9. pageContext物件:提供了對jsp頁面所有物件以及名稱空間的訪問。

1.page物件

page物件有點類似與java程式設計中的this指標,他指向了當前jsp頁面本身。
page物件是java.lang.object類的一個例項

page物件擁有一個toString方法,下面是官方定義的方法介紹:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
包名+類名
[email protected]
+hashcode值

page物件的方法:

方法名

說明

toString

將當前專案的資訊打印出來

getClass

返回當前的object類

hashCode

返回page物件的hashCode值

equals

用於比較物件是否與當前物件相同

2.request物件

request物件封裝了從客戶端到伺服器發出的請求資訊。

request物件方法介紹:

方法名

說明

isUserInRole

判斷認證後的使用者是否屬於某一成員組

getAttribute

獲取指定屬性的值,如該屬性值不存在返回Null

getAttributeNames

獲取所有屬性名的集合

getCookies

獲取所有Cookie物件

getCharacterEncoding

獲取請求的字元編碼方式

getContentLength

返回請求正文的長度,如不確定返回-1

getHeader

獲取指定名字報頭值

getHeaders

獲取指定名字報頭的所有值,一個列舉

getHeaderNames

獲取所有報頭的名字,一個列舉

getInputStream

返回請求輸入流,獲取請求中的資料

getMethod

獲取客戶端向伺服器端傳送資料的方法

getParameter

獲取指定名字引數值

getParameterNames

獲取所有引數的名字,一個列舉

getParameterValues

獲取指定名字引數的所有值

getProtocol

獲取客戶端向伺服器端傳送資料的協議名稱

getQueryString

獲取以get方法向伺服器傳送的查詢字串

getRequestURI

獲取發出請求字串的客戶端地址

getRemoteAddr

獲取客戶端的IP地址

getRemoteHost

獲取客戶端的名字

getSession

獲取和請求相關的會話

getServerName

獲取伺服器的名字

getServerPath

獲取客戶端請求檔案的路徑

getServerPort

獲取伺服器的埠號

removeAttribute

刪除請求中的一個屬性

setAttribute

設定指定名字引數值

request物件演示:

完成一個簡單的使用者註冊資訊介面,將註冊資訊傳送到歡迎介面上。

使用者註冊介面表單設定:

<form action="do_register.jsp" method="post">
    使用者名稱:
    <input type="text" name="userName"><br>
    技能:
    <input type="checkbox" name="skills" value="java">java
    <input type="checkbox" name="skills" value="python">python
    <input type="checkbox" name="skills" value="ruby">ruby
    <input type="checkbox" name="skills" value="golang">golang
    <br>
    <input type="submit" value="提交">
    <input type="reset" value="重置">
</form>

使用者註冊資訊處理介面使用getParameter方法將使用者的表單資訊提取出來

String name=request.getParameter("userName");
String[] skillArr=request.getParameterValues("skills");

將skillArr陣列轉換成字串:

String skills="";
if (skillArr!=null&&skillArr.length>0){
    for (String skill:skillArr
         ) {
        skills=skills+skill+" ";
    }
}

將資料使用setAttribute儲存起來

request.setAttribute("userName",name);
request.setAttribute("skills",skills);

使用jsp的forword指令將頁面跳轉到welcome.jsp

<jsp:forward page="welcome.jsp"></jsp:forward>

setAttribute和getAttribute用於在web元件之間共享資訊
getparameter方法用於接收伺服器通過set和post方法傳輸的資料
注意沒有setparameter方法

welcome.jsp頁面配置:

<html>
<head>
    <title>技能展示介面</title>
</head>
<body>
資訊展示介面:<br><br>
<%--<%=%>這是表示式<%%>這是jsp程式處理--%>
姓名:<%=request.getAttribute("userName")%><br>
技能:<%=request.getAttribute("skills")%>
</body>
</html>



3.session物件

session物件:是一個jsp內建物件,它在第一個jsp被裝載時自動建立,完成會話期管理。從一個客戶開啟瀏覽器並連線到伺服器開始,到客戶關閉瀏覽器離  開這個伺服器結束(或者超時),被稱為一個會話。當一個客戶訪問一個伺服器時,可能會在這個伺服器的幾個頁面之間切換,伺服器應當通過某種辦法知道這是一個客戶,就需要建立session物件。

http是無狀態的連線協議,需要使用session來存放使用者每次的登陸資訊

session物件方法:

方法名

說明

getAttribute

獲取指定名字的屬性

getAttributeNames

獲取session中全部屬性名字,一個列舉

getCreationTime

返回session的建立時間

getId

獲取會話識別符號

getLastAccessedTime

返回最後傳送請求的時間

getMaxInactiveInterval

返回session物件的生存時間單位千分之一秒

invalidate

銷燬session物件

isNew

每個請求是否會產生新的session物件

removeAttribute

刪除指定名字的屬性

setAttribute

設定指定名字的屬性值

接下來通過一個登陸的小例子來演示下session物件的應用:

登陸表單設定:

<form action="do_login.jsp" method="post">
    userName:<input type="text" name="userName"><br/>
    password:<input type="password" name="password"><br/>
    <input type="submit" value="submit">
    <input type="reset" value="reset">
</form>

登陸邏輯處理介面,使用getParameter獲取到使用者名稱和密碼:

String userName=request.getParameter("userName");
String password=request.getParameter("password");

對使用者名稱和密碼進行判斷:

if (userName!=null&&password!=null){
    session.setAttribute("userName",userName);
    response.setHeader("refresh","2;URL=welcome.jsp");
}

在歡迎介面使用getAttribute獲取當前的使用者名稱:

<%if(session.getAttribute("userName")!=null){%>
<%--getAttribute方法是使用指定的key獲取session中的value值。獲取到的是一個object物件
在使用的時候需要根據具體的型別進行型別轉換。
這裡取出的是一個字串,直接呼叫會使用他的toString方法,因此不用進行轉換--%>
歡迎 <%=session.getAttribute("userName")%>
<a href="logout.jsp">登出</a>
<%}else{%>
請先登陸
<a href="login.jsp">登陸</a>
<%}%>

判斷session物件是否是新建立

<%if (session.isNew()){%>

<br/>
<br/>
歡迎新使用者
<%}else{%>
<br/>
<br/>
歡迎老使用者
<%}%>

在登出介面裡清除session物件資訊,並跳轉到歡迎介面中去:

session.invalidate();//清除掉session物件
response.setHeader("refresh","2;URL=welcome.jsp");


4.application物件

application物件代表當前的應用程式。存在於伺服器的記憶體空間中。
應用一旦啟動便會自動生成一個application物件。如果應用沒有被關閉,
此application物件便一直會存在。直到應用被關閉
application的生命週期比session更長。
應用:
為多個使用者共享全域性資訊。比如當前的線上人數等。

application物件方法:

方法名

說明

getAttribute

獲取應用物件中指定名字的屬性值

getAttributeNames

獲取應用物件中所有屬性的名字,一個列舉

getInitParameter

返回應用物件中指定名字的初始引數值

getServletInfo

返回Servlet編譯器中當前版本資訊

setAttribute

設定應用物件中指定名字的屬性值

可以使用application物件來實現頁面訪問次數記錄的功能:

<%
    Object obj=application.getAttribute("counter");
    if (obj==null){
        application.setAttribute("counter",new Integer(1));
        out.println("該頁面被訪問了1次<br/>");
    }else {
        int countValue=new Integer(obj.toString());
        countValue++;
        out.println("該頁面被訪問了"+countValue+"次<br/>");
        application.setAttribute("counter",countValue);//java會自動裝箱

    }
%>

5.out物件

out物件是一個輸出流,用來向瀏覽器輸出資訊,除了輸出各種資訊外還負責對緩衝區進行管理。

out物件方法介紹:

方法名

說明

print或println

輸出資料

newLine

輸出換行字元

flush

輸出緩衝區資料

close

關閉輸出流

clear

清除緩衝區中資料,但不輸出到客戶端

clearBuffer

清除緩衝區中資料,輸出到客戶端

getBufferSize

獲得緩衝區大小

getRemaining

獲得緩衝區中沒有被佔用的空間

isAutoFlush

是否為自動輸出

6.response物件

response物件主要用於對客戶端的請求進行迴應。
以及處理http的連線資訊,例如設定http檔案頭,設定cookie物件等。

response物件方法:

方法名

說明

addCookie

新增一個Cookie物件

addHeader

新增Http檔案指定名字頭資訊

containsHeader

判斷指定名字Http檔案頭資訊是否存在

encodeURL

使用sessionid封裝URL

flushBuffer

強制把當前緩衝區內容傳送到客戶端

getBufferSize

返回緩衝區大小

getOutputStream

返回到客戶端的輸出流物件

sendError

向客戶端傳送錯誤資訊

sendRedirect

把響應傳送到另一個位置進行處理

setContentType

設定響應的MIME型別

setHeader

設定指定名字的Http檔案頭資訊

7.pageContext物件

pageContetx物件是jsp頁面中所有物件功能的最大整合著。
使用他可以訪問所有的jsp內建物件。

pageContext物件方法:

方法名

說明

forward

重定向到另一頁面或Servlet元件

getAttribute

獲取某範圍中指定名字的屬性值

findAttribute

按範圍搜尋指定名字的屬性

removeAttribute

刪除某範圍中指定名字的屬性

setAttribute

設定某範圍中指定名字的屬性值

getException

返回當前異常物件

getRequest

返回當前請求物件

getResponse

返回當前響應物件

getServletConfig

返回當前頁面的ServletConfig物件

getServletContext

返回所有頁面共享的ServletContext物件

getSession

返回當前頁面的會話物件

8.exception物件

exception物件表示jsp引擎在執行程式碼時丟擲的異常
如果想要使用exception物件,那麼需要配置編譯指令的isErrorPage屬性為true

即在頁面指令中設定:<%@page isErrorPage=“true”%>


9.config物件

config物件表示當前jsp程式的配置資訊,獲取伺服器的配置資訊
一般專案中,jsp被用作模版技術,也就是位於表示層
而位於表示層的jsp檔案一般是不需要配置資訊的
所以此物件在jsp程式中其實很少使用
config物件是servletConfig類的一個例項。

config物件方法:

方法名

說明

getServletContext

返回所執行的Servlet的環境物件

getServletName

返回所執行的Servlet的名字

getInitParameter

返回指定名字的初始引數值

getInitParameterNames

返回該JSP中所有的初始引數名,一個列舉

jsp內建物件總結:

Jsp內建物件

功能

主要方法

out

向客戶端輸出資料

print() println() flush() clear() isAutoFlush() getBufferSize()   close() …………

request

向客戶端請求資料

getAttributeNames() getCookies() getParameter() getParameterValues() setAttribute() getServletPath() …………..

response

封裝了jsp產生的響應,然後被髮送到客戶端以響應客戶的請求

addCookie() sendRedirect() setContentType()

flushBuffer() getBufferSize() getOutputStream()

sendError() containsHeader()……………

application

config

表示Servlet的配置,當一個Servlet初始化時,容器把某些資訊通過此物件傳遞給這個Servlet

getServletContext() getServletName() getInitParameter()   getInitParameterNames()……………

page

Jsp實現類的例項,它是jsp本身,通過這個可以對它進行訪問

flush()………

pagecontext

為JSP頁面包裝頁面的上下文。管理對屬於JSP中特殊可見部分中己經命名物件的該問

forward() getAttribute() getException() getRequest() getResponse()   getServletConfig()

getSession() getServletContext() setAttribute()

removeAttribute() findAttribute() ……………

session

用來儲存每個使用者的資訊,以便跟蹤每個使用者的操作狀態

getAttribute() getId()   getAttributeNames() getCreateTime() getMaxInactiveInterval()

invalidate() isNew()

exception

反映執行的異常

getMessage()…………

練習:編寫一個jsp程式,實現使用者登入,當用戶輸入密碼錯誤時,將頁面重定向到錯誤提示 頁,並在該頁

           面顯示30秒後,自動返回使用者登入頁面

1.登入介面index.jsp
<form name="form1" method="post" action="deal.jsp">
  用 戶 名:  <input name="userName" type="text" value="userName">  <br>
密    碼: <input name="pwd" type="password" value="pwd"><br>
<input type="submit" name="Submit" value="登入"> 
<input name="Reset" type="reset" id="Reset" value="重置">
</form>

2.判斷密碼,使用者名稱介面deal.jsp

<%
request.setCharacterEncoding("GB18030");
String userName=request.getParameter("userName");
String pwd=request.getParameter("pwd");
if("mr".equals(userName)&&"mrsoft".equals(pwd)){//設定資料庫密碼使用者名稱
	out.println("<script language='javascript'>alert('登入成功');window.location.href='index.jsp';</script>");
	
}else{
	response.sendRedirect("error.jsp");//重定向
	
}
%>

3.錯誤頁面error.jsp

<%
response.setHeader("refresh", "5;URL=index.jsp");//重定向頁面
%>
您輸入的使用者名稱或密碼錯誤,請重新登入!


相關推薦

jsp四大作用大內物件

jsp是執行在服務端的程式JSP有九個內建物件(又叫隱含物件),不需要預先宣告就可以在指令碼程式碼和表示式中隨意使用JSP九大內建物件分為四類:輸入輸出物件:out物件、response物件、request物件通訊控制物件:pageContext物件、session物件、ap

jsp四大作用物件

jsp四大作用域和九大物件 詳情檢視我的腦圖 四個作用域:request域、session域、application域、page域 1. request request是表示一個請求,只要發出一個請求就會建立一個request,它的作用域:僅在當前請求中有效。 應用場景

JSP四大作用種隱式物件

JSP 會被編譯為一個Servlet類 ,執行的時候是一個Servlet例項。 1.四大作用域 1.pageContext 當前頁面    通過pageContext.setAttribute(key,value)的資料,只能在當前頁面訪問,在其他頁面就不能訪問了。

servlet的三大作用物件jsp大內物件及其四大作用物件

  servlet的三大作用域物件: request(HttpServletRequest) session(HttpSession): application(ServletContext):tomcat啟動時建立,tomcat關閉時銷燬,整個web的生命週期只有一個

jsp 大內物件 四大作用的區別

  JSP中一共有九個內建的物件,分別是:request、response、session、application、out、pagecontext、config、page、exception 1.request   該物件代表了客戶端的請求資訊,主要用於接受通過HTTP協

jsp大內物件 ,三大指令,四大作用,七大動作

九大內建物件:   application:應用程式物件 對整個web工程都有效 request:對當前請求的封裝 pageConfig:只對當前頁面有效,裡面封裝了基本request和session的物件 response:返回服務端資訊給客戶 page:當前頁面物件 session

JSP的三六四(三大指令、六大標籤、大內物件四大作用

JSP的基本構成:HTML檔案+Java片斷+JSP標籤 三大指令:page指令、include指令、taglib指令。 page指令: 1.language屬性:設定當前頁面中編寫JSP指令碼使用的語言,預設值為java。         &

JSP大內物件四大作用以及session的生命週期

JSP共有以下9種基本內建元件(可與ASP的6種內部元件相對應):  1.request物件(作用域)    客戶端的請求資訊被封裝在request物件中,通過它才能瞭解到客戶的需求,然後做出響應。它是HttpServletRequest類的例項。    方 法 說

JSP四大作用、七大動作指令、大內物件

學習JSP必須掌握的基礎知識,JSP的精髓所在。 JSP四大作用域 pageContext:頁面域 request:請求域 session:會話域 application: 應用

JSP大內物件四個作用

現在我們先來說一下四個作用域,以便描述各大物件都分屬於什麼作用域,下面我們就通過一張簡單的表格來看看各大作用域的資訊共享範圍:    第一個作用域是page,他只在當前頁面有效,也就是使用者請求的頁面有效,噹噹前頁面關閉或轉到其他頁面時,page物件將在響應回饋給客戶端後釋放

jsp大內物件四大作用,EL表示式

jsp九大隱式物件: page作用域: 1.pageContext 2.response 3.config 4.out 5.exception request作用域 session作用域

JSP大內置對象四大作用Servlet的三大作用對象

成功 tput sender 共享 多個 保留 規範 buffer 依賴 一、JSP九大內置對象:內置對象(又叫隱含對象,有9個內置對象):不需要預先聲明就可以在腳本代碼和表達式中隨意使用 內置對象特點: 由JSP規範提供,不用編寫者實例化。 通過Web容器實現和管理 所

jsp大內物件四大作用

package com.atguigu.demo; public class Demo { /** Jsp

jsp大內物件四大物件

一,什麼是內建物件? 在jsp開發中會頻繁使用到一些物件,如ServletContext HttpSession PageContext等.如果每次我們在jsp頁面中需要使用這些物件都要自己親自動手建立就會特別的繁瑣.SUN公司因此在設計jsp時,在jsp頁面載

JSP(二):JSP大內物件、四個作用物件

jsp的九大內建物件:        內建物件:            jsp檔案在轉譯成其對應的Servlet檔案的時候自動生成

servlet三大作用 jsp四大作用 jsp個內物件 el表示式11個隱藏物件

Servlet三個作用域 *request -->表示一個請求,只要發出一個請求就會建立一個request,它的作用域:僅在當前請求中有效。 *session -->伺服器會為每個會話建立一個session物件,所以session中的資料可供當前會話中所有servlet共享。會話

jsp 大內物件作用詳解

   JSP中一共預先定義了9個這樣的物件,分別為:request、response、session、application、out、pagecontext、config、page、exception 1、request物件 request 物件是 javax.servlet.httpServletRequ

JSP大內物件及四個作用

內建物件(又叫隱含物件,有9個內建物件):不需要預先宣告就可以在指令碼程式碼和表示式中隨意使用 1-out:  javax.servlet.jsp.JspWriter型別,代表輸出流的物件。作用域為page(頁面執行期) request:javax.servlet.ServletRequest的子型

20171013 JSP大內物件及四個作用

內建物件(又叫隱含物件,有9個內建物件):不需要預先宣告就可以在指令碼程式碼和表示式中隨意使用 1-out:  javax.servlet.jsp.JspWriter型別,代表輸出流的物件。作用域為page(頁面執行期) request:javax.servlet.ServletRequest的子型別,此物

JSP大內物件作用用法總結

JSP全名為Java Server Pages,中文名叫java伺服器頁面。 JSP中一共預先定義了9個這樣的物件,分別為:request、response、session、application、out、pagecontext、config、page、exc