不要急,我与你一起学习JSP——JSP 内置对象之一

Posted 神密者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不要急,我与你一起学习JSP——JSP 内置对象之一相关的知识,希望对你有一定的参考价值。

这两年没有写,因为工作上的事比较多,所以最后给忘记了。大家对不起,我这又回来了。现在,我要开始继续写。其实,这一节的内容,我一直放到我的草稿箱中,已经快变酸啦。。。


这次介绍得是 JSP 的内置对象。他们就是 Request 及 Response。了解 ASP、.net 的同学,一定知道这两个对象。我们经常用 Request 来向一个而且 发出信息。可能没有编写过这两种程序的同学一定非常晕。照旧,我会从头给大家详细说明,请听下面分解:


一、Request 接收信息与 Response 提供信息

Request 与 Response 对象是 JSP 中最常用的两个对象。他们一般合起来实现动态网站的交互功能。


(一)Request 接收信息

1、说明:

Request 中文意思大家一定很明白,那就是“请求”。一般指,用户向Web 服务器提出请求时,Web 服务器响应该请求,所作出的回应。我们给 Request 下一个定义:

 

Request 对象用于和到用户提交的信息。


这个信息,一般当见得就是通过 html 的 Form 语句来进行的。比如:

<from medth="post" action="URL页面">...</from>

而这个 Request 就放置在那个 URL 页面中,来接收 Form 表单中的信息。


2、方法:

Request 对象中包含了许多方法来处理客户端提交的请求信息。我把常用的给列一下。大家开发时可以当字典查看:

(1)getAttribute()

这个方法用来返回指定的属性值。若此属性不存在,则返回 null。语法格式如下:

request.getAttribute(String str)

 

(2)getAttributeNames()

这个方法用于返回 Request 对象中所有属性的名称。看到后面的“s”了吗?说明不指一个,所以返回的是一个枚举类型的对象。一般用 foreach 进行遍历。语法格式如下:

request.getAttributeNames()

 

(3)getContentLength()

这个吗。。。是用于获取客户端提交的所有信息的总长度,语法格式如下:

request.getContentLength()


(4)getCookies()

这个方法获得客户端面的 Cookie 对象。如同 getAttributeNames() 方法那样,也是一串结果,但是返回得是数组,却不是枚举类型对象。说实话,我感觉 Java 的开发人员有点得瑟。为什么不统一一下。语法格式如下:

request.getCookies()

(5)getHeader()

这个不用说了,一看 Header 就知道要取 HTTP 中指定的头名称了。它的语法格式如下:

request.getHeader(String str)

参数中的 str 是让程序员自己写出指定的头名值,而不是说那个变量是返回值。

 

(6)getHeaders()

看到这个,大家一定想说,又来了。但有一点不一样,那就是,他返回得是指定的头名称的所有值。一个头名称的所有值,不止一个。这个好在返回得是杖举类型的对象。语法格式如下:

request.getHeaders(String str)

(7)getHeaderNames()

这个方法获得 request 的头中属性的名字。返回一个枚举类型的对象。语法格式如下:

request.getHeaderNames()

(8)getMedthod()

这里是获得 Request 的方法。这些方法是页面或程序文件互相全传值的 method 方法。就像 HTML 表单中的 Form 内的 Medth 属性。因而,这里只有两个值:get 或 post。语法格式如下:

request.getMedthod()

这个参数一般用于在一些需要较高安全时,用于分析是否是用 post 传值。因为,用 post 来传值,是加密隐藏的。

 

(9)getParameter()

这个方法获得指定名称的客户端提交的参数值,语法格式如下:

request.getParameter(String str)
这个参数是我们在写程序时,常要用到的。就是用于页面间传值时。我们已经从以前的例子中看到了。只要有关页面间的传递,几乎都是用它来接收的。

 

(10)getParameterNames

获得客户端提交的参数名称,返回值是一个枚举类型对象,语法格式如下:

request.getParameterNames()

 

(11)getParameterValues()

这个方法用于获得指定的客户端提交的参数的值,调用的语法如下:

request.getParameterValues(String str)


(12)getProtocol()

此方法用于得到客户端向服务器发送请求数据的协议名称。格式如下:

request.getProtocol()

 

(13)getQueryString()

这个方法用于得到查询字符串,这个字符串就是客户端以 get 方式传送,或是直接加在地址上的参数方法。反正两者之形式,都是一样一样地。比如,样式是:

http://www.123.com/index.jsp?id=10&user=John

这里,我们可以看到,http://www.123.com/index.jsp,是一个URL。而在后面的“?”,用于告诉服务器,后面有参数,什么参数,你先猜。服务器当然猜不到了。所以就看后面的信息,才明白,一个参数是 id,它的值是 10。还有一个参数是 user,它的值是 John。这里的“&”是真连接符,用于在参数之间进行连接。

这个方法的格式如下:

request.getQueryString()


14、getRequestURI()

这个方法比较简单,就是获得发送请求信息的那个客户端地址。语法格式如下:

request.getRequestURI()


15、getRemoteAddr()

这个方法是得到客户端的IP地址。调用语法如下:

request.getRemoteAddr()


16、getRemoteHost()

上面的 getRemoteAddr(),因为有个 Addr,所以是地址。那这个呢?因为有个 Host,那一定是得到客户端的机器名称。但是,有可能你得不到。如果得不到,JSP规定那就用客户端的 IP 来代替。格式如下:

request.getRemoteHost()


17、getServerName()

此方法得到服务器的机器名。这个应该没问题了。格式如下:

request.getServerName()


18、getServletPath()

这个方法是用于返回客户端请求的页面文件目录。语法格式如下:

request.getServletPath()


19、getServerPort()

这个方法将得到服务器端提供 HTTP 服务的端口号。因为,HTTP 服务的端口号不一定全是 80,有可能是 8080,比如我这台机子的 GlassFish 就是 8080。格式如下:

request.getServerPort()


 

3、举个例子

下面介绍一些上面的参数。给大家理解一下。我就选几个软柿子捏捏。其实,大家记不住也没关系。因为这些是在工作中常用。开始时可能要查一下。写一两次,就熟悉了。这里只是让大家在大脑中有个印象。不知道是否有真去背的!


我的代码如下(我只找找软柿子):

<body>
 <%
    out.print("request.getParameter 收到的参数:" + request.getParameter("a") + "<br />");
    out.println("request.getContentLength 用户提供的数据长度:" + request.getContentLength() + "<br />");
    out.println("request.getMethod() 用户传参的方式:" + request.getMethod() + "<br />");
    out.println("request.getProtocol() 获取传输协议:" + request.getProtocol() + "<br />");
    out.println("request.getServerName() 获取服务器名称:" + request.getServerName() + "<br />");
    out.println("request.getServerPort() 获取服务器端口:" + request.getServerPort() + "<br />");
    out.println("request.getServletPath() 获取文件目录:" + request.getServletPath() + "<br />");
    out.println("request.getServletPath() 获取文件目录:" + request.getServletPath() + "<br />");
    out.println("request.getRemoteAddr() 获取客户端IP:" + request.getRemoteAddr() + "<br />");
    out.println("request.getRemoteHost() 获取客户端机器名称:" + request.getRemoteHost() + "<br />");
 %>
</body>


所得结果请大家对照每一行来看吧!


大家可以看到我画箭头的地方,我的参数是 “a”,而其变量是 “哈哈”。所以呢,这个数据就被 request.getParameter("a") 所获取了。其实,多数时间,页面与页面传递参数都是这样来的。所以,这个是大家要理解的重点。好像这么多,就这个比较重点。


好了,时间太晚了,我就要休息去鸟。。。



以上是关于不要急,我与你一起学习JSP——JSP 内置对象之一的主要内容,如果未能解决你的问题,请参考以下文章

不要急,我与你一起学习JSP——JSP 目录结构简介

不要急,我与你一起学习JSP——JSP的基本概述

不要急,我与你一起学习JSP——JSP的基础语法

不要急,我与你一起学习JSP——JSP的基础语法

不要急,我与你一起学习JSP——平台搭建,让你眼前一亮

jsp九大内置对象之session和application