果冻想
认真玩技术的地方

JSP内置对象——request对象

简述request对象

内置request对象是javax.servlet.ServletRequest类的实例,代表客户端发起的请求;这是一个非常重要的对象。在B/S架构中,客户端一般都是浏览器,用户通过浏览器向服务器发送请求,从而达到访问服务器的目的。而浏览器具体怎么访问服务器,得到自己需要的数据呢?这个过程复杂的去了,大体上分为以下三步:

  1. 用户通过浏览器发送request;
  2. 服务器处理request;
  3. 将response传给客户端,由浏览器渲染显示。

这三大步,每一步分开总结都能成一篇文章;而这里只是对JSP中的内置request对象进行扫盲性总结。用户通过浏览器发送请求,浏览器会将请求信息都包装在一个请求中,发送给服务器端;服务器得到这个请求以后,会从这个请求从得到所有的请求信息,将这些请求信息封装成一个request对象,也就是JSP中内置的这个request对象。也就是说,这个request对象是对客户请求数据的封装,那么这个request对象到底封装了哪些数据呢?

request到底有哪些数据?

对于一个请求中的数据主要分为两部分:

  • 请求头,这部分数据通常由浏览器自动添加;
  • 请求参数,这部分由用户自己在页面上添加;

下面通过一个最简单的页面来输出所有的请求头数据。一个最简单的HTML页面,给服务器发送一个不带任何请求参数的请求,到达服务器以后,服务器将所有的请求头数据返回客户端输出。

index.html主要代码:

<body>
    <form action="page1.jsp">
        <input type="submit" value="获取请求头参数" />
    </form>
</body>

page1.jsp主要代码:

<body>
    <%
    // 获得所有的请求头
    Enumeration<String> headerNames = request.getHeaderNames();
    while (headerNames.hasMoreElements())
    {
        String headerName = headerNames.nextElement();

        // 获得请求头对应的参数
        out.println("[" + headerName + "] => [" + request.getHeader(headerName) + "]<br />");
    }
    %>
</body>    

客户端向服务器发送的每一次请求都会把上述输出的请求头带上。而光有这些请求头数据,对于服务器来说用处不大,而我们需要收集用户的真正需求。

对于百度首页的那个搜索框来说,那只是一个简单的表单,用来收集用户的搜索信息,一旦用户提交了请求,表单里输入的搜索信息就会提交给百度的后台处理程序。此时你输入的搜索信息就是请求参数,对于服务器来说,这个请求参数才是我们需要的,下面就通过一个简单的程序来获取用户提交的请求参数。

index.html主要代码:

<body>
    <form action="page1.jsp" method="get">
        <input type="text" name="search" />
        <input type="submit" value="百度一下" />
    </form>
</body>

page1.jsp主要代码:

<%
// 获得输入的搜索字符串
out.println("你搜索的内容为:");
out.println(request.getParameter("search"));
%>

我们可以通过调用内置request对象的getParameter函数获取用户输入的信息,从而再完成其它一些功能。关于表单form中的method,有GETPOST两种,关于二者的区别请参见这篇文章《详解HTTP中GET和POST的区别》。

request的属性

对于内置的request对象,也提供了以下两个函数:

  • setAttribute(String attrName, Object value); 设置本次请求关联的属性值
  • getAttribute(String attrName); 取本次请求关联属性值

具体使用方法请参见《JSP内置对象——application对象》这篇文章中关于内置application对象属性的用法。

总结

只要进行Web应用的开发,不管是PHP、PYTHON和C#等,你都无法避开request这个概念。抛开语言层面的东西,我们需要理解的是request这个概念。在这里推荐一篇好文《一次完整的HTTP事务是怎样一个过程?》。

果冻想-一个原创技术文章分享网站。

2015年11月09日 于呼和浩特。

未经允许不得转载:果冻想 » JSP内置对象——request对象
网站维护离不开您的支持,您可以赞助本站,谢谢支持
×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

赞助本站
关注微信公众号
关注微信公众号和果冻一起分享你的疑惑与心得。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

玩技术,我们是认真的

联系我们关于果冻