JSP内置对象

Posted 天亮yǐ后

tags:

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

JSP内置对象

JSP提供了由容器实现和管理的内置对象,也可以称之为隐含对象,由于JSP使用Java作为脚本语言,所以JSP将具有强大的对象处理能力,并且可以动态创建Web页面内容。但Java语法在使用一个对象前,需要先实例化这个对象。JSP为了简化开发,提供了一些内置对象,用来实现很多JSP应用。在使用JSP内置对象时,不需要先定义这些对象,直接使用即可。

技术图片

1、request对象

  通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。

技术图片

1.1 访问请求参数

示例:编程学员注册功能。要求提交注册信息后,显示学员输入的数据,注册提交页面。

    request.setCharacterEncoding("UTF-8");          //设置请求编码
    String name = request.getParameter("name");     //获取用户名
    String blog = request.getParameter("blog");     //获取博客地址
    String remark = request.getParameter("remark"); //获取备注信息

1.2 在作用域中管理属性

在进行请求转发时,需要把一些数据传递到转发后的页面进行处理。这时,就需要使用request对象的setAttribute()方法将数据保存到request范围内的变量中。request对象的setAttribute()方法的语法格式如下:

request.setAttribute(String name,Object object);

在将数据保存到request范围内的变量中后,可以通过request对象的getAttribute()方法获取该变量的值,具体的语法格式如下:

request.getAttribute(String name);

1.3 获取cookie

  cookie是小段的文本信息,在网络服务器上生成,并发送给浏览器的。通过使用cookie可以标识用户身份,记录用户名和密码,跟踪重复用户等。浏览器将cookie以key/value的形式保存到客户机的某个指定目录中。

  通过cookie对象的getName()方法可以获取到指定名称的cookie;通过getValue()方法即可获取到cookie对象的值。另外将一个cookie对象发送到客户端使用了response对象的addCookie()方法。

  request.setCharacterEncoding("UTF-8");  //设置请求的编码
  Cookie cookie = new Cookie("userCookie","您好,欢迎访问!");  
  创建并实例化cookie对象
  cookie.setMaxAge(60*60*24*7);  //设置cookie有效期为7天
  response.addCookie(cookie);  //保存cookie对象

  通过cookie的getCookies()方法即可获取到所有cookie对象的集合;

  Cookie[] cookies = request.getCookies(); //从request中获取cookie对象的集合
  if(cookies != null)
    {
        //遍历cookie对象集合
        for(Cookie cookieItem : cookies)
        {
            if(cookieItem.getName().equals("userCookie"))
            {
                 user = cookieItem.getValue();  //读取cookie对象的的值
          out.println(user); } } }

1.5 获取客户端信息

通过request对象可以获取客户端的相关信息,如HTTP报头信息,客户信息提交方式、客户端主机IP地址、端口号等。

request获取客户端信息的常用方法:

技术图片


2、response对象

  response对象用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。

  请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面内有效。

方法说明
sendRedirect(String path) 将网页重定向到另一个页面。
setHeader(String name, String value) 设置HTTP响应报头信息。

2.1 重定向网页

  使用sendRedirect()方法可以将网页重定向到另一个页面。重定向操作支持将地址重定向到不同的主机上,这一点与转发不同。在客户端浏览器上将会得到跳转的地址,并重新发送请求链接。用户可以从浏览器的地址栏中看到跳转后的地址。进行重定向操作后,request中的属性全部失效,并且开始一个新的request对象。sendRedirect()方法的语法格式如下:

response.sendRedirect(String path);
path:用于指定目标路径,可以是相对路径,也可以是不同主机的其他URL地址。

2.2 处理HTTP文件头

  通过response对象可以设置HTTP响应报头,其中,最常用的是禁用缓存、设置页面自动刷新和定时跳转网页。下面分别进行介绍。

  设置HTTP响应报头方法的语法格式如下:

response.setHeader(String name, String value);

2.2.1 设置页面自动刷新

  通过设置HTTP头还可以实现页面的自动刷新。

  示例:使页面每隔10秒自动刷新一次。

response.setHeader("refresh", "10");

2.2.2 定时跳转网页

  通过设置HTTP头还可以实现定时跳转页面功能。

  示例:使页面5秒后自动跳转到指定的网页。

response.setHeader("refresh", "5;URL=login.jsp");

2.3 设置输出缓冲

方法 说明
flushBuffer() 强制将缓冲区的内容输出到客户端。
getBufferSize() 获取响应所使用的缓冲区的实际大小,如果没有使用缓冲区,则返回0。
setBufferSize(int size) 设置缓冲区大小。
reset() 清除缓冲区的内容,同时清除状态码和报头。
isCommitted() 检查服务器端是否已经把数据写入到可客户端。

示例:设置缓冲区的大小为32KB。

response.setBufferSize(32)

 如果将缓冲区的大小设置为0KB,则表示不缓冲。

3、session对象

  session在网络中被称为会话。由于HTTP协议是一种无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。为了弥补这一缺点,HTTP协议提供了session。通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这个时间取决于服务器,例如,Tomcat服务器默认为30分钟。不过这个时间可以通过编写程序进行修改。转载请附上原文出处链接及本声明。

技术图片

4、application对象

  application对象用于保存所有应用中的共有数据。它在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁时,所有用户都可以共享该application对象。与session对象相比,application对象的生命周期更长,类似于系统的“全局变量”。

方法 说明
String getInitParameter(String name) 获取已命名的应用程序初始化参数值。
Enumeration<String> getInitParameterNames()  获取所有已定义的应用程序初始化参数名的枚举。
Enumeration<String> getAttributeNames() 获取所有application对象使用的属性名。
Object getAttribute(String name)  从application对象中获取指定对象名。
void setAttribute(String key,Object obj)  使用指定名称和指定对象在application对象中进行关联。
void removeAttribute(String name) 从application对象中去掉指定名称的属性。

4.1 访问应用程序初始化参数

  application对象提供了对应用程序初始化参数进行访问的方法。应用程序初始化参数在web.xml文件中进行设置,web.xml文件位于Web应用所在目录下的WEB-INF子目录中。在web.xml文件中通过<context-param>标记配置应用程序初始化参数。

  application对象提供了两种访问应用程序初始化参数的方法。

4.1.1 getInitParameter(String name)方法

  String getInitParameter(String name)方法用于获取已命名的应用程序初始化参数值。

 示例:获取上面web.xml文件中配置的url参数的值。

String url = application.getInitParameter("url");

4.1.2 getInitParameterNames()方法

  Enumeration<String> getInitParameterNames()方法获取所有已定义的应用程序初始化参数名的枚举。

示例:使用getInitParameterNames()方法获取web.xml文件中定义的全部应用程序初始化参数,并通过循环输出。

Enumeration<String> enume = application.getInitParameterNames();   //获取全部初始化参数
while(enume.hasMoreElements())
{
	String name = enume.nextElement();                  //获取参数名
	String value = application.getInitParameter(name);  //获取参数值
	out.println(name + ":");  //输出参数名
	out.println(value);        //输出参数值
}

4.2 管理应用程序环境属性

  与session对象相同,也可以在application对象中设置属性。与session对象不同的是,session只是在当前客户的会话范围内有效,当超过保存时间,session对象就被收回;而application对象在整个应用区域中都有效。

5、out对象

out对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

5.1 向客户端输出数据

  print()方法;println()方法

5.2 管理响应缓冲

  out对象的另一个比较重要的功能就是对缓冲区进行管理。通过调用out对象的clear()方法可以清除缓冲区的内容。这类似于重置响应流,以便重新开始操作。如果响应已经提交,则会有产生IOException异常的负作用。out对象还提供了另一种清除缓冲区内容的方法,那就是clearBuffer()方法,通过该方法可以清除缓冲区的“当前”内容,而且即使内容已经提交给客户端,也能够访问该方法。除了这两个方法外,out对象还提供了其他用于管理缓冲区的方法。

方法 说明
clear() 清除缓冲区中的内容。
clearBuffer() 清除当前缓冲区中的内容。
flush() 刷新流。
isAutoFlush() 检测当前缓冲区已满时是自动清空,还是抛出异常。
getBufferSize() 获取缓冲区的大小。

以上是关于JSP内置对象的主要内容,如果未能解决你的问题,请参考以下文章

Jsp九大内置对象

jsp内置对象

Java-浅谈JSP内置对象

jsp内置对象

jsp内置对象session出错问题

JavaWeb--jsp九大内置对象完整总结