三、JSP實現(xiàn)數(shù)據(jù)傳遞

JSP六大組成部分:

標(biāo)志 名稱 作用
1辅辩、html 靜態(tài)頁面 頁面顯示和展示數(shù)據(jù)
2、<%%> 小腳本 編輯Java代碼
3、<%@%> 指令 指定JSP的內(nèi)容甸陌、格式峡碉、字符集編碼或者導(dǎo)包
4近哟、< %=%> 表達(dá)式 展示數(shù)據(jù)/輸出數(shù)據(jù)
5、< !-- --> HTML注釋 注釋(后臺可見)
< %-- --%> JSP注釋 注釋
6鲫寄、< %!%> 聲明 聲明僅能在當(dāng)前頁使用的數(shù)據(jù)

九大內(nèi)置對象

  • 請求對象:request
  • 輸出對象:out
  • 響應(yīng)對象:response
  • 應(yīng)用程序?qū)ο螅篴pplication
  • 會話對象:session
  • 頁面上下文對象:pageContext
  • 頁面對象:page
  • 配置對象:config
  • 異常對象:exception

請求對象:request

  • public String getParameter(String name)
示例
  • HTML代碼:
    <input type ="text" name ="userName">
  • JSP代碼:
    String userName=request.getParameter("userName");

request常用方法

方法名稱 說名
String getParameter(String name) 根據(jù)表單組件名稱獲取提交數(shù)據(jù)
String[] getParameterValues(String name) 獲取表單組件對應(yīng)多個應(yīng)用值時的請求數(shù)據(jù)
void serCharacterEncoding(String charset) 指定每個請求的編碼
RequestDispatcher getRequestDispatcher(String path) 返回一個RequestDispatcher對象吉执,該對象的forward()方法用于轉(zhuǎn)發(fā)請求

獲取同名的多個參數(shù)(復(fù)選框)

<h1>這是處理注冊的頁面,注冊提交的數(shù)據(jù)將發(fā)送至這里</h1>
    <%
    //亂碼處理(post)
        request.setCharacterEncoding("utf-8");//post中文亂碼
        response.setCharacterEncoding("utf-8");
        
    //接收用戶
        String userName = request.getParameter("userName");
        //get亂碼處理
            /* byte[] userNames = userName.getBytes("ISO-8859-1");
            userName = new String(userNames,"utf-8"); */
        //  userName = new String(userName.getBytes("ISO-8859-1"),"utf-8");
    //接收密碼
        String userPass = request.getParameter("userPass");
    //接收興趣愛好-----數(shù)組形式----多個值
    String[] hobbys = request.getParameterValues("hobby");//復(fù)選框獲取值
    //out.println("注冊成功地来!注冊的用戶名是:"+userName+"密碼是:"+userPass);
    %>
    用戶名:<%
            if(userName != null && !userName.equals("")){
         %> 
         <%=userName %>
         <%
            }else{
                out.println("用戶未填寫戳玫!");
            }
         %>
    密碼:<%=userPass %>
    愛好:<br/>
        <%
        if(hobbys !=null){
            for(String hobby : hobbys){
                out.println(hobby+"<br/>");
            }
        }else{
            out.println("你沒有任何選擇!");
        }
        %>
圖片.png
圖片.png
圖片.png

get與post區(qū)別:

圖片.png

中文亂碼處理

表單post方式提交未斑,中文亂碼
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");(可以不加)
表單get方式提交咕宿,中文亂碼
/* byte[] userNames = userName.getBytes("ISO-8859-1");
    userName = new String(userNames,"utf-8"); */
    userName = new String(userName.getBytes("ISO-8859-1"),"utf-8");(治標(biāo)不治本)
  • 治本的方法:
    配置Tomcat\conf\server.xml文件


    圖片.png

在請求中保存屬性

  • public void setAttribute(String name,Object o)
  • request.setAttribute("mess","注冊失敗")(鍵值對的形式)

在請求中獲取屬性

  • public Object getAttriebute(String name)
    1、在使用屬性值的時候要做非空判斷,否則會出現(xiàn)空指針異常
    2府阀、它的返回值類型是Object類型缆镣,需要最數(shù)據(jù)類型轉(zhuǎn)換
圖片.png

轉(zhuǎn)發(fā)與重定向

轉(zhuǎn)發(fā)

  • RequestDispatcher
  • forward()方法
    1、request.getRequestDispatcher("url").forward(request,response)
    2试浙、<jsp:forward page = "url"/>

重定向

  • 將用戶請求重新定位到一個新的URL
    response.sendRedirect("url")
用戶名:<%
            if(userName != null && !userName.equals("")){
                
                if(userName.equals("admin")){
                    //如果userName等于admin注冊失敗董瞻,返回注冊頁面
                    request.setAttribute("mess", "注冊失敗,用戶名已存在田巴!");
                    //轉(zhuǎn)發(fā)
                    request.getRequestDispatcher("register.jsp").forward(request, response);
                }else{
                    //注冊成功跳轉(zhuǎn)到主頁面
                    request.setAttribute("mess", "注冊成功");
                    //重定向
                    response.sendRedirect(basePath+"/pages/newsDetail.jsp");
                }

跳轉(zhuǎn)頁面代碼在請求中獲取屬性

  • 它的返回值類型是Object類型钠糊,需要最數(shù)據(jù)類型轉(zhuǎn)換
    <%
    Object omess = request.getAttribute("mess");
    if(omess != null){
        out.println(omess.toString());
    }
    %>

轉(zhuǎn)發(fā):服務(wù)器內(nèi)部自動完成了跳轉(zhuǎn),服務(wù)器行為無形中延長了request作用域

圖片.png

session存取數(shù)據(jù)

page:作用域僅限于當(dāng)前頁面

session(服務(wù)器端使用的記錄同一客戶狀態(tài)的機(jī)制):setAttribute()作用域是一次會話
會話:一個會話就是瀏覽器和服務(wù)器之間的一次通話壹哺,會話可以在多次請求中保存和使用數(shù)據(jù)
session.getId()方法可以以獲得sessionId
session是單一用戶抄伍、多頁面可共享的。session保存在服務(wù)器端

會話的清除和過期時間

若沒有清理機(jī)制管宵,會導(dǎo)致性能問題或服務(wù)器崩潰

  • 程序主動清除session數(shù)據(jù)
  • 服務(wù)器主動清除長時間沒有再次發(fā)出請求的session

程序主動清除session數(shù)據(jù)

  • 設(shè)置會話失效:session.invalidate();
  • 一處會話的一個屬性
    public void removeAttrilbute(String name);
    用法:(跳轉(zhuǎn)后的頁面)
<a href="<%=basePath %>jsp/register.jsp">
注銷</a>
    <%  
        //設(shè)置session過期方法一
        session.setMaxInactiveInterval(10);
    }
    %>

       <%
                session.invalidate();//常用
                //session.removeAttribute("userName");
                response.sendRedirect(basePath+"/pages/loginOut.jsp");
                %>

session.removeAttribute("userName");


圖片.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末截珍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子啄糙,更是在濱河造成了極大的恐慌笛臣,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隧饼,死亡現(xiàn)場離奇詭異沈堡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)燕雁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門诞丽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拐格,你說我怎么就攤上這事僧免。” “怎么了捏浊?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵懂衩,是天一觀的道長。 經(jīng)常有香客問我金踪,道長浊洞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任胡岔,我火速辦了婚禮法希,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘靶瘸。我一直安慰自己苫亦,他們只是感情好毛肋,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屋剑,像睡著了一般润匙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饼丘,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天趁桃,我揣著相機(jī)與錄音辽话,去河邊找鬼肄鸽。 笑死,一個胖子當(dāng)著我的面吹牛油啤,可吹牛的內(nèi)容都是我干的典徘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼益咬,長吁一口氣:“原來是場噩夢啊……” “哼逮诲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幽告,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤梅鹦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冗锁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體齐唆,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年冻河,在試婚紗的時候發(fā)現(xiàn)自己被綠了箍邮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡叨叙,死狀恐怖锭弊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情擂错,我是刑警寧澤味滞,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站钮呀,受9級特大地震影響剑鞍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜行楞,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一攒暇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧子房,春花似錦形用、人聲如沸就轧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妒御。三九已至,卻和暖如春镇饺,著一層夾襖步出監(jiān)牢的瞬間乎莉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工奸笤, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留惋啃,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓监右,卻偏偏與公主長得像边灭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子健盒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

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

  • 父親節(jié)最早是1910年绒瘦,誕生在美國。由華盛頓一位叫多德的夫人想到扣癣,然后她給州政府寫信惰帽,每年六月份...
    筆落情生_4554閱讀 420評論 0 3
  • 一晃已經(jīng)13年過去了,13年前父虑,我還是個天真無憂的少女该酗,13年后的今天,我是鎮(zhèn)守一方频轿,云南穆府的郡主垂涯。可是航邢,13年...
    不成文女孩閱讀 1,115評論 0 1
  • 可能湖南這邊確實比廣西那邊又熱一些耕赘,可是冬天的時候我在廣西,我可以穿一條牛仔褲兒膳殷,在這里我我要穿三條加絨的褲子操骡,可...
    1大太陽閱讀 174評論 0 1