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)
九種物件簡介:
- out物件:用於向客戶端、瀏覽器輸出資料。
- request物件:封裝了來自客戶端、瀏覽器的各種資訊。
- response物件:封裝了伺服器的響應資訊。
- exception物件:封裝了jsp程式執行過程中發生的異常和錯誤資訊。
- config物件:封裝了應用程式的配置資訊。
- page物件:指向了當前jsp程式本身。
- session物件:用來儲存會話資訊。也就是說,可以實現在同一使用者的不同請求之間共享數
- application物件:代表了當前應用程式的上下文。可以在不同的使用者之間共享資訊。
- 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 | 是否為自動輸出 |
response物件主要用於對客戶端的請求進行迴應。
以及處理http的連線資訊,例如設定http檔案頭,設定cookie物件等。
response物件方法:
方法名 | 說明 |
addCookie | 新增一個Cookie物件 |
addHeader | 新增Http檔案指定名字頭資訊 |
containsHeader | 判斷指定名字Http檔案頭資訊是否存在 |
encodeURL | 使用sessionid封裝URL |
flushBuffer | 強制把當前緩衝區內容傳送到客戶端 |
getBufferSize | 返回緩衝區大小 |
getOutputStream | 返回到客戶端的輸出流物件 |
sendError | 向客戶端傳送錯誤資訊 |
sendRedirect | 把響應傳送到另一個位置進行處理 |
setContentType | 設定響應的MIME型別 |
setHeader | 設定指定名字的Http檔案頭資訊 |
pageContetx物件是jsp頁面中所有物件功能的最大整合著。
使用他可以訪問所有的jsp內建物件。
pageContext物件方法:
方法名 | 說明 |
forward | 重定向到另一頁面或Servlet元件 |
getAttribute | 獲取某範圍中指定名字的屬性值 |
findAttribute | 按範圍搜尋指定名字的屬性 |
removeAttribute | 刪除某範圍中指定名字的屬性 |
setAttribute | 設定某範圍中指定名字的屬性值 |
getException | 返回當前異常物件 |
getRequest | 返回當前請求物件 |
getResponse | 返回當前響應物件 |
getServletConfig | 返回當前頁面的ServletConfig物件 |
getServletContext | 返回所有頁面共享的ServletContext物件 |
getSession | 返回當前頁面的會話物件 |
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