Web项目(十七)九大内置对象

一、什么是内置对象

在jsp开发中会频繁的用到一些对象,为了方便,在你访问jsp页面时它会自动为你创建九个对象,你可以直接在jsp中拿来使用,这九个对象就是jsp中九大内置对象

二、九大内置对象有哪些

1、request对象:

request 对象是 httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求

是客户端对服务器发出的请求。客户端的请求信息被封装在request对象中,通过它发送请求给服务器。它是HttpServletRequest类的实例,作用域为request(用户请求期)。

request对象常用方法

request.setAttribute(String name,Object value) //储存此请求中的属性
request.getAttribute(String name) //返回指定属性的属性值
request.getParameter(String name) //返回name指定参数的参数值
request.getParameterValues(String name) //返回包含参数name的所有值的数组
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    out.println("请求使用的协议:" + request.getProtocol() + "<br>") ;
    out.println("请求使用的Schema:" + request.getScheme() + "<br>") ;
    out.println("访问服务器的名称:" + request.getServerName() + "<br>") ;
    out.println("访问服务器的端口号:" + request.getServerPort() + "<br>") ;
    out.println("客户端用户IP地址:" + request.getRemoteAddr() + "<br>") ;
    out.println("客户端用户主机名称:" + request.getRemoteHost() + "<br>") ;
    out.println("客户端用户名称:" + request.getRemoteUser() + "<br>") ;
    out.println("请求的类型:" + request.getMethod() + "<br>") ;
    out.println("Session ID : " +  request.getRequestedSessionId() + "<br>" ) ;
    out.println("请求的资源定位:" + request.getRequestURI() + "<br>") ;
    out.println("servlet在相对服务器文件夹的位置:" + request.getServletPath() + "<br>") ;
    out.println("Host:" + request.getHeader("Host") + "<br>") ;
    out.println("Accept-Language" + request.getHeader("Accept-Language") + "<br>") ;
    out.println("得到链接的类型:" + request.getHeader("Connection") + "<br>")  ;
    out.println("得到Cookie的字符换信息:" + request.getHeader("Cookie") + "<br>") ;
    out.println("session相关信息-创建时间:" + session.getCreationTime()+ "<br>" ) ;
    out.println("session的相关信息-上次访问时间:" + session.getLastAccessedTime()+ "<br>") ;
    out.println("返回请求对象中的字符编码类型:" + request.getCharacterEncoding() + "<br>") ;
  %>
  </body>
</html>

2.response

该对象是服务器对request对象请求的响应,负责向客户端发送数据,通过response的方法还可以获得服务器相关的信息,例如:状态行,head,信息体等,其中,状态行包括使用的协议和状态码,head包括服务器和返回的文档消息。

下面使用response设置head信息,实现页面定时刷新功能.

 

代码如下(示例):

response.getCharacterEncoding() //返回响应用的是何种字符编码
response.getWriter() //返回可以向客户端输出字符的一个对象
response.sendRedirect(java.lang.String location) //重新定向客户端的请求

下面使用response设置head信息,实现页面定时刷新功能.


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>设置头信息(自动刷新)</title>
</head>
<body>
<%! int count = 0 ; %>
<%
    response.setHeader("refresh", "2") ; //页面2秒刷新一次
%>
<h3>页面已经访问了<%= count ++%>次!</h3>
</body>
</html>

下面利用response设置head信息,实现页面定时跳转功能,可以从一个JSP页面,定时跳转到另一个JSP页面,但是这种跳转不是万能的,有时候不一定能完成跳转操作。


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>定时跳转指令</title>
</head>
<body>
<h3>3秒后跳转到index.jsp,如果没有跳转,请戳这里<a href = "index.jsp">戳这里!!!</a></h3>
<%
    response.setHeader("refresh", "3; URL = index.jsp") ; //3秒后跳转到index.jsp
%>

</body>
</html>

3.out
 

该对象是JspWriter类的实例,主要用来向客户端输出内容,同时管理应用服务器输出缓冲区。
out对象主要有out.println()和print()两个方法用于输出数据。
下面演示用out对象输出系统时间:

代码如下(示例):

out.println()//向浏览器输出数据
out.newLine()//输出换行
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Date" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>

  <%
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
    Date date = new Date() ;
    out.println("原始日期格式:" + date) ;
    String str1 = sdf.format(date) ;
    out.println("自定义日期格式1:" + str1) ;
    sdf.applyPattern("yyyy年MM月dd日");
    String str2 = sdf.format(date) ;
    out.println("自定义日期格式2:" + str2) ;
  %>
  </body>
</html>

4.page

page对象代表了JSP本身,或者说它代表了被转换后的Servlet,因此它可以调用任何被Servlet所定义的方法,在JSP页面的JSP程序段以及JSP表达式中可以使用page对象,page对象的基类是Object类,如果要通过page类来调用方法,就只能调用Object的方法。
在JSP页面中,this关键字表示当前JSP页面这个对象。
 

代码如下(示例):

page. getClass() //返回此Object的类
page.toString() //把此Object对象转换成String类的对象
page.hashCode()//返回Object对象的hashCode值
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page info ="学院" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body bgcolor = yellow>
  返回当前JSP页面的Info属性: <%= this.getServletInfo()%> <br>
  返回当前页面的一个ServletConfig对象:<%= this.getServletConfig()%><br>
  <%= this.getClass()%><br>
  </body>
</html>

5.config

代码如下(示例):

config.getServletName()//返回所执行的Servlet的名字
config.getInitParameter()//返回指定名字的初始参数值

6.session

代码如下(示例):

session.getId()//返回session的ID号
session. setAttribute(String name,Object value)//将value值存在session域中,名字为name
session.getAttribute(String name)//返回与此会话中的指定名称绑定在一起的值,如果没有值绑定在该名称下,则返回null
session.setMaxInactiveInterval(int i)//设置两次请求间隔多长时间此session被取消(单位秒)
session.getMaxInactiveInterval()//返回两次请求间隔多长时间此session被取消(单位秒)
session.invalidate()//销毁session

7.application

该对象是web服务器启动时由服务器自动创建的,它的生命周期是所有JSP隐含对象中最长的,一旦创建了application对象,那么这个对象将一直保存下去,直至服务器关闭。
正是由于application对象的这个特性,可以将要在多个用户中 共享的数据放到application对象中,如在线人数的统计,实现聊天室等功能。

application对象的常用方法主要由两个:setAttribute(),getAttribute()

代码如下(示例):

application.setAttribute(key,value)//设置应用对象中指定名字的属性值
application.getAttribute(key)//获取应用对象中指定名字的属性值
application.getAttributeNames()//获取应用对象中所有属性的名字,一个枚举

下面实现一个页面访问计数器的案例。

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>页面访问计数器</title>
</head>
<body>
<%
    if(application.getAttribute("count") == null){
        application.setAttribute("count", "1") ;
        out.println("欢迎,您是本网页的第1位访客!!!") ;
    }else{
        int i = Integer.parseInt((String)application.getAttribute("count")) ;
        i ++ ;
        application.setAttribute("count", String.valueOf(i)) ;
        out.println("欢迎,您是本网页的第" + i + "位访客!!!") ;
    }
%>
</body>
</html>

8.pageContext

pageContetx对象比较特殊,它是jsp页面中所有对象功能的最大集成者。使用他可以访问所有的jsp内置对象
代码如下(示例):

pageContetx.getRequest()//返回当前页面中的request对象。
pageContetx.getResponse()//使用此方法将返回当前页面中的response对象。
pageContetx.getPage()//此方法返回当前页面中的page对象。
pageContetx.getSession()//返回当前页面中的session对象。
pageContetx.getOut()//返回当前页面中的out对象。
pageContetx.getException()//返回当前页面中的exception对象。
pageContetx.getServletConfig()//返回当前页的config对象。
pageContetx.getServletContext()//返回当前页中的application对象。
pageContetx.setAttribute(String name)//给指定的属性名设置属性值。
pageContetx.getAttribute(String name)//根据属性名称找到相应的属性值。
pageContetx.findAttribute(String name)//寻找一个属性并返回,如果没有找到则返回一个null。
pageContetx.removeAttribute(String name)//通过属性名删除掉某个属性。
pageContetx.removeAttribute(String name, int scope)//在指定的某个范围内删除某个属性。
pageContetx.getAttributeScope(String scope)//返回某属性的作用域。
pageContetx.getAttributeNamesInScope(int scope)//返回指定范围内的所有属性名的枚举。
pageContetx.release()//释放掉pageContext()所占的所有资源。
pageContetx.forward(String relativeURLpath)//使用当前页面重导到另一个页面。

9.exception

exception对象表示jsp引擎在执行代码时抛出的异常
如果想要使用exception对象,那么需要配置编译指令的isErrorPage属性为true,即在页面指令中设置:

<%@page isErrorPage=“true”%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫1982

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值