JSP 內建物件(一)
jsp提供了9個內建物件,該物件會自動進行例項化操作
4種屬性範圍
page 只在一個儲存屬性,跳轉無效
request 一次請求儲存屬性,跳轉依舊有效
session 同一會話有效
application 整個伺服器上儲存,所有使用者都可使用
page屬性
一個屬性設定在本頁上,跳轉後無法獲得
<%@ page import="java.util.Date" %><%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-10
Time: 下午1:02
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 設定page屬性
pageContext.setAttribute("name", "ming");
pageContext.setAttribute("birtday", new Date());
%>
<%
// 重page中取出屬性
String username = (String)pageContext.getAttribute("name");
Date userbirthday = (Date)pageContext.getAttribute("birtday");
%>
姓名 <%=username%>
生日 <%=userbirthday%>
</body>
</html>
request 屬性
伺服器跳轉後,屬性會被繼續儲存
瀏覽器的URL地址會發生改變
<%@ page import="java.util.Date" %><%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-10
Time: 下午1:02
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
request.setAttribute("name", "ming");
request.setAttribute("birthday", new Date());
%>
<jsp:forward page="request_scope_02.jsp"/>
</body>
</html>
<%@ page import="java.util.*" %><%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-10
Time: 下午1:29
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%=(String)request.getAttribute("name")%>
<%=(Date)request.getAttribute("birthday")%>
</body>
</html>
session屬性
當一個屬性設定以後,任何一個與設定頁面相關的頁面都可以取得
即,session,session屬於伺服器端儲存.
cokice 屬於客戶端儲存
<%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-10
Time: 下午3:07
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 設定session屬性範圍
session.setAttribute("name", "ming");
session.setAttribute("birthday", new Date());
%>
<!-- 超連結跳轉 -->
<a href="session_scope_02.jsp">超級連結跳轉</a>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-10
Time: 下午3:07
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 取出session屬性
String username = (String)session.getAttribute("name");
Date userbirthday = (Date)session.getAttribute("birthday");
%>
<%=username%>
<%=userbirthday%>
</body>
</html>
application
此為公共引數
此屬性儲存在伺服器上
<%@ page import="java.util.Date" %><%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-10
Time: 下午10:17
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
application.setAttribute("name", "ming");
application.setAttribute("birthday", new Date());
%>
<!-- 超級連結跳轉 -->
<a href="./application_scope_02.jsp">超級連結獲得屬性</a>
</body>
</html>
<%@ page import="java.util.Date" %><%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-10
Time: 下午10:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// application中獲得屬性
String username = (String)application.getAttribute("name");
Date userbirthday = (Date)application.getAttribute("birthday");
%>
<%=username%>
<%=userbirthday%>
</body>
</html>
request物件
接收客戶端傳送的請求,請求的引數,頭部資訊.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="request_demo01.jsp" method="post">
<input type="text" name="info">
<input type="submit" value="submit">
</form>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-10
Time: 下午11:54
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 接收引數
String content = request.getParameter("info");
%>
<%=content%>
</body>
</html>
接收全部請求引數
用getParameterNames
顯示全部頭資訊
使用getHeaderNames()
角色驗證
額…依舊沒啥東東
學過
response
定時跳轉
定時跳轉屬於客戶端跳轉
操作cookie
額…依舊沒啥
在response中呼叫addCookie
需要注意的是會返回一個jsessionid
session
當伺服器端使用session的時候,可以儲存在redis中
會有一個不重複的編號,即session id
cookie中儲存的jsessionid為同樣道理
登入 登出
實現思路,設定session範圍的屬性,需要驗證的頁面進行判斷session
即,儲存使用者的資訊,使用session進行儲存
<%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-11
Time: 下午9:17
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="login.jsp" method="post">
使用者名稱
<input type="text" name="uname"/>
密碼
<input type="password" name="upass"/>
<input type="submit" value="登入">
</form>
<%
// 使用者名稱 密碼
// 獲得name
String name = request.getParameter("uname");
// 獲得password
String password = request.getParameter("upass");
// 進行使用者名稱密碼比對
if(!(name==null||"".equals(name)
|| password == null || "".equals(password))
){
if("admin".equals(name) && "admin".equals(password)){
// 跳轉
response.setHeader("refresh", "2;URL=welcome.jsp");
// 設定session
session.setAttribute("userid", name);
%>
<h3>使用者登入成功,兩秒後將會跳轉到歡迎頁!</h3>
<h3>如果沒有跳轉,點選<a href="./welcome.jsp">這裡</a></h3>
<%
}else{
%>
<h3>使用者名稱密碼錯誤</h3>
<%
}
}
%>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-11
Time: 下午10:06
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 設定兩秒跳轉
response.setHeader("refresh", "2;URL=login.jsp");
// 清除session
session.invalidate();
%>
<h3>成功退出本系統,兩秒跳轉回首頁</h3>
<h3>如果沒有跳轉,訪問<a href="login.jsp">點我</a> </h3>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-11
Time: 下午9:59
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 判斷此使用者的session是否設定過
if(session.getAttribute("userid")!=null){
%>
<h3>歡迎<%=session.getAttribute("userid")%></h3>
<h3>登出登入<a href="./logout.jsp">點我</a></h3>
<%
}else{
%>
<h3>非法訪問</h3>
<%
}
%>
</body>
</html>
判斷新使用者
使用isnew的方式,
原理,在第一次訪問的時候,給客戶端設定cokkie,然後再次訪問的時候,會帶上cokkie中的jsessionid,用來判斷是否為新使用者
使用者操作時間
使用getCreationTime獲取第一個session建立的session時間,和最後一次操作的時間,用來判斷秒數
application物件
用來獲取serlet物件上下文 ServletContext表示整個容器的操作
使用表單輸入要儲存的檔名稱和內容,直接在web專案的根目錄的note資料夾中儲存檔案
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="./input_content.jsp" method="post">
輸入檔名稱 <input type="text" name="filename"/><br/>
輸入檔案內容 <textarea name="filecontent" cols="30" rows="3">
</textarea>
<input type="submit" value="儲存"/>
<input type="reset" value="重置"/>
</form>
</body>
</html>
<%@ page import="java.io.File" %>
<%@ page import="java.io.PrintStream" %>
<%@ page import="java.io.FileOutputStream" %>
<%@ page import="java.util.Scanner" %>
<%@ page import="java.io.FileInputStream" %><%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-11
Time: 下午10:46
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 接收儲存的檔名稱
String name = request.getParameter("filename");
// 接收檔案內容
String content = request.getParameter("filecontent");
// 獲得檔名稱
String fileName = this.getServletContext().getRealPath("/") + "note" + File.separator + name;
// 獲得檔案物件
File file = new File(fileName);
// 用於判斷父資料夾是否存在
if(!file.getParentFile().exists()){
// 建立資料夾
file.getParentFile().mkdir();
}
// 定義列印流物件
PrintStream printStream = null;
// 建立一個到檔案的輸入流
printStream = new PrintStream(new FileOutputStream(file));
// 往流中輸入內容
printStream.println(content);
// 關閉流
printStream.close();
%>
<%
// 透過Scanner獲取流的輸入
Scanner scanner = new Scanner(new FileInputStream(file));
// 設定讀取分隔符
scanner.useDelimiter("n");
// 新建緩衝區
StringBuffer stringBuffer = new StringBuffer();
// 讀取內容,儲存進入緩衝區
while(scanner.hasNext()){
stringBuffer.append(scanner.next()).append("<br>");
}
// 關閉
scanner.close();
%>
<%=stringBuffer%>
</body>
</html>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4369/viewspace-2822293/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JSP九大內建物件JS物件
- JSP九大內建物件 sessionJS物件Session
- 實驗三 JSP內建物件使用JS物件
- JSP九大內建物件 out request responseJS物件
- 【JSP進階】JSP九大內建物件,這你也不知道?JS物件
- EL 表示式對照 JSP 內建物件表JS物件
- JSP九大內建物件解析、JSP指令(page、include)、靜態聯編概述JS物件
- JSP中無法使用內建物件解決方法JS物件
- JSP簡介以及各種內建物件的用法JS物件
- jsp隱式物件-Servlet物件JS物件Servlet
- 關於EL在JSP內呼叫RequestScope內建物件報錯的問題JS物件
- c++內建函式物件C++函式物件
- JSP(JSTL EL表示式 三個指令 六個動作標籤 九個JSP內建物件)JS物件
- 2020 12 06 JSP九大內建物件和四個作用域JS物件
- JSP筆記-隱式物件JS筆記物件
- 詳談JSP執行原理、生命週期、語法、指令、動作標籤、九大內建物件(JSP 全家桶)JS物件
- 重要內建函式、常見內建函式(瞭解)、可迭代物件、迭代器物件、for迴圈原理、異常捕獲函式物件
- JSP九大內建物件、四大作用域以及session的生命週期JS物件Session
- 2.1.2 Python物件導向之反射以及內建方法Python物件反射
- 什麼是Date物件一個內建物件Date:物件
- 37. JSP有哪些內建物件 ?作用分別是什麼?(至少說出三個)JS物件
- Python內建函式(一)Python函式
- ajax從JSP傳遞物件陣列到後臺JS物件陣列
- 第一個JSPJS
- JavaScript內部物件和Date物件JavaScript物件
- 好程式設計師Java學習路線JSP物件程式設計師JavaJS物件
- 前端筆記之JavaScript物件導向(二)內建建構函式&相關方法|屬性|運算子&繼承&物件導向前端筆記JavaScript物件函式繼承
- JavaScript 本地物件、內建物件和宿主物件JavaScript物件
- Day 14 匿名函式 內建函式 物件導向程式設計函式物件程式設計
- js內建物件JS物件
- awk 語法與內建變數(一)變數
- 一文吃透 Go 內建 RPC 原理GoRPC
- JavaScript的內建物件JavaScript物件
- 『Go 內建庫第一季:error』GoError
- 『Go 內建庫第一季:reflect』Go
- 『Go 內建庫第一季:strings』Go
- 『Go 內建庫第一季:strconv』Go
- 『Go 內建庫第一季:time』Go