Jsp基礎(chǔ)

一.JSP的頁面元素

a. 腳本 ScrptLet
1. <% 局部變量、java語句%>

  1. <%! 局部變量视卢、定義方法>
  2. <%=輸出表達式 %>

一般而言廊驼,修改web.xml妒挎、配置文件、java代碼鳞芙,需要重啟服務(wù)原朝,但是如果修改Jsp\html\css\js,不需要重啟。


b. 指令
page指令
<%@ page .... %>
page指定的屬性:
language:jsp頁面使用的腳本語言
import:導(dǎo)入類
pageEncoding:jsp文件自身編碼 jsp => java
contentType:瀏覽器解析jsp的編碼


c. 注釋

  1. html注釋 < !-- -->,可以被用戶通過瀏覽器查看源碼看到
  2. java注釋 // /......./
  3. jsp注釋 <%-- --%>

d. JSP九大內(nèi)置對象(自帶的鞠评,不需要new 也能使用的對象)

  1. out: 輸出對象谢澈,向客戶端輸出內(nèi)容
  2. request:請求對象御板,存儲客戶端向服務(wù)端發(fā)送的請求信息
    request對象的常見方法:
    String getParameter(String name) 根據(jù)請求的字段名key怠肋,返回字段值value input標(biāo)簽的value屬性值
    String[] getParameterValues(String name) 根據(jù)請求的字段名key,返回多個字段值value(checkbox 復(fù)選框)
    void setCharacterEncoding("編碼格式"):設(shè)置post請求編碼淹朋,tomcat7以前默認iso-8859-1笙各,tomcat8以后用utf-8
    getRequestDispatcher("b.jsp").forward(request,response): 以請求轉(zhuǎn)發(fā)的方式跳轉(zhuǎn)頁面,A => B
    ServletContext getServletContext(): 獲取項目的ServletContext對象
    http://localhost:8080/show.jsp?uname=zs&upwd=avc&uage=29&uhobbies=%E8%B6%B3%E7%90%83&uhobbies=%E7%AF%AE%E7%90%83
    get提交方式:method="get" 和 地址欄础芍、超鏈接<a href="xx"/> 請求方式 默認都是get請求方式

get與post請求方式的區(qū)別

  1. get方式 在地址欄顯示 請求信息(但是地址欄能夠容納的信息有限杈抢,4-5KB;如果請求數(shù)據(jù)存在大文件仑性,圖片等會出現(xiàn)地址欄無法容納大小而出錯)惶楼;post不會.
  2. 文件上傳操作,必須是post
    推薦使用post

get方式請求诊杆,如果出現(xiàn)亂碼,如下解決方案:

  1. 統(tǒng)一每一個變量的編碼(不推薦)
    new String(就舊碼晨汹,新編碼);
    name = new String(name.getBytes("iso-8859-1","utf-8"));
  2. 修改server.xml,一次性的更改tomcat默認get提交方式的編碼(utf-8)
    建議 使用tomcat時豹储,首先再server.xml中 統(tǒng)一個體方式的請求方式的編碼。淘这。剥扣。 修改端口號那一行添加URIEncoding="UTF-8"
    tomcat8以后默認時utf-8

  1. resonse:響應(yīng)對象
    提供的方法:
    void addCookie(Cookie cookie): 服務(wù)端向客戶端增加cookie對象
    void senRedirect(String location) throws IOException: 頁面跳轉(zhuǎn)的一種方式,重定向
    void setContentType(String type):設(shè)置服務(wù)端響應(yīng)的編碼(設(shè)置服務(wù)端的contentype)

示例:登陸
login.jsp => check.jsp => success.jsp

請求轉(zhuǎn)發(fā) 重定向
地址欄是否改變 不變check.jsp 改變success.jsp
是否保留第一次請求時的數(shù)據(jù) 保留 不保留
請求次數(shù) 1次 2次

  1. pageContext jsp頁面容器

  1. session(存在于服務(wù)端):繪畫
    講session前先了解cookie铝穷;
    Cookie(存在于客戶端钠怯,不是內(nèi)置對象):Cookie是由服務(wù)端生成的,再發(fā)送給客戶端保存氧骤。
    相當(dāng)于 本地緩存的作用: 客戶端(hello.mp4,zs/abc)=>服務(wù)端(hello.mp4,zs/abc)
    作用:提高訪問服務(wù)端的效率呻疹,但是安全性較差。
    Cookie:name=value
    javax.servlet.htttp.Cookie
    public Cookie(String name, String value)
    String getName():獲取name
    String getValue():獲取value
    void setMaxAge(int expire):最大有限期(秒)
    服務(wù)端準備cookie:
    response.addCookie(Cookie cookie)
    頁面跳轉(zhuǎn)(轉(zhuǎn)發(fā),重定向)
    客戶端獲取cookie:request.getCookies();
    a. 服務(wù)端增加cookie: response對象刽锤; 客戶端獲取cookie:request對象
    b. 不能直接獲取某一個單獨對象镊尺,只能一次性將全部的cookie拿到
    通過F12可以發(fā)現(xiàn) 除了自己設(shè)置的cookie外,還會得到一個name為JSSESSIONID的cookie
    session:會話
    a. 瀏覽網(wǎng)站:開始-關(guān)閉
    b. 購物: 瀏覽并思、付款庐氮、退出
    c. 電子郵件: 瀏覽、寫郵件宋彼、退出
    開始-結(jié)束為一次會話

session機制
客戶端第一次請求服務(wù)端時弄砍, 服務(wù)端會產(chǎn)生一個session對象(用戶保存該客戶的信息),并且每個session對象都會有一個唯一的sessionId(用于區(qū)分其他session)输涕,并且服務(wù)端也會產(chǎn)生一個cookie音婶,并且該cookie的name=JSESSIONID,value=服務(wù)端的sessionId的值,然后 服務(wù)端會在響應(yīng)客戶端的同時將該cookie發(fā)送給客戶端 莱坎,至此 客戶端就有了一個cookie(JSESSIONID),因此衣式,客戶端的cookie就可以和服務(wù)端的session一一對應(yīng)(JSESSSIONID=>sessionId)
客戶端第2/n次請求服務(wù)端時:服務(wù)端會先用客戶端cookie中的JSESSIONID 去服務(wù)端的session中匹配sessionId,如果匹配成功檐什,說明此用戶已不是第一次訪問
生活實例:
客戶端:顧客(第一次存包后拿到號碼牌)
服務(wù)端:存包處

session方法:
String getId():獲取sessionId
boolean isNew():判斷是否是新用戶(第一次訪問)
void invalidate():使session失效(退出登陸碴卧、注銷)

setAttribute();
getAttribute();

void setMaxInActiveInterval(秒):設(shè)置最大有效時間,

session創(chuàng)建過程.png
  1. application 全局對象
    String getContextPath() 獲取當(dāng)前項目虛擬路徑
    String getRealPath() 獲取當(dāng)前項目的絕對路徑
  2. config 配置對象(服務(wù)器配置信息)
  3. page 當(dāng)前JSP頁面對象(相當(dāng)于java中的this)
  4. exception 異常對象


    request.png

    請求轉(zhuǎn)發(fā).png

    重定向.png

四個范圍對象(從小到大)
pageContext jsp
頁面容器: 當(dāng)前頁面有效(跳轉(zhuǎn)后無效)
request 請求對象:同一次請求有效
session 會話對象: 同一次會話有效
application 全局對象:全局有效;整個項目運行期間 都有效;關(guān)閉服務(wù)乃正、其他項目無效
=》多個項目共享住册、重啟后仍然有效: JNDI
以上4個對象共有的方法:
Object getAttribute(String name ):根據(jù)屬性名,獲取屬性值
void setAttribute(String name, Object obj) 設(shè)置屬性值
setAttribute("a","b")//如果a不存在瓮具,則創(chuàng)建一個新的荧飞,如果存在則覆蓋
removeAttribute("a")根據(jù)屬性名刪除對象
建議以上范圍對象在使用時盡量用最小的范圍,對象范圍越大造成的性能損耗越大搭综。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垢箕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子兑巾,更是在濱河造成了極大的恐慌条获,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒋歌,死亡現(xiàn)場離奇詭異帅掘,居然都是意外死亡,警方通過查閱死者的電腦和手機堂油,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門修档,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人府框,你說我怎么就攤上這事吱窝。” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵院峡,是天一觀的道長兴使。 經(jīng)常有香客問我,道長照激,這世上最難降的妖魔是什么发魄? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮俩垃,結(jié)果婚禮上励幼,老公的妹妹穿的比我還像新娘。我一直安慰自己口柳,他們只是感情好苹粟,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著啄清,像睡著了一般六水。 火紅的嫁衣襯著肌膚如雪俺孙。 梳的紋絲不亂的頭發(fā)上辣卒,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音睛榄,去河邊找鬼荣茫。 笑死,一個胖子當(dāng)著我的面吹牛场靴,可吹牛的內(nèi)容都是我干的啡莉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼旨剥,長吁一口氣:“原來是場噩夢啊……” “哼咧欣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起轨帜,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤魄咕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蚌父,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哮兰,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年苟弛,在試婚紗的時候發(fā)現(xiàn)自己被綠了喝滞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡膏秫,死狀恐怖右遭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤窘哈,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布言蛇,位于F島的核電站,受9級特大地震影響宵距,放射性物質(zhì)發(fā)生泄漏腊尚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一满哪、第九天 我趴在偏房一處隱蔽的房頂上張望婿斥。 院中可真熱鬧,春花似錦哨鸭、人聲如沸民宿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽活鹰。三九已至,卻和暖如春只估,著一層夾襖步出監(jiān)牢的瞬間志群,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工蛔钙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锌云,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓吁脱,卻偏偏與公主長得像桑涎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子兼贡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354

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

  • 1.JSP注釋1./........./ Java代碼注釋攻冷,頁面不顯示,客戶端不可見2<遍希!-- ..... --...
    寞離i閱讀 247評論 0 1
  • 1課程回顧 會話管理 1)會話管理:管理瀏覽器和服務(wù)器之間的會話過程中產(chǎn)生的會話數(shù)據(jù) 2)Cookie技術(shù):會話數(shù)...
    守亭翁閱讀 321評論 0 0
  • JSP總結(jié)(經(jīng)典) day1 JSP 定義: 1)Java Server Page, Java EE 組件等曼,本...
    java日記閱讀 3,442評論 0 13
  • jsp指令 page指令:<%@ page language="java"import="java.util*,j...
    jarWorker閱讀 431評論 0 8
  • 今天周一,晚上又被蹂躪了一個小時孵班。 熱身運動沒了涉兽,換成了波比跳,20個一組篙程。 休息一分鐘左右枷畏,高抬腿1分鐘,休息一...
    小寶_cde4閱讀 212評論 0 0