zoukankan      html  css  js  c++  java
  • 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=" 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=" 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
  • 相关阅读:
    MYSQL导入,导出命令。
    MySQL修改,表结构大幅修改
    Ajax
    js和jQuery的日常
    freemarker 分页取值
    Timer定时任务
    汉字相似度比较
    读取Properties键值对
    Python+requests+unittest+excel实现接口自动化测试框架
    Android App 压力测试方法(Monkey)
  • 原文地址:https://www.cnblogs.com/wuyudong/p/jsp-request.html
Copyright © 2011-2022 走看看