JSP內置對象--request對象


本文主要介紹JSP中的request對象

request對象的主要方法:

setAttribute(String name,Object):設置名字為name的request的參數值

getAttribute(String name):返回由name指定的屬性值

getAttributeNames():返回request對象所有屬性的名字集合,結果是一個枚舉的實例

getCookies():返回客戶端的所有Cookie對象,結果是一個Cookie數組

getCharacterEncoding():返回請求中的字符編碼方式

getContentLength():返回請求的Body的長度

getHeader(String name):獲得HTTP協議定義的文件頭信息

getHeaders(String name):返回指定名字的request Header的所有值,結果是一個枚舉的實例

getHeaderNames():返回所以request Header的名字,結果是一個枚舉的實例

getInputStream():返回請求的輸入流,用於獲得請求中的數據

getMethod():獲得客戶端向服務器端傳送數據的方法

getParameter(String name):獲得客戶端傳送給服務器端的有name指定的參數值

getParameterNames():獲得客戶端傳送給服務器端的所有參數的名字,結果是一個枚舉的實例

getParameterValues(String name):獲得有name指定的參數的所有值

getProtocol():獲取客戶端向服務器端傳送數據所依據的協議名稱

getQueryString():獲得查詢字符串

getRequestURI():獲取發出請求字符串的客戶端地址

getRemoteAddr():獲取客戶端的IP地址

getRemoteHost():獲取客戶端的名字

getSession([Boolean create]):返回和請求相關Session

getServerName():獲取服務器的名字

getServletPath():獲取客戶端所請求的腳本文件的路徑

getServerPort():獲取服務器的端口號

removeAttribute(String name):刪除請求中的一個屬性

1、獲取請求參數值

在一個請求中,可以通過使用"?"的方式來傳遞參數,然后通過request對象的getParameter()方法來獲取參數的值

例如:

String id = request.getParameter("id");

實戰一下:

在index.jsp中加入下面代碼:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <a href="show.jsp?id=001">獲取請求參數的值</a>
</body>
</html>
index.jsp

show.jsp中的代碼:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    id的參數值為:
    <%=request.getParameter("id")%><br> name的參數值為:<%=request.getParameter("name")%>
</body>
</html>
show.jsp

運行結果:

id的參數值為: 001
name的參數值為:null

亂碼問題:

如果將上面的001改為中文,會出現亂碼。

實戰一下:

index.jsp

<%@page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@page import="java.net.URLEncoder" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <a href="show.jsp?name=<%=URLEncoder.encode("工學1號館") %>&sex=<%=URLEncoder.encode("") %>">解決中文亂碼</a>
</body>
</html>

show.jsp

<body>
    name參數的值為:
    <%=new String(request.getParameter("name").getBytes("iso-8859-1"),"gbk")%>
    sex參數的值為:<%=request.getParameter("sex")%>
</body>

可以看到,name值正常顯示,sex值出現亂碼

2、獲取Form表單的信息

對於文本元素、單選按鈕、下拉列表框都可以使用getParamer()方法獲取其具體值

對於復選框以及多選列表框被選定的內容就要使用getParameterValue()方法來獲取,給方法返回一個字符串數組,通過循環遍歷這個數組就可以得到用戶選定的具體內容

實戰一下:

index.jsp

該頁面創建一個form表單

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
<%@page import="java.net.URLEncoder" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>'index.jsp'</title>
  </head>
  
<body>
<form action="show.jsp" method="post">
    <ul style="list-style: none; line-height: 30px">
        <li>
            輸入用戶姓名:
            <input type="text" name="name" />
            <br />
        </li>
        <li>
            選擇性別:
            <input name="sex" type="radio" value="男" /><input name="sex" type="radio" value="女" /></li>
        <li>
            選擇密碼提示問題:
            <select name="question">
                <option value="母親生日">
                    母親生日
                </option>
                <option value="寵物名稱">
                    寵物名稱
                </option>
                <option value="電腦配置">
                    電腦配置
                </option>
            </select>
        </li>
        <li>
            請輸入問題答案:
            <input type="text" name="key" />
        </li>
        <li>
            請選擇個人愛好:
            <div style="width: 400px">
                <input name="like" type="checkbox" value="唱歌跳舞" />
                唱歌跳舞
                <input name="like" type="checkbox" value="上網沖浪" />
                上網沖浪
                <input name="like" type="checkbox" value="戶外登山" />
                戶外登山
                <br />
                <input name="like" type="checkbox" value="體育運動" />
                體育運動
                <input name="like" type="checkbox" value="讀書看報" />
                讀書看報
                <input name="like" type="checkbox" value="欣賞電影" />
                欣賞電影
            </div>
        </li>
        <li>
            <input type="submit" value="提交" />
        </li>
    </ul>
</form>
</body>
</html>
index.jsp

show.jsp頁面

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>'show.jsp'</title>
  </head>
  
  <body>
    <ul style="list-style:none; line-height:30px">
        <li>輸入用戶姓名:<%=new String(request.getParameter("name").getBytes("ISO8859_1"),"GBK") %></li>
          <li>選擇性別:<%=new String(request.getParameter("sex").getBytes("ISO8859_1"),"GBK") %></li>
        <li>選擇密碼提示問題:<%=new String(request.getParameter("question").getBytes("ISO8859_1"),"GBK") %></li>
        <li>
            請輸入問題答案:<%=new String(request.getParameter("key").getBytes("ISO8859_1"),"GBK") %>
        </li>
        <li>
            請選擇個人愛好:
            <% 
                String[] like =request.getParameterValues("like");
                for(int i =0;i<like.length;i++){
            %>
            <%= new String(like[i].getBytes("ISO8859_1"),"GBK")+"&nbsp;&nbsp;" %>
            <%
                }
            %>
        </li>
    </ul>
  </body>
</html>
show.jsp

3、獲取請求客戶端信息

<html>
  <head>
    <title>'index.jsp'</title>
  </head>
  <body>
    <div style="width: 600px">
    <ul style="line-height:24px">
          <li>客戶使用的協議:<%=request.getProtocol() %>
          <li>客戶端發送請求的方法:<%=request.getMethod() %>
          <li>客戶端請求路徑:<%=request.getContextPath() %>
          <li>客戶機IP地址:<%=request.getRemoteAddr() %>
          <li>客戶機名稱:<%=request.getRemoteHost() %>
          <li>客戶機請求端口號:<%=request.getRemotePort() %>
          <li>接愛客戶信息的頁面:<%=request.getServletPath() %>
          <li>獲取報頭中User-Agent值:<%=request.getHeader("user-agent") %>
          <li>獲取報頭中accept值:<%=request.getHeader("accept") %>
          <li>獲取報頭中Host值:<%=request.getHeader("host") %>
          <li>獲取報頭中accept-encoding值:<%=request.getHeader("accept-encoding") %>
          <li>獲取URI:<%= request.getRequestURI() %>
          <li>獲取URL:<%=request.getRequestURL() %>
      </ul>
    </div>
  </body>
</html>

運行結果如下:

  • 客戶使用的協議:HTTP/1.1
  • 客戶端發送請求的方法:GET
  • 客戶端請求路徑:/3.01
  • 客戶機IP地址:0:0:0:0:0:0:0:1
  • 客戶機名稱:0:0:0:0:0:0:0:1
  • 客戶機請求端口號:4777
  • 接愛客戶信息的頁面:/index.jsp
  • 獲取報頭中User-Agent值:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
  • 獲取報頭中accept值:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  • 獲取報頭中Host值:localhost:8080
  • 獲取報頭中accept-encoding值:gzip, deflate, sdch
  • 獲取URI:/3.01/index.jsp
  • 獲取URL:http://localhost:8080/3.01/index.jsp

4、cookie管理

cookie的getCookies()方法可以獲取到所有的cookie對象集合

然后通過getName和getValue方法分別獲取名稱和值

index.jsp

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>'index.jsp'</title>
</head>
<body>
    <%
        String welcome = "第一次訪問";
        String[] info = new String[] { "", "", "" };
        Cookie[] cook = request.getCookies();
        if (cook != null) {
            for (int i = 0; i < cook.length; i++) {
                if (cook[i].getName().equals("mrCookInfo")) {
                    info = cook[i].getValue().split("#");
                    welcome = ", 歡迎回來! ";
                }
            }
        }
    %>
    <%=info[0] + welcome%>
    <form action="show.jsp" method="post"></form>
    <ul>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;名: <input name="name" type="text"
            value="<%=info[0]%>">
        <li>出生日期: <input name="birthday" type="text" value="<%=info[1]%>">
        <li>郵箱地址: <input name="mail" type="text" value="<%=info[2]%>">
        <li><input type="submit" value="提交">
    </ul>
 
 
 
</body>
</html>
index.jsp

show.jsp

<body>
    <%
        String name = request.getParameter("name");
        String birthday = request.getParameter("birthday");
        String mail = request.getParameter("mail");
        Cookie cook = new Cookie("mrCookInfo", name + "#" + birthday + "#"
                + mail);
        cook.setMaxAge(60 * 60 * 24 * 365);//設置cookie的有效期
        response.addCookie(cook);
    %>
    表單提交成功
    <ul>
        <li>姓名: <%=name%>
        <li>出生日期: <%=birthday%>
        <li>電子郵箱: <%=mail%>
        <li><a href="index.jsp">返回</a>
    </ul>
</body>
show.jsp

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM