程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP網頁編程初解(三)

JSP網頁編程初解(三)

編輯:關於JSP

6、JSP內置對象

       為了方便、有效地開發Web應用程序,JSP提供了一系列內置對象。這些對象不需要預先聲明,而是由JSP容器自動定義。這些內置對象在JSP網頁環境下可以直接使用。

       1)、out對象

       out內置對象主要用於將數據輸出到客戶端的浏覽器網頁,該對象是通過引用javax.servlet.JspWriter對象來實現的。out內置對象提供了一些用來控制輸出的方法。

方法
 說明
 
clear()
 清除緩沖區的數據
 
clearBuffer()
 清除當前緩沖區的數據
 
flush()
 輸出緩沖區中的數據
 
getBufferSize()
 返回緩沖區的大小
 
getRemaining()
 返回緩沖區中剩余空間的大小
 
isAutoFlush()
 返回一個布爾值,如果AutoFlush為真,則返回true,否則返回false
 
newline()
 輸出換行
 
print(String s)
 輸出數據
 
println(String s)
 輸出數據並自動換行
 

       表中的方法可以分為兩類:一類是用於控制緩沖區的行為,緩沖區是JSP將數據輸出至浏覽器之前用來暫時存儲數據的一個區域;另一類則是數據的輸出操作。下面是一個關於out內置對象的實例:


[html] 
<%@pagecontentType="text/html" pageEncoding="gb2312"%> 
    <html> 
        <head> 
            <metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=gb2312"/> 
            <title>JSP Page</title> 
        </head> 
        <body> 
            <% 
            out.println("這是一個JSP網頁<br>"); 
            out.clearBuffer(); 
            out.println("歡迎你訪問<br>"); 
            out.flush(); 
            out.println("日期<br>"); 
            out.println(new java.util.Date().toLocaleString()+ "<br>"); 
            out.println("剩余緩沖區大小" +out.getRemaining() + "<br>"); 
            out.println("緩沖區大小" +out.getBufferSize() + "<br>"); 
            out.println("AutoFlush" +out.isAutoFlush()); 
            %> 
        </body> 
    </html> 

<%@pagecontentType="text/html" pageEncoding="gb2312"%>
    <html>
        <head>
            <metahttp-equiv="Content-Type" content="text/html;charset=gb2312"/>
            <title>JSP Page</title>
        </head>
        <body>
            <%
            out.println("這是一個JSP網頁<br>");
            out.clearBuffer();
            out.println("歡迎你訪問<br>");
            out.flush();
            out.println("日期<br>");
            out.println(new java.util.Date().toLocaleString()+ "<br>");
            out.println("剩余緩沖區大小" +out.getRemaining() + "<br>");
            out.println("緩沖區大小" +out.getBufferSize() + "<br>");
            out.println("AutoFlush" +out.isAutoFlush());
            %>
        </body>
    </html>


       2)、request對象

       request對象的主要作用是當客戶端發出一個請求時,它封裝了用戶所提交的信息,然後通過調用該對象相應的方法來獲取封裝的信息。request內置對象提供了一些方法如下表:

方法
 說明
 
getParameter(String name)
 返回請求參數的值,如果參數不存在則返回null
 
getParameterValues(String name)
 返回請求參數的所有值
 
getParameterNames()
 返回所有參數的名稱,其結果為枚舉對象
 
getProtocol()
 返回通信協議的協議名稱
 
getRemoteAddr()
 返回客戶端的IP地址
 
getRemoteHost()
 返回客戶端的名字
 
getScheme()
 返回發出請求的方式,如http、ftp、telnet
 
getServerName()
 返回服務器的名字
 
getServerPort()
 返回服務器主機的端口號
 
getMethod()
 返回傳送數據的方式
 
getQueryString()
 返回網址欄後的查詢字符串
 
getRquestURI()
 返回請求的URI字符串,不包括網址欄後的查詢字符串
 
getPathInfo()
 返回任何額外的路徑信息
 
getServletPath()
 返回客戶端請求的文件的路徑
 
getHeaders(String name)
 返回已命名的所有報頭的值的集合
 
getHeader(String name)
 返回已命名的報頭的值
 
getHeaderNames()
 返回已命名的所有報頭的名稱的集合
 
getAttribute(String name)
 返回已命名的屬性的值,如果給定名稱的任何屬性都不存在,則返回null
 
getAttributeNames()
 返回所有屬性的名稱集合,其結果類型為枚舉類型
 
removeAttibute(String name)
 刪除請求中的一個屬性
 
setAttribute(String name , Object)
 存儲請求中的一個屬性
 
getCharacterEncoding()
 返回請求的字符編碼方式
 
getContentLength()
 返回請求內容的大小
 

       下面是一個關於request對象的實例:

jspTest01.jsp:


[html
<%@ pagelanguage="java" contentType="text/html; charset=UTF-8" 
       pageEncoding="UTF-8"%> 
  
<html> 
<head> 
<metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> 
<title>使用request對象</title> 
</head> 
<body> 
       <% request.setCharacterEncoding("UTF-8"); %> 
       <% 
       String name = request.getParameter("name"); //獲取用戶姓名 
       String tel = request.getParameter("tel"); //獲取電話 
       String QQ = request.getParameter("QQ"); //獲取QQ 
       %> 
       姓名:<%=name %> <br> 
       電話:<%=tel %> <br> 
       QQ :<%=QQ %> <br> 
       <h3>阿斯頓發送到</h3> 
       <% 
       //獲取request內置對象的屬性 
       out.println("協議名稱:"); 
       out.println(request.getRequestURI() + "<br>"); 
       out.println("請求的方式:"); 
       out.println(request.getMethod() + "<br>"); 
       out.println("客戶端地址:"); 
       out.println(request.getRemoteAddr() + "<br>"); 
       out.println("客戶端名稱:"); 
       out.println(request.getRemoteHost() + "<br>"); 
       out.println("返回參數值:"); 
       out.println(request.getParameter(name) +"<br>"); 
       out.println("字符的編碼方式:"); 
       out.println(request.getCharacterEncoding() +"<br>"); 
       out.println("內容的大小:"); 
       out.println(request.getContentLength() +"<br>"); 
       out.println("服務器名稱:"); 
       out.println(request.getServerName() + "<br>"); 
       out.println("服務器端口號:"); 
       out.println(request.getServerPort() + "<br>"); 
       out.println("文件的路徑:"); 
       out.println(request.getServletPath() +"<br>"); 
       out.println("URI字符串:"); 
       out.println(request.getRequestURI() + "<br>"); 
       out.println("網址欄後的字符串:"); 
       out.println(request.getQueryString() +"<br>"); 
       out.println("發出請求的方式:"); 
       out.println(request.getScheme() + "<br>"); 
       out.println("URI字符串:"); 
       out.println(request.getRequestURL() + "<br>"); 
       %> 
</body> 
</html> 

<%@ pagelanguage="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"%>
 
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>使用request對象</title>
</head>
<body>
       <% request.setCharacterEncoding("UTF-8"); %>
       <%
       String name = request.getParameter("name"); //獲取用戶姓名
       String tel = request.getParameter("tel"); //獲取電話
       String QQ = request.getParameter("QQ"); //獲取QQ
       %>
       姓名:<%=name %> <br>
       電話:<%=tel %> <br>
       QQ :<%=QQ %> <br>
       <h3>阿斯頓發送到</h3>
       <%
       //獲取request內置對象的屬性
       out.println("協議名稱:");
       out.println(request.getRequestURI() + "<br>");
       out.println("請求的方式:");
       out.println(request.getMethod() + "<br>");
       out.println("客戶端地址:");
       out.println(request.getRemoteAddr() + "<br>");
       out.println("客戶端名稱:");
       out.println(request.getRemoteHost() + "<br>");
       out.println("返回參數值:");
       out.println(request.getParameter(name) +"<br>");
       out.println("字符的編碼方式:");
       out.println(request.getCharacterEncoding() +"<br>");
       out.println("內容的大小:");
       out.println(request.getContentLength() +"<br>");
       out.println("服務器名稱:");
       out.println(request.getServerName() + "<br>");
       out.println("服務器端口號:");
       out.println(request.getServerPort() + "<br>");
       out.println("文件的路徑:");
       out.println(request.getServletPath() +"<br>");
       out.println("URI字符串:");
       out.println(request.getRequestURI() + "<br>");
       out.println("網址欄後的字符串:");
       out.println(request.getQueryString() +"<br>");
       out.println("發出請求的方式:");
       out.println(request.getScheme() + "<br>");
       out.println("URI字符串:");
       out.println(request.getRequestURL() + "<br>");
       %>
</body>
</html>


htmlTest01.html:


[html] 
<%@contentType="text/html charset=UTF-8" %> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"> 
<title>注冊</title> 
</head> 
<body> 
       <form action="jspTest01.jsp"name="myform" method="post"> 
              姓名:<input type="text" name="name"><br> 
              電話:<input type="text" name="tel"> <br> 
              QQ :<input type="text"name="QQ"> 
                     <input type="submit" value="確定"> 
       </form> 
</body> 
</html> 

<%@contentType="text/html charset=UTF-8" %>
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>注冊</title>
</head>
<body>
       <form action="jspTest01.jsp"name="myform" method="post">
              姓名:<input type="text" name="name"><br>
              電話:<input type="text" name="tel"> <br>
              QQ :<input type="text"name="QQ">
                     <input type="submit" value="確定">
       </form>
</body>
</html>


Request對象的主要作用是當客戶端發出一個請求時,它封裝了用戶所提交的信息,然後他通過調用該對象相應的方法來獲取封裝的信息。

       3)、response對象

       Response對象的主要作用是當服務器返回一個信息時,它封裝了所返回的信息,然後將其送到客戶端以相應客戶的請求。Response是HttpServletResponse類的對象。Response內置對象提供了一些方法如下表所示:

方法
 說明
 
flushBuffer()
 強制將緩沖區中的內容發送給客戶
 
getBufferSize()
 返回緩沖區的大小
 
setBufferSize()
 設置緩沖區的大小
 
isCommitted()
 表示數據是否提交
 
Rest()
 清除緩沖區中的數據
 
getCharacterEncoding()
 返回文件的編碼方式
 
setContentType()
 設置網頁文件的格式和編碼的方式
 
SendError()
 向客戶發送錯誤信息
 
setStatus()
 設置response對象的狀態,告訴浏覽器如何處理服務器發來的信息
 
ContainsHeader(String name)
 返回布爾值表示名稱為name的標頭是否存在
 
setDateHeader(String name , log date)
 設置一個給定名稱和日期的響應報頭,如果該值已經存在,則新值會覆蓋原有的值
 
setHeader(String name , String value)
 設置一個給定名稱和值的響應報頭,如果該值已經存在,則新值會覆蓋原有的值
 
setIntHeader(String name , String value)
 設置一個給定名稱和整數值的響應報頭,如果該值已經存在,則新值會覆蓋原有的值
 
addHeader(String name , String value)
 增加一個給定名稱和值的響應報頭
 
addDateHeader(String name , long date)
 增加一個給定名稱和日期的響應報頭
 
addIntHeader(String name , int value)
 增加一個給定名稱和整數值的響應報頭
 
sendRedirect(“pageUrl”)
 重新定向網頁
 

       下面是一個關於response對象的實例:

htmlTest.html:


[html]
<%@ contentType="text/htmlcharset=UTF-8" %> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"> 
<title>注冊</title> 
</head> 
<body> 
       <form action="jspTest01.jsp"name="myform" method="post"> 
              <input type="radio" name="using"value="a">網頁刷新 <br> 
              <input type="radio" name="using"value="b">操作緩沖區 <br> 
              <input type="submit" value="確定" > 
       </form> 
</body> 
</html> 

<%@ contentType="text/htmlcharset=UTF-8" %>
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>注冊</title>
</head>
<body>
       <form action="jspTest01.jsp"name="myform" method="post">
              <input type="radio" name="using"value="a">網頁刷新 <br>
              <input type="radio" name="using"value="b">操作緩沖區 <br>
              <input type="submit" value="確定" >
       </form>
</body>
</html>


jspTest01.jsp:


[html] 
<%@ pagelanguage="java" contentType="text/html; charset=UTF-8" 
       pageEncoding="UTF-8"%> 
  
<html> 
<head> 
<metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> 
<title>使用request對象</title> 
</head> 
<body> 
       <% request.setCharacterEncoding("UTF-8"); %> 
       <% 
       String using = request.getParameter("using");//獲取用戶名 
       if(using.equals("a")) 
              response.sendRedirect("show1.jsp");//若選a,則跳轉到show1.jsp 
       else if(using.equals("b")) 
              response.sendRedirect("show2.jsp");//若選b,則跳轉到show2.jsp          
       %> 
</body> 
</html> 

<%@ pagelanguage="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"%>
 
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>使用request對象</title>
</head>
<body>
       <% request.setCharacterEncoding("UTF-8"); %>
       <%
       String using = request.getParameter("using");//獲取用戶名
       if(using.equals("a"))
              response.sendRedirect("show1.jsp");//若選a,則跳轉到show1.jsp
       else if(using.equals("b"))
              response.sendRedirect("show2.jsp");//若選b,則跳轉到show2.jsp        
       %>
</body>
</html>


show1.jsp:


[html] 
<%@ pagelanguage="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"> 
<title>show1</title> 
</head> 
<body> 
       <%! int c = 0 ; %> 
       <% 
       if(c == 3) c = 0; 
       response.setHeader("Refresh", "2"); 
       c++; 
       %> 
       <img src="<%=c%>.png"><br>  
</body> 
</html> 

<%@ pagelanguage="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>show1</title>
</head>
<body>
       <%! int c = 0 ; %>
       <%
       if(c == 3) c = 0;
       response.setHeader("Refresh", "2");
       c++;
       %>
       <img src="<%=c%>.png"><br>
</body>
</html>


show2.jsp:


[html
<%@ pagelanguage="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"> 
<title>show2</title> 
</head> 
<body> 
       <% 
       out.println("緩沖區大小:"); 
       out.println(response.getBufferSize() +"<br>"); 
       out.println("是否寫出緩沖區的數據:"); 
       out.println(request.isSecure() + "<br>"); 
       %> 
</body> 
</html> 

<%@ pagelanguage="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>show2</title>
</head>
<body>
       <%
       out.println("緩沖區大小:");
       out.println(response.getBufferSize() +"<br>");
       out.println("是否寫出緩沖區的數據:");
       out.println(request.isSecure() + "<br>");
       %>
</body>
</html>


       4)、session對象

       Session對象是由javax.servlet.http.HttpSession接口衍生而來的,該內建對象封裝了屬於客戶會話的所有信息。Session存在於服務器端,當用戶向服務器請求頁面時,若該頁面有關於session的程序代碼,那麼session對象便產生。他用來存放該用戶的信息。下面是session的一些常用方法:

方法
 說明
 
setAttribute(String name , Object value)
 將一個指定的名稱存儲在session對象中
 
getAttribute(String name)
 返回與指定參數相關的屬性
 
getAttributeNames()
 返回該session對象中所有屬性的名稱,其結果為枚舉類型
 
removeAttribute(name)
 刪除與name相關的session
 
getCreationTime()
 返回session建立的時間,單位為毫秒
 
getId()
 返回一個關於session的ID號
 
getLastAccessedTime()
 返回客戶端向服務器發出請求的最後時間
 
getMaxInactiveInterval()
 返回一個會話兩個請求的最大時間間隔,單位為秒
 
isNew()
 返回一個布爾值表示是否為新建的session
 
Invalidate()
 撤銷一個session對象
 

       下面的實例使用session對象將客戶的信息或服務器的信息存儲,在需要的時候可以提取出來:

htmlTest.html:


[html]
<%@contentType="text/html charset=UTF-8" %> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"> 
<title>注冊</title> 
</head> 
<body> 
       <form action="jspTest01.jsp"name="myform" method="post"> 
              <input type="radio" name="using"value="a">數據訪問 <br> 
              <input type="radio" name="using"value="b">內建對象 <br> 
              <input type="submit" value="確定" > 
       </form> 
</body> 
</html> 

<%@contentType="text/html charset=UTF-8" %>
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>注冊</title>
</head>
<body>
       <form action="jspTest01.jsp"name="myform" method="post">
              <input type="radio" name="using"value="a">數據訪問 <br>
              <input type="radio" name="using"value="b">內建對象 <br>
              <input type="submit" value="確定" >
       </form>
</body>
</html>


jspTest01.jsp:


[html]
<%@ pagelanguage="java" contentType="text/html; charset=UTF-8" 
       pageEncoding="UTF-8"%> 
  
<html> 
<head> 
<metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> 
<title>使用request對象</title> 
</head> 
<body> 
       <% request.setCharacterEncoding("UTF-8"); %> 
       <% 
       String using = request.getParameter("using");//獲取用戶名 
       if(using.equals("a")) 
              response.sendRedirect("show1.jsp");//若選a,則跳轉到show1.jsp 
       else if(using.equals("b")) 
              response.sendRedirect("show2.jsp");//若選b,則跳轉到show2.jsp          
       %> 
</body> 
</html> 

<%@ pagelanguage="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"%>
 
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>使用request對象</title>
</head>
<body>
       <% request.setCharacterEncoding("UTF-8"); %>
       <%
       String using = request.getParameter("using");//獲取用戶名
       if(using.equals("a"))
              response.sendRedirect("show1.jsp");//若選a,則跳轉到show1.jsp
       else if(using.equals("b"))
              response.sendRedirect("show2.jsp");//若選b,則跳轉到show2.jsp        
       %>
</body>
</html>


show1.jsp:


[html]
<%@ pagelanguage="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"> 
<title>show1</title> 
</head> 
<body> 
       <% 
       session.setAttribute("name", "小武"); 
       session.setAttribute("number","41009160"); 
       session.setAttribute("class", "地信1班"); 
       %> 
       <% 
       out.println("姓名:"); 
       out.println(session.getAttribute("name") +"<br>"); 
       out.println("學號:"); 
       out.println(session.getAttribute("number") +"<br>"); 
       out.println("班級"); 
       out.println(session.getAttribute("class") +"<br>"); 
       %> 
</body> 
</html> 

<%@ pagelanguage="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>show1</title>
</head>
<body>
       <%
       session.setAttribute("name", "小武");
       session.setAttribute("number","41009160");
       session.setAttribute("class", "地信1班");
       %>
       <%
       out.println("姓名:");
       out.println(session.getAttribute("name") +"<br>");
       out.println("學號:");
       out.println(session.getAttribute("number") +"<br>");
       out.println("班級");
       out.println(session.getAttribute("class") +"<br>");
       %>
</body>
</html>


show2.jsp:


[html] 
<%@pageimport="java.sql.Date"%> 
<%@ pagelanguage="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"> 
<title>show2</title> 
</head> 
<body> 
       <% 
       out.println("session建立的時間"); 
       out.println(new Date((Long)session.getCreationTime()) +"<br>"); 
       out.println("session的ID號"); 
       out.println(session.getId() + "<br>"); 
       out.println("session最後被請求的時間"); 
       out.println(session.getLastAccessedTime() +"<br>"); 
       out.println("session最大時間間隔"); 
       out.println(session.getMaxInactiveInterval() +"<br>"); 
       out.println("session是否新建"); 
       out.println(session.isNew() + "<br>"); 
       %> 
</body> 
</html> 

<%@pageimport="java.sql.Date"%>
<%@ pagelanguage="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>show2</title>
</head>
<body>
       <%
       out.println("session建立的時間");
       out.println(new Date((Long)session.getCreationTime()) +"<br>");
       out.println("session的ID號");
       out.println(session.getId() + "<br>");
       out.println("session最後被請求的時間");
       out.println(session.getLastAccessedTime() +"<br>");
       out.println("session最大時間間隔");
       out.println(session.getMaxInactiveInterval() +"<br>");
       out.println("session是否新建");
       out.println(session.isNew() + "<br>");
       %>
</body>
</html>


       Session對象是由javax.servlet.http.HttpSession接口衍生而來的,該內建對象封裝了屬於客戶會話的所有信息

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved