不要急,我与你一起学习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 内置对象之一的主要内容,如果未能解决你的问题,请参考以下文章