内置request
对象是javax.servlet.ServletRequest
类的实例,代表客户端发起的请求;这是一个非常重要的对象。在B/S架构中,客户端一般都是浏览器,用户通过浏览器向服务器发送请求,从而达到访问服务器的目的。而浏览器具体怎么访问服务器,得到自己需要的数据呢?这个过程复杂的去了,大体上分为以下三步:
这三大步,每一步分开总结都能成一篇文章;而这里只是对JSP中的内置request
对象进行扫盲性总结。用户通过浏览器发送请求,浏览器会将请求信息都包装在一个请求中,发送给服务器端;服务器得到这个请求以后,会从这个请求从得到所有的请求信息,将这些请求信息封装成一个request对象,也就是JSP中内置的这个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,有GET
和POST
两种,关于二者的区别请参见这篇文章《详解HTTP中GET和POST的区别》。
对于内置的request
对象,也提供了以下两个函数:
具体使用方法请参见《JSP内置对象——application对象》这篇文章中关于内置application
对象属性的用法。
只要进行Web应用的开发,不管是PHP、Python和C#等,你都无法避开request这个概念。抛开语言层面的东西,我们需要理解的是request这个概念。在这里推荐一篇好文《一次完整的HTTP事务是怎样一个过程?》。
果冻想-一个原创技术文章分享网站。
2015年11月09日 于呼和浩特。
未经允许不得转载:果冻想 » JSP内置对象——request对象