1、Out對象
主要用來向客戶端輸出各種格式的數(shù)據(jù),并且管理應用服務器上的輸出緩沖區(qū),Out對象的基類是javax.servlet.jsp.JspWriter類。
Out對象主要用來向客戶端輸出各種數(shù)據(jù)類型的內(nèi)容,并且管理應用服務器上的輸出緩沖區(qū),其基類是JspWriter.Out對象的主要方法為:
out.print(類型)或out.println(類型):out.print()方法與out.println()方法的區(qū)別是out.print()方法在輸出完畢后,并不結(jié)束該行,而out.println()方法在輸出完畢后,會結(jié)束當前行,下一個輸出語句將在下一行開始輸出.
out.newLine():輸出一個換行符號.
out.clearBuffer():清除緩沖區(qū)里的數(shù)據(jù),并且把數(shù)據(jù)寫到客戶端去.
out.clear():清除緩沖區(qū)里的數(shù)據(jù),但不把數(shù)據(jù)寫到客戶端去.
out.getRemaining():獲取緩沖區(qū)中沒有被占用的空間的大小.
out.flush():輸出緩沖區(qū)里的數(shù)據(jù).out.flush()方法也會清除緩沖區(qū)中的數(shù)據(jù),但是此方法會先將之前緩沖區(qū)中的數(shù)據(jù)輸出至客戶端,然后再清除緩沖區(qū)中的數(shù)據(jù).
out.getBufferSize():獲得緩沖區(qū)的大小,緩沖區(qū)的大小可以用來設置.
out.isAutoFlush():返回布爾值,如果auto flush,那么返回true,反之返回false.是否auto fush可以用來設置.
out.close():關(guān)閉輸出流,從而可以強制終止當前頁面的剩余部分向瀏覽器輸出.
Out的主要方法:
out.println(DataType);或out.print(DataType);
實例:
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> out對象使用實例</TITLE>
</HEAD>
<BODY>
<%
out.println(new Date().toLocaleString());
out.print("<BR>");
out.print("測試成功");
%>
</BODY>
</HTML>
2、Request對象
Request內(nèi)置對象代表了客戶端的請求信息,主要用于接受客戶端通過HTTP協(xié)議傳送給服務器端的數(shù)據(jù).在客戶端的請求中如果有參數(shù),則該對象就有一個參數(shù)列表.它通常是HttpServlet-Request的子類,其作用域就是一次Request請求.
Request對象包括很多方法,主要有:
getCookies():返回客戶端的cookie對象,結(jié)果是一個cookie數(shù)組.
getSession(boolean create):返回和當前客戶端請求相關(guān)聯(lián)的HttpSession對象,如果當前客戶端請求沒有和任何HttpSession對象關(guān)聯(lián),那么當create變量為true,則創(chuàng)建一個HttpSession對象并返回;反之,返回null.
getHeader(String name):獲得http協(xié)議定義的傳送文件頭信息。
getAttribute(String name):返回name指定的屬性值,若不存在指定的屬性,就返回null.
getattributeNames():返回request對象所有屬性的名字,結(jié)果集是一個Enumeration(枚舉)類的實例.
getHeaderNames():返回所有request header的名字,結(jié)果集是一個Enumeration(枚舉)類的實例.getHeaders(String name):返回指定名字的request header的所有值,結(jié)果集是一個Enumeration(枚舉)類的實例.
getMethod():返回客戶端向服務器端傳送數(shù)據(jù)的方法,一般方法有GET,POST,PUT等類型.
getParameter(String name):以字符串的形式返回客戶端傳來的某一個請求參數(shù)的值,該參數(shù)名由name指定.當傳遞給此方法的參數(shù)名沒有實際參數(shù)與之對應時,返回null.
getparameterNames():返回客戶端傳送給服務器端的所有的參數(shù)名,結(jié)果集是一個Enumeration(枚舉)類的實例.當傳遞給此方法的參數(shù)名沒有實際參數(shù)與之對應時,返回null.
getParameterValues(String name):以字符串數(shù)組的形式返回指定參數(shù)所有值.
getQueryString():返回查詢字符串,該字符串由客戶端以GET方法向服務器端傳送.
getRequestURI():獲得發(fā)出請求字符串的客戶端地址.
getServletPath():獲得客戶端所請求的腳本文件的文件路徑.
setAttribute(String name,Java.lang.Object o):設定名字為name的request參數(shù)值,該值由Object類型的o指定.
getServerName():獲得服務器的名字,如果沒有設定服務器名,則返回服務器IP地址.
getServerPort():獲得服務器的端口號.
getRemoteAddr():獲得客戶端的IP地址.
getRemoteHost():獲得客戶端主機的名字,若失敗,則返回客戶端電腦的IP地址.
getProtocol():獲取客戶端向服務器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱,如http/1.1.
getContentLength():以字節(jié)為單位返回客戶端請求的大小.如果無法得到該請求的大小,則返回-1.
getContentType():獲取客戶端請求的MIME類型.如果無法得到該請求的MIME類型,那么返回-1.
getInputStream():以二進制的形式將客戶端的請求以一個ServletInputStream的形式返回.使用此方法可以獲得客戶端的multipart/form-data數(shù)據(jù),可以實現(xiàn)文件上傳.
isSecure():如果客戶機是通過一個安全的訪問方式訪問的,就返回true;反之,返回false.
getDateHeader():返回一個long類型的數(shù)據(jù),表示客戶端發(fā)送到服務器的頭信息中的時間信息.
getInitHeader():獲取客戶端發(fā)送到服務器端的頭信息中的某一個特定的信息,并轉(zhuǎn)換為int類型.
getContextPath():返回環(huán)境路徑.對于JSP來說,一般是當前Web應用程序的根目錄.
isRequestedSessionIdValid():返回一個指示客戶端請求發(fā)送Session ID是否仍然有效的布爾值.
isRequestedSessionIdFromCookie():返回一個指示客戶端請求發(fā)送Session ID是否存在于Cookie中的布爾值.
isRequestedSessionIdFromURL():返回一個指示客戶端請求發(fā)送Session ID是否存在于URL中的布爾值.
Request.setAttribute()與Request.getAttribute()方法實例(也可以使用forward建立請求關(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對象使用實例</TITLE>
</HEAD>
<BODY>
<%
request.setAttribute("gr","123333");
%>
</FORM>
</BODY>
</HTML>
Request.getParameter()方法實例
主頁面
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> request.getParameter()方法使用實例</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()方法實例
主頁面
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> request.getParameterName()方法使用實例</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()方法實例
主頁面:
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> request.getAttributeName()方法使用實例</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("變量內(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()方法實例:
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> request.getRemoteAddr()方法使用實例</TITLE>
</HEAD>
<BODY>
<B>你的IP地址:</B>
<B><%=request.getRemoteAddr()%></B>
</FORM>
</FORM>
</BODY>
</HTML>
3、Response對象
Response對象實現(xiàn)HttpServletResponse接口,可對客戶的請求做出動態(tài)的響應,向客戶端發(fā)送數(shù)據(jù),如Cookie,HTTP文件頭信息等,一般是HttpServlet.Response類或其子類的一個對象.該對象的常用方法為:
addCookie(Cookie cookie):添加一個Cookie對象,用來保存客戶端的用戶信息,用request的getCookies()方法可以獲得這個Cookie.
addHeader(String name,String value):添加HTTP文件頭,該header將會傳到客戶端去,如果有同名的header存在,那么原來的header將會被覆蓋掉.
containsHeader(String name):判斷指定名字的HTTP文件頭是否存在,并返回布爾值.
sendError(int sc):向客戶端發(fā)送錯誤信息,例如,505指示服務器內(nèi)部錯誤;404指示網(wǎng)頁找不到的錯誤.
setHeader(String name,String value):設定指定名字的HTTP文件頭的值,如果該值存在,那么它會被新的值覆蓋.
setContenType(String type):響應設置內(nèi)容類型頭.
sendRedirect(URL):可以將用戶重定向到一個不同的頁面(URL).sendRedirect(URL)方法通過返回特定的狀態(tài)代碼而起作用,當它被調(diào)用時,返回一個狀態(tài)代碼,然后在響應中定位,給新頁面一個新地址.狀態(tài)代碼和定位頭會自動把瀏覽器重定位到新頁面.不過,用戶通常不能被順利重定位到新的頁而,特別是老一些的瀏覽器,而且一些新版本的瀏覽器在自動響應定向作用狀態(tài)代碼時會有些問題,當瀏覽器無法自動響應狀態(tài)代碼時,會收到一些字段信息.
Session是一種服務器個別處理與記錄用戶端上網(wǎng)使用者信息的技術(shù).當使用者與服務器聯(lián)機時,服務器可以給每一個上網(wǎng)的使用者一個Session并設定其中的內(nèi)容,這些Session都是個別獨立的,服務器端可以借此來辨別使用者信息進而提供個別的服務. Session對象的常用方法為:
getAttribute(String name):獲得指定名字的屬性,如果該屬性不存在,將會返回null.
getAttributeNames():返回Session對象中存儲的每個屬性對象,結(jié)果集是一個Enumeration類的實例.
setAttribute(String name,java.lang.Object value):設定指定名字的屬性值,并且把它存儲在Session對象中.
isNew():判斷目前Session是否為新的Session,若是則返回ture,否則返回false.
response.setHeader()方法網(wǎng)頁自動刷新實例:
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> response刷新頁面實例</TITLE>
</HEAD>
<BODY>
<%
response.setHeader("refresh","3");
out.println(new Date().toLocaleString());
%>
</BODY>
</HTML>
4、Application對象
在JSP服務器運行時刻,僅有一個Application對象,它由服務器創(chuàng)建,也由服務器自動清除,
不能被用戶創(chuàng)建和清除。我們只能創(chuàng)建這個Appliation對象的同步拷貝。
Application對象和Session對象相比,含義更加廣泛.在使用Session對象時,各個客戶端共享一個Session對象,而使用Application對象時,在同一個服務器中的JSP文件共享一個Application對象.Application對象主要方法為:
getAttribute(String name):返回由name指定名字的Application對象屬性的值,這是個Object對象,如果沒有,就返回null.
getAttributeNames():返回所有Application對象的屬性的名字,結(jié)果集是一個Enumeration(枚舉)類的實例.
3.4 Application對象的方法
getInitParameter(String name):返回由name指定的名字的application對象的某個屬性的初始值,如果沒有參數(shù),就返回null.
getServerInfo():返回servlet編譯器當前版本信息.
setAttribute(String name,Object object):將參數(shù)Object指定的對象obj添加到application對象中,并為添加的對象指定一個屬性.
setAttribute(),getAttribute()和removeAttribute()方法實例:
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Application對象方法實例</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()方法實例:
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> Application對象方法實例</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對象
getId():返回Session對象在服務器端的編號.每生成一個Session對象,服務器都會給它一個編號,并且該編號不會重復,這樣服務器才能根據(jù)編號來識別Session,并且正確的處理某一特定的Session及其提供的服務.
getCreationTime():返回Session對象被創(chuàng)建的時間,單位為毫秒.
getLastAccessedTime():返回當前Session對象最后一次被操作的時間,時間的單位為毫秒.
getMaxInactiveInterval():獲取Session對象的生存時間,時間的單位為秒.
setMaxInactiveInterval(int interval):設置Session的有效時間(也叫超時時間),時間的單位為秒.
removeAttribute(String name)"刪除指定的屬性(包含屬性名,屬性值).如果在有效時間內(nèi),用戶做出了新的請求,那么服務器就會將其看作一個新的用戶,此時,服務器將創(chuàng)建一個新的Session,舊的Session信息將會丟失
當用戶登陸網(wǎng)站,系統(tǒng)將為他生成一個獨一無二的Session對象,用以記錄改用戶的個人信息
,一旦改用戶退出網(wǎng)站,那么該Session對象將會注銷。Session對象可以綁定若干個人信息或
者Java對象,不同Session對象的同名變量是不會相互干擾的。
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 原來最大休眠時間:"+session.getMaxInactiveInterval());%><BR>
<%session.setMaxInactiveInterval(session.getMaxInactiveInterval()+1);%><BR>
<%out.println("session 最新最大休眠時間:"+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()方法將會將會清除當前的session對象解除它和任何參數(shù)或者JAVA對象的綁定關(guān)系
實例略
簡單的JSP計數(shù)器
實例:
主頁面
<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> JSP計數(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設計規(guī)范及實例
javaBean的設計規(guī)范:
一個javaBean類必須是一個公共類
一個javaBean類必須有一個空的構(gòu)造函數(shù)
一個javaBean類不應有公共實例變量
持有值應該通過一組存取方法(getXxx和setXxx)來訪問
實例:
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