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