1. 程式人生 > >JSP-頁面跳轉相關(轉發、重定,會話以及cookie、application)

JSP-頁面跳轉相關(轉發、重定,會話以及cookie、application)

一.頁面跳轉的資料傳輸

示例程式碼

<form action="welcome.jsp" method="post">
        使用者名稱:<input type="text" name="username"></input>
        密碼:<input type="text" name="password"></input>
        <input type="checkbox" name="hobby" value="lanqiu"></input>籃球的
        <input type
=
"checkbox" name="hobby" value="zuqiu"></input>足球的 <input type="checkbox" name="hobby" value="paiqiu"></input>排球的 <input type="checkbox" name="hobby" value="ymaoqiu"></input>羽毛球的 <input type="submit" name="" value="提交"></input> </form>
welcome.jsp
<%
        String uname=request.getParameter("username");
        String upwd=request.getParameter("password");
        String[] zu=request.getParameterValues("hobby");

        out.print(uname+"<br/>");
        out.print(upwd+"<br/>");
        for(String s:zu){
            out
.print(s+"<br/>"); } %>

1.request(轉發)

轉發是伺服器行為 多用於查詢 是一次性請求 可以攜帶引數 URL不會改變

//轉發的引數傳遞
request.setAttribute("keyname", uname);
request.setAttribute("keypwd", upwd);
//轉發的跳轉語句
request.getRequestDispatcher("login.jsp").forward(request, response);
//在轉發跳轉後頁面獲取變數
    //通過html定義的id或name獲取
    String n1=request.getParameter("username");
    String p1=request.getParameter("password");
    //通過設定屬性值獲取
    String n2=(String)request.getAttribute("keyname");
    String p2=(String)request.getAttribute("keypwd");

2.resonse(重定向)

重定向是客戶端行為 多用於增刪改操作後的重新整理 是兩次請求 一般不用帶引數除非使用?拼接 跳轉後URL會改變
重定向拿不到一次請求的東西

//重定向的跳轉語句
response.sendRedirect("loginOk.jsp");

3.中文亂碼解決

方法一 在jsp檔案的body位置設定字元編碼

        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");

方法二 將文字內容打散成位元組資料 再按照編碼格式進行拼接

String n2=(String)request.getAttribute("keyname").getByte[].setCharacterEncoding("utf-8")

方法三 注意是URI不是URL 這個治本 apache-tomcat-7.0.47\conf下server.xml

>     <Connector port="8080" protocol="HTTP/1.1"
>                connectionTimeout="20000"
>                redirectPort="8443" URIEncoding="UTF-8"/>

二.session(會話)

只要是一個頁面跳轉就是一次回話
如果兩個視窗就是兩個回話了
session.setAttribute(“key”,值);
session.getAttribute(“key”);只要在一個回話內就可以拿到

三.cookie(快取)

Cookie,有時也用其複數形式 Cookies,指某些網站為了辨別使用者身份、進行 session 跟蹤而儲存在使用者本地終端上的資料(通常經過加密)。

//建立cookie物件
Cookie cookie = new Cookie(column_name,column);
respond.addCookie(cookie);

//獲取cookie物件
<%
Cookie[] cookie = request.getCookies();
  if(cookie != null && cookies.length>0){
  for(int i=0;i<cookies.length;i++);{
  if(cookies[i].getName().equals("column_name")){
column_name = URLDecoder.decode(cookies[i].getValue,"UTF-8");
}
}
}
%>

四.application

Application 物件用於儲存和訪問來自任何頁面的變數,類似於 session 物件。不同之處在於,所有的使用者分享一個 Application 物件,而 session 物件和使用者的關係是一一對應的。application物件儲存於專案之中,是伺服器i內建屬性,生命週期與伺服器一樣長。

<%
Interger count = 0;
Object object = application.getAttribute("count");
if(object==null){
count=1;
}else{
count = (Interger)object;
count++;
}

application.setAttribute("count",count);
out.print(count);
%>