1、Out對(duì)象
主要用來向客戶端輸出各種格式的數(shù)據(jù),并且管理應(yīng)用服務(wù)器上的輸出緩沖區(qū),Out對(duì)象的基類是javax.servlet.jsp.JspWriter類。
Out對(duì)象主要用來向客戶端輸出各種數(shù)據(jù)類型的內(nèi)容,并且管理應(yīng)用服務(wù)器上的輸出緩沖區(qū),其基類是JspWriter.Out對(duì)象的主要方法為:
out.print(類型)或out.println(類型):out.print()方法與out.println()方法的區(qū)別是out.print()方法在輸出完畢后,并不結(jié)束該行,而out.println()方法在輸出完畢后,會(huì)結(jié)束當(dāng)前行,下一個(gè)輸出語句將在下一行開始輸出.
out.newLine():輸出一個(gè)換行符號(hào).
out.clearBuffer():清除緩沖區(qū)里的數(shù)據(jù),并且把數(shù)據(jù)寫到客戶端去.
out.clear():清除緩沖區(qū)里的數(shù)據(jù),但不把數(shù)據(jù)寫到客戶端去.
out.getRemaining():獲取緩沖區(qū)中沒有被占用的空間的大小.
out.flush():輸出緩沖區(qū)里的數(shù)據(jù).out.flush()方法也會(huì)清除緩沖區(qū)中的數(shù)據(jù),但是此方法會(huì)先將之前緩沖區(qū)中的數(shù)據(jù)輸出至客戶端,然后再清除緩沖區(qū)中的數(shù)據(jù).
out.getBufferSize():獲得緩沖區(qū)的大小,緩沖區(qū)的大小可以用來設(shè)置.
out.isAutoFlush():返回布爾值,如果auto flush,那么返回true,反之返回false.是否auto fush可以用來設(shè)置.
out.close():關(guān)閉輸出流,從而可以強(qiáng)制終止當(dāng)前頁面的剩余部分向?yàn)g覽器輸出.
Out的主要方法:
out.println(DataType);或out.print(DataType);
實(shí)例:
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> out對(duì)象使用實(shí)例</TITLE>
</HEAD>
<BODY>
<%
out.println(new Date().toLocaleString());
out.print("<BR>");
out.print("測(cè)試成功");
%>
</BODY>
</HTML>
2、Request對(duì)象
Request內(nèi)置對(duì)象代表了客戶端的請(qǐng)求信息,主要用于接受客戶端通過HTTP協(xié)議傳送給服務(wù)器端的數(shù)據(jù).在客戶端的請(qǐng)求中如果有參數(shù),則該對(duì)象就有一個(gè)參數(shù)列表.它通常是HttpServlet-Request的子類,其作用域就是一次Request請(qǐng)求.
Request對(duì)象包括很多方法,主要有:
getCookies():返回客戶端的cookie對(duì)象,結(jié)果是一個(gè)cookie數(shù)組.
getSession(boolean create):返回和當(dāng)前客戶端請(qǐng)求相關(guān)聯(lián)的HttpSession對(duì)象,如果當(dāng)前客戶端請(qǐng)求沒有和任何HttpSession對(duì)象關(guān)聯(lián),那么當(dāng)create變量為true,則創(chuàng)建一個(gè)HttpSession對(duì)象并返回;反之,返回null.
getHeader(String name):獲得http協(xié)議定義的傳送文件頭信息。
getAttribute(String name):返回name指定的屬性值,若不存在指定的屬性,就返回null.
getattributeNames():返回request對(duì)象所有屬性的名字,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例.
getHeaderNames():返回所有request header的名字,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例.getHeaders(String name):返回指定名字的request header的所有值,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例.
getMethod():返回客戶端向服務(wù)器端傳送數(shù)據(jù)的方法,一般方法有GET,POST,PUT等類型.
getParameter(String name):以字符串的形式返回客戶端傳來的某一個(gè)請(qǐng)求參數(shù)的值,該參數(shù)名由name指定.當(dāng)傳遞給此方法的參數(shù)名沒有實(shí)際參數(shù)與之對(duì)應(yīng)時(shí),返回null.
getparameterNames():返回客戶端傳送給服務(wù)器端的所有的參數(shù)名,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例.當(dāng)傳遞給此方法的參數(shù)名沒有實(shí)際參數(shù)與之對(duì)應(yīng)時(shí),返回null.
getParameterValues(String name):以字符串?dāng)?shù)組的形式返回指定參數(shù)所有值.
getQueryString():返回查詢字符串,該字符串由客戶端以GET方法向服務(wù)器端傳送.
getRequestURI():獲得發(fā)出請(qǐng)求字符串的客戶端地址.
getServletPath():獲得客戶端所請(qǐng)求的腳本文件的文件路徑.
setAttribute(String name,Java.lang.Object o):設(shè)定名字為name的request參數(shù)值,該值由Object類型的o指定.
getServerName():獲得服務(wù)器的名字,如果沒有設(shè)定服務(wù)器名,則返回服務(wù)器IP地址.
getServerPort():獲得服務(wù)器的端口號(hào).
getRemoteAddr():獲得客戶端的IP地址.
getRemoteHost():獲得客戶端主機(jī)的名字,若失敗,則返回客戶端電腦的IP地址.
getProtocol():獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱,如http/1.1.
getContentLength():以字節(jié)為單位返回客戶端請(qǐng)求的大小.如果無法得到該請(qǐng)求的大小,則返回-1.
getContentType():獲取客戶端請(qǐng)求的MIME類型.如果無法得到該請(qǐng)求的MIME類型,那么返回-1.
getInputStream():以二進(jìn)制的形式將客戶端的請(qǐng)求以一個(gè)ServletInputStream的形式返回.使用此方法可以獲得客戶端的multipart/form-data數(shù)據(jù),可以實(shí)現(xiàn)文件上傳.
isSecure():如果客戶機(jī)是通過一個(gè)安全的訪問方式訪問的,就返回true;反之,返回false.
getDateHeader():返回一個(gè)long類型的數(shù)據(jù),表示客戶端發(fā)送到服務(wù)器的頭信息中的時(shí)間信息.
getInitHeader():獲取客戶端發(fā)送到服務(wù)器端的頭信息中的某一個(gè)特定的信息,并轉(zhuǎn)換為int類型.
getContextPath():返回環(huán)境路徑.對(duì)于JSP來說,一般是當(dāng)前Web應(yīng)用程序的根目錄.
isRequestedSessionIdValid():返回一個(gè)指示客戶端請(qǐng)求發(fā)送Session ID是否仍然有效的布爾值.
isRequestedSessionIdFromCookie():返回一個(gè)指示客戶端請(qǐng)求發(fā)送Session ID是否存在于Cookie中的布爾值.
isRequestedSessionIdFromURL():返回一個(gè)指示客戶端請(qǐng)求發(fā)送Session ID是否存在于URL中的布爾值.
Request.setAttribute()與Request.getAttribute()方法實(shí)例(也可以使用forward建立請(qǐng)求關(guān)系):
主頁面:
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<%@ include file="1.jsp" %>
你剛才輸入的內(nèi)容是:
<%=request.getAttribute("gr")%>
引入頁面:
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> request對(duì)象使用實(shí)例</TITLE>
</HEAD>
<BODY>
<%
request.setAttribute("gr","123333");
%>
</FORM>
</BODY>
</HTML>
Request.getParameter()方法實(shí)例
主頁面
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> request.getParameter()方法使用實(shí)例</TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="2.jsp">
<INPUT TYPE="text" NAME="gr1"><BR>
<INPUT TYPE="text" NAME="gr2"><BR>
<INPUT TYPE="text" NAME="gr3"><BR>
<INPUT TYPE="submit" NAME="submit" value="提交">
<INPUT TYPE="reset" NAME="reset" value="清除">
</FORM>
</FORM>
</BODY>
</HTML>
引入頁面
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
你剛才輸入的內(nèi)容是:<BR>
<%=request.getParameter("gr1")%><BR>
<%=request.getParameter("gr2")%><BR>
<%=request.getParameter("gr3")%><BR>
Request.getParameterName()方法實(shí)例
主頁面
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> request.getParameterName()方法使用實(shí)例</TITLE>
</HEAD>
<BODY>
<FORM METHOD=post ACTION="2.jsp">
<INPUT TYPE="text" NAME="gr1"><BR>
<INPUT TYPE="text" NAME="gr2"><BR>
<INPUT TYPE="text" NAME="gr3"><BR>
<INPUT TYPE="submit" value="提交">
<INPUT TYPE="reset" value="清除">
</FORM>
</FORM>
</BODY>
</HTML>
指向頁面
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
你剛才輸入的內(nèi)容是:<BR>
<%
Enumeration e=request.getParameterNames();
while(e.hasMoreElements()){
String parameterName=(String)e.nextElement();
String parameterValue=(String)request.getParameter(parameterName);
out.print("參數(shù)名稱:"+parameterName+"<BR>");
out.print("參數(shù)內(nèi)容:"+parameterValue+"<BR>");
}
%>
Request.getAttributeName()方法實(shí)例
主頁面:
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> request.getAttributeName()方法使用實(shí)例</TITLE>
</HEAD>
<BODY>
<jsp:include page="2.jsp" flush="true"/>
<%
Enumeration e=request.getAttributeNames();
while(e.hasMoreElements()){
String attributeName=(String)e.nextElement();
String attributeValue=(String)request.getAttribute(attributeName);
out.print("變量名稱:"+attributeName);
out.print("變量?jī)?nèi)容:"+attributeValue+"<BR>");
}
%>
</FORM>
</FORM>
</BODY>
</HTML>
轉(zhuǎn)向頁面
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<%
request.setAttribute("gr1","111");
request.setAttribute("gr2","222");
request.setAttribute("gr3","333");
%>
request.getRemoteAddr()方法實(shí)例:
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> request.getRemoteAddr()方法使用實(shí)例</TITLE>
</HEAD>
<BODY>
<B>你的IP地址:</B>
<B><%=request.getRemoteAddr()%></B>
</FORM>
</FORM>
</BODY>
</HTML>
3、Response對(duì)象
Response對(duì)象實(shí)現(xiàn)HttpServletResponse接口,可對(duì)客戶的請(qǐng)求做出動(dòng)態(tài)的響應(yīng),向客戶端發(fā)送數(shù)據(jù),如Cookie,HTTP文件頭信息等,一般是HttpServlet.Response類或其子類的一個(gè)對(duì)象.該對(duì)象的常用方法為:
addCookie(Cookie cookie):添加一個(gè)Cookie對(duì)象,用來保存客戶端的用戶信息,用request的getCookies()方法可以獲得這個(gè)Cookie.
addHeader(String name,String value):添加HTTP文件頭,該header將會(huì)傳到客戶端去,如果有同名的header存在,那么原來的header將會(huì)被覆蓋掉.
containsHeader(String name):判斷指定名字的HTTP文件頭是否存在,并返回布爾值.
sendError(int sc):向客戶端發(fā)送錯(cuò)誤信息,例如,505指示服務(wù)器內(nèi)部錯(cuò)誤;404指示網(wǎng)頁找不到的錯(cuò)誤.
setHeader(String name,String value):設(shè)定指定名字的HTTP文件頭的值,如果該值存在,那么它會(huì)被新的值覆蓋.
setContenType(String type):響應(yīng)設(shè)置內(nèi)容類型頭.
sendRedirect(URL):可以將用戶重定向到一個(gè)不同的頁面(URL).sendRedirect(URL)方法通過返回特定的狀態(tài)代碼而起作用,當(dāng)它被調(diào)用時(shí),返回一個(gè)狀態(tài)代碼,然后在響應(yīng)中定位,給新頁面一個(gè)新地址.狀態(tài)代碼和定位頭會(huì)自動(dòng)把瀏覽器重定位到新頁面.不過,用戶通常不能被順利重定位到新的頁而,特別是老一些的瀏覽器,而且一些新版本的瀏覽器在自動(dòng)響應(yīng)定向作用狀態(tài)代碼時(shí)會(huì)有些問題,當(dāng)瀏覽器無法自動(dòng)響應(yīng)狀態(tài)代碼時(shí),會(huì)收到一些字段信息.
Session是一種服務(wù)器個(gè)別處理與記錄用戶端上網(wǎng)使用者信息的技術(shù).當(dāng)使用者與服務(wù)器聯(lián)機(jī)時(shí),服務(wù)器可以給每一個(gè)上網(wǎng)的使用者一個(gè)Session并設(shè)定其中的內(nèi)容,這些Session都是個(gè)別獨(dú)立的,服務(wù)器端可以借此來辨別使用者信息進(jìn)而提供個(gè)別的服務(wù). Session對(duì)象的常用方法為:
getAttribute(String name):獲得指定名字的屬性,如果該屬性不存在,將會(huì)返回null.
getAttributeNames():返回Session對(duì)象中存儲(chǔ)的每個(gè)屬性對(duì)象,結(jié)果集是一個(gè)Enumeration類的實(shí)例.
setAttribute(String name,java.lang.Object value):設(shè)定指定名字的屬性值,并且把它存儲(chǔ)在Session對(duì)象中.
isNew():判斷目前Session是否為新的Session,若是則返回ture,否則返回false.
response.setHeader()方法網(wǎng)頁自動(dòng)刷新實(shí)例:
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> response刷新頁面實(shí)例</TITLE>
</HEAD>
<BODY>
<%
response.setHeader("refresh","3");
out.println(new Date().toLocaleString());
%>
</BODY>
</HTML>
4、Application對(duì)象
在JSP服務(wù)器運(yùn)行時(shí)刻,僅有一個(gè)Application對(duì)象,它由服務(wù)器創(chuàng)建,也由服務(wù)器自動(dòng)清除,
不能被用戶創(chuàng)建和清除。我們只能創(chuàng)建這個(gè)Appliation對(duì)象的同步拷貝。
Application對(duì)象和Session對(duì)象相比,含義更加廣泛.在使用Session對(duì)象時(shí),各個(gè)客戶端共享一個(gè)Session對(duì)象,而使用Application對(duì)象時(shí),在同一個(gè)服務(wù)器中的JSP文件共享一個(gè)Application對(duì)象.Application對(duì)象主要方法為:
getAttribute(String name):返回由name指定名字的Application對(duì)象屬性的值,這是個(gè)Object對(duì)象,如果沒有,就返回null.
getAttributeNames():返回所有Application對(duì)象的屬性的名字,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例.
3.4 Application對(duì)象的方法
getInitParameter(String name):返回由name指定的名字的application對(duì)象的某個(gè)屬性的初始值,如果沒有參數(shù),就返回null.
getServerInfo():返回servlet編譯器當(dāng)前版本信息.
setAttribute(String name,Object object):將參數(shù)Object指定的對(duì)象obj添加到application對(duì)象中,并為添加的對(duì)象指定一個(gè)屬性.
setAttribute(),getAttribute()和removeAttribute()方法實(shí)例:
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Application對(duì)象方法實(shí)例</TITLE>
</HEAD>
<BODY>
<%
String username="rossini";
String password="126263";
application.setAttribute("username",username);
application.setAttribute("password",password);
out.println(application.getAttribute("username")+"<BR>");
out.println(application.getAttribute("password")+"<BR>");
application.removeAttribute("password");
out.println(application.getAttribute("password")+"<BR>");
%>
</BODY>
</HTML>
getAttributeNames()方法實(shí)例:
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> Application對(duì)象方法實(shí)例</TITLE>
</HEAD>
<BODY>
<%
String username="rossini";
String password="126263";
application.setAttribute("username",username);
application.setAttribute("password",password);
Enumeration enum=application.getAttributeNames();
while(enum.hasMoreElements()){
String attrName=(String)enum.nextElement();
out.println(attrName+"----"+application.getAttribute(attrName)+"<BR>");
}
%>
</BODY>
</HTML>
5、Session對(duì)象
getId():返回Session對(duì)象在服務(wù)器端的編號(hào).每生成一個(gè)Session對(duì)象,服務(wù)器都會(huì)給它一個(gè)編號(hào),并且該編號(hào)不會(huì)重復(fù),這樣服務(wù)器才能根據(jù)編號(hào)來識(shí)別Session,并且正確的處理某一特定的Session及其提供的服務(wù).
getCreationTime():返回Session對(duì)象被創(chuàng)建的時(shí)間,單位為毫秒.
getLastAccessedTime():返回當(dāng)前Session對(duì)象最后一次被操作的時(shí)間,時(shí)間的單位為毫秒.
getMaxInactiveInterval():獲取Session對(duì)象的生存時(shí)間,時(shí)間的單位為秒.
setMaxInactiveInterval(int interval):設(shè)置Session的有效時(shí)間(也叫超時(shí)時(shí)間),時(shí)間的單位為秒.
removeAttribute(String name)"刪除指定的屬性(包含屬性名,屬性值).如果在有效時(shí)間內(nèi),用戶做出了新的請(qǐng)求,那么服務(wù)器就會(huì)將其看作一個(gè)新的用戶,此時(shí),服務(wù)器將創(chuàng)建一個(gè)新的Session,舊的Session信息將會(huì)丟失
當(dāng)用戶登陸網(wǎng)站,系統(tǒng)將為他生成一個(gè)獨(dú)一無二的Session對(duì)象,用以記錄改用戶的個(gè)人信息
,一旦改用戶退出網(wǎng)站,那么該Session對(duì)象將會(huì)注銷。Session對(duì)象可以綁定若干個(gè)人信息或
者Java對(duì)象,不同Session對(duì)象的同名變量是不會(huì)相互干擾的。
getValue(String name)、putValue(String name)、removeValue(String name)、getValueNames()
、getCreationTime()、getId()、getLastAccessedTime()、getMaxInactiveInterval()、
setMaxInactiveInterval()方法:
主文件:
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Session主頁面</TITLE>
</HEAD>
<BODY>
<%
String username="rossini";
String password="126263";
session.putValue("username",username);
session.putValue("password",password);
%>
<A HREF="2.jsp">指向第二頁</A>
</BODY>
</HTML>
轉(zhuǎn)向頁面1
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Session轉(zhuǎn)向頁面1</TITLE>
</HEAD>
<BODY>
<%
String usr=(String)session.getValue("username");
String pwd=(String)session.getValue("password");
%>
<%=usr%><BR>
<%=pwd%><BR>
<%out.println("session create:"+session.getCreationTime());%><BR>
<%out.println("session id:"+session.getId());%><BR>
<%out.println("session last access:"+session.getLastAccessedTime());%><BR>
<%out.println("session 原來最大休眠時(shí)間:"+session.getMaxInactiveInterval());%><BR>
<%session.setMaxInactiveInterval(session.getMaxInactiveInterval()+1);%><BR>
<%out.println("session 最新最大休眠時(shí)間:"+session.getMaxInactiveInterval());%><BR
<%
String []name=session.getValueNames();
out.println("--------------"+"<BR>");
for(int i=0;i<name.length;i++)
{
out.println(session.getValue(name[i])+"<BR>");
}
%>
<%
session.removeValue("username");
%>
<A HREF="3.jsp">指向第三頁</A>
</BODY>
</HTML>
轉(zhuǎn)向頁面2
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Session轉(zhuǎn)向頁面2</TITLE>
</HEAD>
<BODY>
<%
String usr=(String)session.getValue("username");
String pwd=(String)session.getValue("password");
%>
<%=usr%><BR>
<%=pwd%>
</BODY>
</HTML>
invalidate()方法將會(huì)將會(huì)清除當(dāng)前的session對(duì)象解除它和任何參數(shù)或者JAVA對(duì)象的綁定關(guān)系
實(shí)例略
簡(jiǎn)單的JSP計(jì)數(shù)器
實(shí)例:
主頁面
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> JSP計(jì)數(shù)器 </TITLE>
</HEAD>
<BODY>
<div align="center"><font face="黑體" size="10">你是第<jsp:include page="11.jsp" flush="true"/> 位訪客</font> </div>
</BODY>
</HTML>
引入頁面
<%!protected int count=0;%>
<%=++count%>
JavaBean設(shè)計(jì)規(guī)范及實(shí)例
javaBean的設(shè)計(jì)規(guī)范:
一個(gè)javaBean類必須是一個(gè)公共類
一個(gè)javaBean類必須有一個(gè)空的構(gòu)造函數(shù)
一個(gè)javaBean類不應(yīng)有公共實(shí)例變量
持有值應(yīng)該通過一組存取方法(getXxx和setXxx)來訪問
實(shí)例:
package Show;
import java.sql.*;
public class DBconn{
private String sDBDriver="org.gjt.mm.mysql.Driver";
private String sConnStr="jdbc:mysql://10.1.1.79:3306/web?user=root&password=2676141";
private Connection conn=null;
private ResultSet rs=null;
public DBconn(){
try{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e){
System.out.println("DBconn():"+e.getMessage());
}
}
public String getsConnStr(){
return sConnStr;
}
public void setsConnStr(String sConnStr){
this.sConnStr=sConnStr;
}
public void executeUpdate(String sql)throws Exception{
sql=new String(sql.getBytes("GBK"),"ISO8859_1");
try{
conn=DriverManager.getConnection(sConnStr);
Statement stmt=conn.createStatement();
stmt.executeUpdate(sql);
conn.close();
stmt.close();
}
catch(SQLException ex){
System.out.println("sql.executeUpdate:"+ex.getMessage());
}
}
public ResultSet executeQuery(String sql)throws Exception{
rs=null;
try{
sql=new String(sql.getBytes("GBK"),"ISO8859_1");
conn=DriverManager.getConnection(sConnStr);
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
conn.close();
stmt.close();
}
catch(SQLException ex){
System.out.println("sql.executeQuery:"+ex.getMessage());
}
return rs;
}
}
轉(zhuǎn)CSDN