JSP指令和內(nèi)置對象(未完成)

編譯指令

page

include

編譯指令是通知jsp引擎的消息,作用是設(shè)置jsp程序的屬性,以及由該jsp生成的servlet的屬性比如指定jsp文件使用的腳本語言、文件編碼等凌那,它不直接生成輸出阻问,編譯指令都有默認(rèn)值芭梯,無需為編譯指令設(shè)置值险耀。

page

一般位于頁面的最上方,一個頁面可以有多個page指令
<%@page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@page import="java.util.ArrayList,java.util.LinkedList"%>
<%@page errorPage="handle.jsp"%>
contentType有兩個作用:1.設(shè)置MIME類型 2.設(shè)置網(wǎng)頁編碼
pageEncoding為設(shè)置腳本語言的編碼
import用來引入包玖喘,多個包用逗號分隔
errorPage為設(shè)置當(dāng)jsp應(yīng)用內(nèi)發(fā)生錯誤時跳轉(zhuǎn)到的頁面

include

用來引入外部文件甩牺,如果是jsp文件則會先解析jsp語句,被引入的文件不能出現(xiàn)重定義源jsp文件中的變量否則會報錯累奈,實質(zhì)是編譯指令include會執(zhí)行引入文件的編譯指令贬派,將其融合成到一個servlet中
實例:在html中引入html

index.jsp
<%@ include file ="time.html"%>
<div style="width:500px;height:200px;overflow:scroll;">
    <%@include file="quote.html" %>
</div>

time.html
<p id="current_time"></p>
<script type="text/javascript">
document.getElementById("current_time").innerText=new Date().toLocaleString();
    setInterval(function(){
        document.getElementById("current_time").innerText=new Date().toLocaleString();
    },1000)
</script>

quote.html
<%@page pageEncoding="utf-8"%>   //告訴jsp引擎,頁面編碼是utf-8澎媒,不然中文會亂碼
<pre>
一些代碼搞乏。。戒努。
</pre>

動作指令

forward

include

useBean

forward

用來重定向頁面
<jsp:forward page="login.jsp">
<jsp:param value="haha" name="username"/>
<jsp:param value="123" name="password"/>
</jsp:forward>

include

靜態(tài)導(dǎo)入時被導(dǎo)入頁面的編譯指令會起作用请敦,動態(tài)導(dǎo)入時被導(dǎo)入頁面的編譯指令不會起作用,并且可以帶參
<jsp:include page="color_block.jsp">
<jsp:param value="red" name="bgcolor"/>
</jsp:include>

useBean

什么是javaBean储玫,從名字直譯來看就是豆子侍筛,而豆子都是圓滾滾的看起來都一樣,所以所有的javaBean都遵循相同的約定撒穷,使用方式上也是差不多的匣椰,這樣javaBean就可以很容易被重用或者被插入到其他應(yīng)用程序中
javaBean必須符合的約定:
1.有一個公共的默認(rèn)的構(gòu)造函數(shù)
2.javaBean內(nèi)的所有屬性必須通過get()和set()方法來訪問
3.javaBean必須都是可序列化的
實例:使用javaBean

index.jsp

<form action="user.jsp" method="post">
    <input type="text" name="userName"/>
    <input type="password" name="password"/>
    ><input type="submit">
</form>

UserEntity.class

package com.userBean.lhd;
import java.io.Serializable;

public class UserEntity implements Serializable {
    private String userName;
    private String password;
    //ctrl+shift+f快速格式化代碼
    public UserEntity() {
        super();
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

user.jsp

<jsp:useBean id="user" class="com.userBean.lhd.UserEntity"></jsp:useBean>
<jsp:setProperty property="userName" name="user"/>
<jsp:setProperty property="password" name="user"/>
<jsp:getProperty property="userName" name="user"/>
<jsp:getProperty property="password" name="user"/>

內(nèi)置對象

out
Request
Response

Session

HTTP是無狀態(tài)協(xié)議,每次客戶端檢索網(wǎng)頁時端礼,都要單獨打開一個服務(wù)器連接禽笑,因此服務(wù)器不會記錄下先前客戶端請求的任何信息。
有4種方法來維持客戶端與服務(wù)器的會話:

1.Cookies

網(wǎng)絡(luò)服務(wù)器可以指定一個唯一的session ID作為cookie來代表每個客戶端蛤奥,用來識別這個客戶端接下來的請求佳镜。這不是一種有效的方式,因為很多時候瀏覽器并不一定支持cookie凡桥。

2.隱藏表單域

一個網(wǎng)絡(luò)服務(wù)器可以發(fā)送一個隱藏的HTML表單域和一個唯一的session ID
<input type="hidden" name="sessionid" value="123">
表單被提交時蟀伸,指定的名稱和值將會自動包含在GET或POST數(shù)據(jù)中。每當(dāng)瀏覽器發(fā)送一個請求唬血,sessionid的值就可以用來保存不同瀏覽器的軌跡

3.重寫URL

在每個URL后面添加一些額外的數(shù)據(jù)來區(qū)分會話望蜡,服務(wù)器能夠根據(jù)這些數(shù)據(jù)來關(guān)聯(lián)session標(biāo)識符唤崭。比如http://sessionStudy.html;sessionid=12345拷恨。
相比而言,重寫URL是更好的方式谢肾,瀏覽器不支持cookies也能工作腕侄,但缺點是必須為每個URL動態(tài)指定session ID。

4.JSP內(nèi)置session對象

JSP利用servlet提供的HttpSession接口來識別一個用戶,存儲這個用戶的所有訪問信息冕杠。
默認(rèn)情況下微姊,JSP允許會話跟蹤,一個新的HttpSession對象將會自動地為新的客戶端實例化分预。禁止會話跟蹤需要顯式地關(guān)掉它兢交,通過將page指令中session屬性值設(shè)為false來實現(xiàn)。
實例:使用session對象統(tǒng)計用戶訪問情況

<%
   // 獲取session創(chuàng)建時間
   Date createTime = new Date(session.getCreationTime());
   // 獲取最后訪問頁面的時間
   Date lastAccessTime = new Date(session.getLastAccessedTime());
   Integer visitCount = new Integer(0);
   String visitCountKey = new String("visitCount");
   String userIDKey = new String("userID");
   String userID = new String("ABCD");

   // 檢測網(wǎng)頁是否由新的訪問用戶
   if (session.isNew()){
      session.setAttribute(userIDKey, userID);
      session.setAttribute(visitCountKey,  visitCount);
   } else {
       visitCount = (Integer)session.getAttribute(visitCountKey);
       visitCount += 1;
       userID = (String)session.getAttribute(userIDKey);
       session.setAttribute(visitCountKey,  visitCount);
   }
%>
<html>
<head>
<title>Session 跟蹤</title>
</head>
<body>
<h1>Session 跟蹤</h1>
<table border="1" align="center"> 
<tr bgcolor="#ccc">
   <th>Session 信息</th>
   <th>值</th>
</tr> 
<tr>
   <td>id</td>
   <td><% out.print( session.getId()); %></td>
</tr> 
<tr>
   <td>創(chuàng)建時間</td>
   <td><% out.print(createTime); %></td>
</tr> 
<tr>
   <td>最后訪問時間</td>
   <td><% out.print(lastAccessTime); %></td>
</tr> 
<tr>
   <td>用戶 ID</td>
   <td><% out.print(userID); %></td>
</tr> 
<tr>
   <td>訪問次數(shù)</td>
   <td><% out.print(visitCount); %></td>
</tr> 
</table> 
</body>
</html>

Application
Config
Page
Exception
PageContext

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笼痹,一起剝皮案震驚了整個濱河市配喳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凳干,老刑警劉巖晴裹,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異救赐,居然都是意外死亡涧团,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門经磅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泌绣,“玉大人,你說我怎么就攤上這事馋贤≡薇穑” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵配乓,是天一觀的道長仿滔。 經(jīng)常有香客問我,道長犹芹,這世上最難降的妖魔是什么崎页? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮腰埂,結(jié)果婚禮上飒焦,老公的妹妹穿的比我還像新娘。我一直安慰自己屿笼,他們只是感情好牺荠,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驴一,像睡著了一般休雌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肝断,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天杈曲,我揣著相機與錄音驰凛,去河邊找鬼。 笑死担扑,一個胖子當(dāng)著我的面吹牛恰响,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涌献,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼胚宦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了燕垃?” 一聲冷哼從身側(cè)響起间唉,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎利术,沒想到半個月后呈野,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡印叁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年被冒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轮蜕。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡昨悼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出跃洛,到底是詐尸還是另有隱情率触,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布汇竭,位于F島的核電站葱蝗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏细燎。R本人自食惡果不足惜两曼,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望玻驻。 院中可真熱鬧悼凑,春花似錦、人聲如沸璧瞬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗤锉。三九已至渔欢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間档冬,已是汗流浹背膘茎。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酷誓,地道東北人披坏。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像盐数,于是被迫代替她去往敵國和親棒拂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 前面講了servlet入門實踐現(xiàn)在開始介紹jsp入門實踐玫氢,開發(fā)環(huán)境的搭建請參考我前面的tomcat的文章帚屉,jsp入...
    伊豚wall閱讀 3,369評論 2 56
  • 1.什么是JSP (1)jsp全稱是Java Server Pages,它和Servlet技術(shù)一樣都是sun公司定...
    yjaal閱讀 3,651評論 5 99
  • 什么是jsp漾峡? 很久之前攻旦,我們的網(wǎng)頁都是靜態(tài)的,就是我們所看到的頁面在編寫好之后總是唯一的生逸。后來有人便提出動態(tài)頁面...
    ezsync小智閱讀 1,511評論 0 13
  • JSP 基本結(jié)構(gòu)JSP 頁面組成:模板文本(HTML,XML,純文本)牢屋,JSP 元素;JSP 元素:腳本元素槽袄,指令...
    jslancer閱讀 843評論 0 11
  • 一烙无、jsp定義及作用 JSP技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)...
    yzw12138閱讀 1,230評論 0 0