jsp九種內建對象:request, reponse, out, session, application, config, pagecontext, page, exception.
一.request對象:該對象封裝了使用者提交的資訊,通過調用該對象相應的方法可以擷取封裝的資訊,即使用該對象可以擷取使用者提交資訊。
1.Request對象可以使用getParameter(string s)方法擷取該表單通過text提交的資訊。如:
Request.getParameter(“boy”)
2、使用request對象擷取資訊要格外小心,要避免使用Null 物件,否則會出現NullPointerException(null 指標)異常,故要捕獲異常,做異常處理。
String textContent=request.getParameter("girl");
double number=0,r=0;
if(textContent==null)
{textContent="";
}
try{ number=Double.parseDouble(textContent);
if(number>=0)
{r=Math.sqrt(number) ;
out.print("<BR>"+String.valueOf(number)+"的平方根:");
out.print("<BR>"+String.valueOf(r));
}
else
{out.print("<BR>"+"請輸入一個正數");
}
}
catch(NumberFormatException e)
{out.print("<BR>"+"請輸入數字字元");
}
3、處理漢字資訊:當request對象擷取客戶提交的漢字字元時,會出現亂馬問題,必須進行特殊處理,即將擷取的字串用ISO-8859-1進行硬轉碼。
String name1=request.getParameter("name");
String name=new String(name1.getBytes("ISO-8859-1"),"UTF—8");
4、常用方法舉例:
getProtocol(), getServletPath(), getContentLength(), getMethod(), getRemoteAddr(), getRemoteHost(), getServerName(), getParameterName()
客戶使用的協議是:
String protocol=request.getProtocol();
擷取接受客戶提交資訊的頁面:
String path=request.getServletPath();
接受客戶提交資訊的長度:
int length=request.getContentLength();
客戶提交資訊的方式:
String method=request.getMethod();
擷取HTTP標頭檔中User-Agent的值::
String header1=request.getHeader("User-Agent");
擷取HTTP標頭檔中accept的值:
String header2=request.getHeader("accept");
擷取HTTP標頭檔中Host的值:
String header3=request.getHeader("Host");
擷取HTTP標頭檔中accept-encoding的值:
String header4=request.getHeader("accept-encoding");
擷取客戶的IP地址:
String IP=request.getRemoteAddr();
擷取客戶機的名稱:
String clientName=request.getRemoteHost();
擷取伺服器的名稱:
String serverName=request.getServerName();
擷取伺服器的連接埠號碼:
int serverPort=request.getServerPort();
擷取用戶端提交的所有參數的名字:
Enumeration enum=request.getParameterNames();
while(enum.hasMoreElements())
{String s=(String)enum.nextElement();
out.println(s);
}
擷取頭名字的一個枚舉:
Enumeration enum_headed=request.getHeaderNames();
while(enum_headed.hasMoreElements())
{String s=(String)enum_headed.nextElement();
out.println(s);
}
擷取標頭檔中指定頭名字的全部值的一個枚舉:
Enumeration enum_headedValues=request.getHeaders("cookie");
while(enum_headedValues.hasMoreElements())
{String s=(String)enum_headedValues.nextElement();
out.println(s);
}
5、轉寄請求頁面
String strName=request..getParameter("name");
if("Tom".equals(strName))
{
request.getrequestDispatcher("index.jsp").forward(request,response);
}
6、儲存上下文請求對象
String strName=request..getParameter("name");//得到請求參數
StudentService service=new StudentService();//初始化對象
Students stu=service.isLogin(strName);//調用方法
request.setAttribute("myname",stu);//將上下文請求對象儲存到request中
二.Response對象:對客戶的請求做出動態響應,向用戶端發送資料。
當一個使用者訪問一個jsp頁面時,如果該頁面用page指令設定頁面的contentType屬性是text/html,那麼jsp引擎將按照這種屬性值作出反映。如果要動態改變這個屬性值來響應客戶,就需要使用response對象的setContentType(String s)方法來改變contentType的屬性值。
格式:response.setContentType(String s)
參數s可取text/html,, application/x-msexcel, application/msword等。
<FORM action="" method="get" name=form>
<INPUT TYPE="submit" value="yes" name="submit">
</FORM>
<% String str=request.getParameter("submit");
if(str==null)
{str="";
}
if(str.equals("yes"))
{response.setContentType("application/msword;charset=GB2312");
}
%>
2.Response重新導向:在某些情況下,當響應客戶時,需要將客戶重新引導至另一個頁面,可以使用response的sendRedirect(URL)方法實現客戶的重新導向。
<%
String address = request.getParameter("where");
if(address!=null){
if(address.equals("ChinaWebber"))
response.sendRedirect("http://www.ChinaWebber.com");
else if(address.equals("Yahoo"))
response.sendRedirect("http://www.yahoo.com");
else if(address.equals("Sun"))
response.sendRedirect("http://www.sun.com");
}
%>
三.Session對象
1.什麼是Session:Session對象是一個jsp內建對象,它在第一個jsp頁面被裝載時自動建立,完成會話期管理。
從一個客戶開啟瀏覽器並串連到伺服器開始,到客戶關閉瀏覽器離開這個伺服器結束,被稱為一個會話。當一個客戶訪問一個伺服器時,可能會在這個伺服器的幾個頁面之間反覆串連,反覆重新整理一個頁面,伺服器應當通過某種辦法知道這是同一個客戶,這就需要session對象。
2.session對象的Id:當一個客戶首次訪問伺服器上的一個jsp頁面時, jsp引擎產生一個session對象,同時分配一個String類型的Id號,jsp引擎同時將這個Id號發送到用戶端,存放在Cookie中,這樣 session對象和客戶之間就建立了一一對應的關係。當客戶再訪問串連該伺服器的其他頁面時,不再分配給客戶新的session對象,直到客戶關閉瀏覽器後,伺服器端該客戶的session對象才取消,並且和客戶的會話對應關係消失。當客戶重新開啟瀏覽器再串連到該伺服器時,伺服器為該客戶再建立一個新的session對象。
3.session對象常用方法:
(1).public String getId():擷取session對象編號。
(2).public void setAttribute(String key,Object obj):將參數Object指定的對象obj添加到session對象中,並為添加的對象指定一個索引關鍵字。
(3).public Object getAttribute(String key):擷取session對象中含有關鍵字的對象。
(4).public Boolean isNew():判斷是否是一個新的客戶。
四.aplication對象
1.什麼是application:
伺服器啟動後就產生了這個application對象,當客戶再所訪問的網站的各個頁面之間瀏覽時,這個application對象都是同一個,直到伺服器關閉。但是與session不同的是,所有客戶的application對象都是同一個,即所有客戶共用這個內建的application 對象。
2.Application對象常用方法:
(1)public void setAttribute(String key,Object obj): 將參數Object指定的對象obj添加到application對象中,並為添加的對象指定一個索引關鍵字。
(2)public Object getAttribute(String key): 擷取application對象中含有關鍵字的對象。
五.Out對象
Out對象是一個輸出資料流,用來向用戶端輸出資料。Out對象用於各種資料的輸出。
常用方法:
(1)out.print():輸出各種類型資料。
(2)out.newLine():輸出一個分行符號。
(3)out.close():關閉流。
<%
Date Now = new Date();
String hours=String.valueOf(Now.getHours());
String mins=String.valueOf(Now.getMinutes());
String secs=String.valueOf(Now.getSeconds());
%>
現在是
<%out.print(String.valueOf(Now.getHours()));%>
小時
<%out.print(String.valueOf(Now.getMinutes()));%>
分
<%out.print(String.valueOf(Now.getSeconds()));%>
秒
六.Cookie
1.什麼是Cookie:
Cookie是Web伺服器儲存在使用者硬碟上的一段文本。Cookie允許一個Web網站在使用者的電腦上儲存資訊並且隨後再取回它。
舉例來說,一個Web網站可能會為每一個訪問者產生一個唯一的ID,然後以Cookie檔案的形式儲存在每個使用者的機器上。
如果您使用IE瀏覽器訪問Web,您會看到所有儲存在您的硬碟上的Cookie。它們最常存放的地方是:c:\windows\cookies(在Win 2000中則是C:\Documents and Settings\您的使用者名稱\Cookies )
cookie是以“關鍵字key=值value“的格式來儲存紀錄的.
2.建立一個Cookie對象,調用Cookie對象的建構函式可以建立Cookie。Cookie對象的建構函式有兩個字串參數:Cookie名字和Cookie值。
Cookie c=new Cookie(“username”,”john”);
3. jsp中如果要將封裝好的Cookie對象傳送到用戶端,使用response的addCookie()方法。
格式:response.addCookie(c)
4.讀取儲存到用戶端的Cookie,使用request對象的getCookies()方法,執行時將所有用戶端傳來的Cookie對象以數組的形式排列,如果要取出符合需要的Cookie對象,就需要迴圈比較數組內每個對象的關鍵字。
例:
Cookie[] c=request.getCookies();
if(c!=null)