JSP内置对象

所谓内置对象,就是不需要声明这些对象就可以在JSP页面中直接使用的对象,JSP提供了9中内置对象,如下:

1.request对象

当客户端向web服务器发送请求获取某种资源时,相当于像web服务器发送了一个HTTP请求(request)。一个HTTP请求报文一般包括4部分:请求行,请求首部,空行和请求数据等。其中请求行由请求方法字段,URL字段和HTTP协议版本字段3部分组成,它们之间用空格分隔。HTTP请求首部是指客户端传递请求的附加信息和客户端把自己的附加信息给服务器的内容。

示例代码:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>request对象的用法</title>
</head>
<body>
<form action="result.jsp" method="post">
<table>
<tr>
<td>
请输入内容:
</td>
<td><input type="text" name="param"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="确定" />
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>request内置对象的用法</title>
</head>
<body>
<%
	request.setCharacterEncoding("utf-8");
%>
从RequestDemo.jsp页面中传过来的值为:<%=request.getParameter("param") %>
<br>
客户端的IP地址为:<%=request.getRemoteAddr() %>
<br>
客户端的主机名为:<%=request.getRemoteHost() %>
<br>
客户端的端口号为:<%=request.getRemotePort() %>
<br>
服务器的名称为:<%=request.getServerName() %>
<br>
服务器的端口号为:<%=request.getServerPort() %>
<br>
客户请求使用的协议为:<%=request.getScheme() %>
<br>
客户端提交信息的页面为:<%=request.getServletPath() %>
<br>
客户端提交信息的长度为:<%=request.getContentLength() %>
<br>
采用的信息编码为:<%=request.getCharacterEncoding() %>
<br>
HTTP文件头中的User-Agent值为:<%=request.getHeader("User-Agent") %>
<br>
HTTP文件头中的accept值为:<%=request.getHeader("accept") %>
<br>
HTTP文件头中的Host值为:<%=request.getHeader("Host") %>
<br>
Web应用的目录为:<%=request.getContextPath() %>
</body>
</html>


2.response对象

当客户端像web服务器发送请求后,web服务器接收请求并进行响应的响应(response),一个HTTP响应报文包括状态行,响应头,空行和可选实体内容。

//设置页面每隔1s自动刷新一次
response.setHeader("Refresh", "1");
//设置10s后自动跳转到anotherPage.jsp页面
response.setHeader("Refresh", "10;URL=anotherPage.jsp");
//页面直接跳转
response.sendRedirect("anotherPage.jsp");
示例代码:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>response内置对象实例</title>
</head>
<body>
  <%
       Cookie c1 = new Cookie("name","Java") ;
       Cookie c2 = new Cookie("password","123456") ;
       // 最大保存时间为180秒
       c1.setMaxAge(180) ;
       c2.setMaxAge(180) ;
       // 通过response对象将Cookie设置到客户端           
       response.addCookie(c1) ;
       response.addCookie(c2) ;       	   
  %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>TestCookie.jsp</title>
</head>
<body>
       <%
         // 通过request对象,取得客户端设置的全部Cookie
         // 实际上客户端的Cookie是通过HTTP头信息发送到服务器端上的
         Cookie c[] = request.getCookies() ;
         for(int i=0;i<c.length;i++)
         {
              Cookie temp = c[i] ;
       %>
              <%=temp.getName()%> :<%=temp.getValue()%><br>
       <%
              }
       %>
</body>
</html>
Cookie是保存在客户端某个目录下的文本数据,由服务器生成该数据。这样当客户下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用Cookie)。Cookie的名称和值可以由服务器端开发者自定义,例如本例中自定义保存两个Cookie,即name和password。一般来说,Cookie常用来判断用户是否已经登陆。

3.page对象

page对象代表当前正在运行的jsp页面,或者可以认为page代表的是jsp页面被编译后的Servlet,类似java中的this关键字,page对象只能在当前jsp页面范围内使用。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<title>page对象实例</title>
</head>
<body>
本页面对应的Servlet为:<%=page.getClass() %><br>
本页面对应的Servlet hash码为:<%=page.hashCode() %><br>
本页面使用的JSP引擎为:<%=((HttpJspPage)page).getServletInfo() %><br>
</body>
</html>

4.pageContext对象

pageContext对象指当前页面的上下文,即当前页面的所有属性和对象

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>PageContext对象实例</title>
</head>
<body>
<%
	//设置一个属性name,其值为PageContext。取值范围为request
    pageContext.setAttribute("name","PageContext对象",pageContext.REQUEST_SCOPE);
	pageContext.forward("TestPageContext.jsp");
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>测试pageContext对象</title>
</head>
<body>
pageContent对象的属性值为:
<%=request.getAttribute("name") %>
</body>
</html>

5.out对象

out对象的主要作用是向jsp页面上输出各种类型的数据,并且管理web服务器上的输出缓冲区。out对象可以向jsp页面中输出文本内容,也可以输出HTML标签和JavaScript脚本。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>out对象实例</title>
</head>
<body>
<%
	//向JSP页面中输出文本
	out.print("哈哈");
	out.newLine();
	//输出HTML标签
	out.print("<br>");
%>
缓冲区的大小为:<%=out.getBufferSize() %><br>
缓冲区的可用大小为:<%=out.getRemaining() %><br>
是否为自动清空缓冲区<%=out.isAutoFlush() %><br>
<%
	//输出JavaScript脚本
	out.println("<SCRIPT type=\"text/javascript\">alert(\"测试out对象的使用!\");</SCRIPT>");
%>
</body>
</html>


6.session对象

由于HTTP是一种无状态的协议,因此在web应用中,使用会话是跟踪用户状态的一种重要手段。会话是指在一段时间内,每个用户与web应用的一连串相关的交互过程。在一个会话中,用户可以多次请求访问web应用的同一个页面,也可以请求访问web中的多个页面。jsp通过使用session对象来保存每个用户的用户信息和会话状态。由web服务器自动创建,可以跟中每个用户的操作状态。当用户首次登陆web应用时,web服务器会自动给用户分配一个唯一的标志(即session id),以此来区分各个用户。session对象采用Map类型来保存数据,即每个用户都可以有若干个“键/值”对。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>session对象--用户登录</title>
</head>
<body>
<form action="success.jsp" method="post">
<table>
<tr>
<td>用户名</td><td><input type="text" name="username"/></td>
</tr>
<tr><td>密码</td><td><input type="password" name="password"/></td>
</tr>
<tr><td align="center" colspan="2"><input type="submit" value="登录"/></td></tr>
</table>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>session对象--登录验证</title>
</head>
<body>
<%
	//取得输入的用户名和密码
	String name = request.getParameter("username");
	String pwd = request.getParameter("password");
	//判断用户名与密码是否正确,默认用户为root,密码为123456
	if(name.equals("root")&&pwd.equals("123456"))
	{
		//设置session属性username,值为用户名
		session.setAttribute("username",name);
		//通过getAttribute()方法获取会话的username属性
		out.print(((String)session.getAttribute("username")) +",欢迎你!");
	}
	else
	{
		out.print("<script type=\"text/javascript\">alert('对不起,用户名或密码错误!');history.go(-1);</script>");
	}
%>
</body>
</html>

使用session对象时注意,即使是多个用户同时访问一个web应用的同一个页面,各个用户的session的属性值也是相互独立的,即各用户之间的session是不共享的。

7.application对象

application对象用于保存web应用中的共享数据,与session不同的是,application对象中的属性值是各个用户对象共享的,而各个用户之间的session对象没有任何必然联系;另外,application对象的生存期要比session对象长,session只在当前的会话期内有效,而application对象在web服务器启动之后即产生,直至web服务器关闭之前将一直存在。

8.config对象

config对象主要用来读取web应用的初始化参数,在javaweb中一般使用web.xml配置文件存储web应用的初始化参数

9.exception对象

exception对象主要用来处理jsp页面执行时产生的异常,从而提高web应用的健壮性。使用exception对象处理异常时,需要指定错误处理页面,而错误处理页面通过使用page指令来设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值