想飛就別怕摔

          大爺?shù)牟M罵人

          j2ee基礎(chǔ)知識(shí)(一)【request&response】

          request    response    pageContext    session    application    out    config    page    exception

          JSP中屬性的保存范圍:

          ★在JSP中可以采用下面方法來(lái)設(shè)置和取得屬性:
              →    設(shè)置屬性:public abstract void setAttribute(java.lang.String.name,java.lang.Object.atrribute)
              →    去的屬性:public abstract java.lang.Object getAttribute(java.lang.String.name)
          ★在JSP中提供了四種屬性保存范圍:
              →    在一個(gè)頁(yè)面范圍內(nèi):page
          在JSP中設(shè)置一個(gè)頁(yè)面屬性范圍,必須通過(guò)pageContext完成。pageContext屬性范圍:是最為重要的JSP 屬性之一,但是如果使用純粹的JSP代碼開(kāi)發(fā),此屬性顯現(xiàn)不出作用。在struts等就極其重要;
              →    在一次服務(wù)器請(qǐng)求范圍內(nèi):request
          request保存在一次請(qǐng)求范圍之內(nèi)前提:必須使用服務(wù)器端跳轉(zhuǎn)<jsp:forward/>
              →    在一次會(huì)話范圍內(nèi):session
          設(shè)置了Session保存范圍后不管什么跳轉(zhuǎn),都可以取得屬性。session的主要功能是驗(yàn)證用戶是否登陸。
              →    在一個(gè)應(yīng)用服務(wù)器范圍內(nèi):application
          application屬性范圍值,只要設(shè)置一次,則說(shuō)有的網(wǎng)頁(yè)窗口都可以取得數(shù)據(jù),主要用于在線人員統(tǒng)計(jì)。

          application、request、session→都需要跨多個(gè)頁(yè),屬性保存是有開(kāi)銷的,過(guò)多的application和session會(huì)導(dǎo)致性能下降,所以能使用request就不要使用session,能使用session就不要使用application。如果釋放application只能重新啟動(dòng)服務(wù)器。

          ■頁(yè)面的中文亂碼問(wèn)題:
          1、頁(yè)面顯示的亂碼處理:<%@page context="test/html,charset=gbk"%>
          2、頁(yè)面?zhèn)鬟f的亂碼處理:①對(duì)所有的數(shù)據(jù)進(jìn)行在編碼:ISO8859-1
                                                        ②設(shè)置同意字符編碼
          如:

          <%@page contentType="text/html,charset=gbk"%>
          <HTML>
           
          <HEAD>
            
          <TITLE></TITLE>
           
          </HEAD>
           
          <BODY>
              //方法一:
            
          <%
              
          String name = request.getParameter("username");
              
          byte[]b = name.getBytes("ISO8859-1");
              name 
          = new String(b);
            
          %>
            方法一可寫(xiě)為:
            
          <%
              
          String name = new String(request.getParameter("username").getBytes("ISO8859-1"));
            
          %>
            //方法二:
            
          <%
              request.setCharacterEncoding(
          "GBK");
              
          String name = request.getParameter("username");
            
          %>
            
          <h1>輸入內(nèi)容為:<%=name%></h1>
           
          </BODY>
          </HTML>

          ■如果傳遞的內(nèi)容是數(shù)組(復(fù)選框、多個(gè)下拉列表)使用request的一下方法取得數(shù)據(jù)
          例:

          <html>
          <body>
              
          <form action="demo08.jsp" method="post">
                  用戶名:
          <input type="text" name="uname"><br>
                  密碼:
          <input type="password" name="upass"><br>
                  興趣:
                  
          <input type="checkbox" name="**inst" value="籃球">籃球
                  
          <input type="checkbox" name="**inst" value="游泳">游泳
                  
          <input type="checkbox" name="**inst" value="唱歌">唱歌
                  
          <input type="checkbox" name="**inst" value="跳舞">跳舞
                  
          <input type="checkbox" name="**inst" value="看書(shū)">看書(shū)
                  
          <br>
                  
          <input type="submit" value="提交">
              
          </form>
          </body>
          </html>

          使用request.getParameterNames()方法取得數(shù)據(jù)

          <%@ page contentType="text/html;charset=gbk"%>
          <%@ page import="java.util.*"%>
          <html>
          <body>
          <%
              
          // 接收內(nèi)容
              request.setCharacterEncoding(
          "GBK") ;
              Enumeration enu 
          = request.getParameterNames() ;
          %>
          <%
              
          while(enu.hasMoreElements())
              {
                  
          String name = (String)enu.nextElement() ;
                  
          if(name.startsWith("**"))
                  {
                      
          String temp[] = request.getParameterValues(name) ;
          %>
                      
          <h1><%=name%> -->
          <%
                      
          for(int i=0;i<temp.length;i++)
                      {
          %>
                          
          <%=temp[i]%>
          <%
                      }
          %>
                      
          </h1>
          <%
                  }
                  
          else
                  {
          %>
                      
          <h1><%=name%> --> <%=request.getParameter(name)%></h1>
          <%
                  }
              }
          %>
          </h1>
          </body>
          </html>

          用request.getParamaterValues()方法取得數(shù)據(jù)

          <%@ page contentType="text/html;charset=gbk"%>
          <html>
          <body>
          <%
              request.setCharacterEncoding(
          "gbk");
              
          String name = request.getParameter("uname");
              
          String inst[] = request.getParameterValues("inst");
          %>
          <h1>用戶名為:<%=name%></h1>
          <h1>興趣為:
          <%
              
          for(int i=0;i<inst.length;i++)
              {
          %>
              
          <%=inst[i]%>
          <%
              }
          %>
          </h1>
          </body>
          </html>

          ■向服務(wù)器傳值還可以使用隱藏域<input type="hidden" name="name" value="aaa">;
            還可以使用地址重寫(xiě)傳遞數(shù)據(jù)到服務(wù)器端。
          ■取得客戶端的IP地址:<%=request.getRemoteAddr()%>

          ★response的主要功能:
          1、最有用用的一個(gè)頭信息:refresh:刷新
          例:

          <%@page contentType="text/html;charset=gb2312"%>
          <%!
              
          // 此處為全局變量,初始化一次
              
          int i = 0 ;
          %>
          <%
              
          // 一秒種刷新一次,每次使i自增
              response.setHeader(
          "refresh","2;URL=responseDemo02.jsp") ;
          %>
          <h1><%=i++%></h1>
          兩秒后跳轉(zhuǎn)到歡迎頁(yè)!!!
          <br>
          如果沒(méi)有跳轉(zhuǎn),請(qǐng)按
          <href="responseDemo02.jsp">這里</a>!!!

          2、response跳轉(zhuǎn)與forward跳轉(zhuǎn)
          ①<jsp:forward page=""/>
              ■    地址欄不改變跳轉(zhuǎn)----服務(wù)器端跳轉(zhuǎn)
              ■    執(zhí)行跳轉(zhuǎn)語(yǔ)句后無(wú)條件立即跳轉(zhuǎn)----之后的代碼不再被執(zhí)行
              ■    使用forward時(shí),request設(shè)置的屬性依然能保留在下一個(gè)頁(yè)面(setAttrbute)
              ■    通過(guò)<jsp:param name="" value=""/>傳遞參數(shù)
          ②response.sendRedirect("地址")
              ■    地址欄改變跳轉(zhuǎn)----客戶端跳轉(zhuǎn)
              ■    所有代碼執(zhí)行完畢后跳轉(zhuǎn)
              ■    不能保存request屬性,地址欄改變
              ■    通過(guò)URL地址的重寫(xiě)傳遞參數(shù)
          3、設(shè)置cookie,cookie是服務(wù)器端保存在客戶端的一組資源,例如登錄時(shí)會(huì)問(wèn)你是否記住密碼等等。此功能的實(shí)現(xiàn)就是通過(guò)cookie。
          例:

          <%
              Cookie c1 
          = new Cookie("name","mldn") ;
              Cookie c2 
          = new Cookie("password","LXH") ;

              
          // 保存時(shí)間為60秒
              c1.setMaxAge(
          60) ;
              c2.setMaxAge(
          60) ;
          %>
          <%
              
          // 通過(guò)response對(duì)象將Cookie設(shè)置到客戶端
              response.addCookie(c1) ;
              response.addCookie(c2) ;
          %>

           

          <%
              
          // 通過(guò)request對(duì)象,取得客戶端設(shè)置的全部Cookie
              
          // 實(shí)際上客戶端的Cookie是通過(guò)HTTP頭信息發(fā)送到服務(wù)器端上的
              Cookie c[] 
          = request.getCookies() ;
          %>
          <%
              
          for(int i=0;i<c.length;i++)
              {
                  Cookie temp 
          = c[i] ;
          %>
                  
          <h1><%=temp.getName()%> --> <%=temp.getValue()%></h1>
          <%
              }
          %>

          cookie默認(rèn)只對(duì)當(dāng)前瀏覽器有效,如果長(zhǎng)留要設(shè)置cookie的保存時(shí)間

          ■session對(duì)象
              -session對(duì)象主要用于保存用戶的各種信息,知道他的生命周期(一般為900S)超時(shí)或被人為地釋放掉為止。
              -可以通過(guò)session對(duì)象來(lái)判斷此用戶是否是合法用戶。
          1、在服務(wù)器上通過(guò)session來(lái)區(qū)分每一個(gè)用戶,用戶只要已連接服務(wù)器,則立刻分配一個(gè)session給用戶。
          2、Session的主要方法:
              ■    服務(wù)器上通過(guò)Session來(lái)區(qū)分用戶(SessionID):任何鏈接到服務(wù)器上的用戶,服務(wù)器都會(huì)為之分配一個(gè)
                    唯一的SessionID,sessionID由服務(wù)器同意管理,人為不能控制。
              ■    獲得sessionID的方法,session.getId();,session的長(zhǎng)度為32位。
              ■    通過(guò)session可以驗(yàn)證用戶是否登陸
              ■    判斷當(dāng)前的session是否是新建立的session方法:session.isNew();
              ■    session的屬性設(shè)置:
                    設(shè)置屬性:public void setAttribute(Stirng name,Object value)
                    取得屬性:public void getAttribute(String name)
                    刪除屬性:public void removeAttrbute(String name)
              ■    讓session失效,也就是通常用的用戶注銷
                    手動(dòng)注銷:public void invalidate()
                    自動(dòng)注銷:session長(zhǎng)時(shí)間不被使用則自動(dòng)會(huì)注銷
              ■    得到session的創(chuàng)建時(shí)間:public long getCreationTime();此方法返回long類型,通過(guò)Date類可以取得一個(gè)完整的
                     時(shí)間。
              ■    取得用戶最后一次的操作時(shí)間:public long getLastAccessedTime()

          posted on 2008-12-19 10:58 生命的綻放 閱讀(1100) 評(píng)論(0)  編輯  收藏 所屬分類: S2SH

          <2008年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(5)

          隨筆分類(94)

          隨筆檔案(93)

          文章分類(5)

          文章檔案(5)

          相冊(cè)

          JAVA之橋

          SQL之音

          兄弟之窗

          常用工具下載

          積分與排名

          最新評(píng)論

          閱讀排行榜

          主站蜘蛛池模板: 祁连县| 康马县| 泗阳县| 南京市| 澎湖县| 泰宁县| 汽车| 康平县| 丰原市| 东丽区| 大姚县| 台北市| 乌拉特前旗| 徐水县| 沂南县| 通化市| 瓮安县| 大冶市| 图片| 大英县| 龙山县| 富顺县| 南靖县| 平谷区| 千阳县| 胶州市| 霍城县| 志丹县| 招远市| 喀什市| 武宣县| 康平县| 京山县| 丰县| 雷州市| 泾阳县| 兰州市| 富锦市| 宣恩县| 姚安县| 墨玉县|