jsp九大内置对象

1.request:客户端发送给服务器的所有数据,所有信息,都会被封装在request对象中:

                请求行+请求头+请求体=request

	<fieldset>
		<legend>请求行</legend>
		请求方式:<%= request.getMethod()%><br>
		请求url:<%= request.getRequestURI()%><br>
	</fieldset>
	<fieldset>
		<legend>请求头</legend>
		Accept:<%= request.getHeader("Accept") %><br>
		User-Agent:<%= request.getHeader("User-Agent") %><br>
		Accept-Encoding:<%= request.getHeader("Accept-Encoding") %><br>
		Host:<%= request.getHeader("Host") %><br>
	</fieldset>
	<fieldset>
		<legend>其他信息</legend>
		客户端ip:<%=request.getRemoteAddr() %><br>
		web应用所在路径:<%=request.getRealPath("/") %><br>
	</fieldset>

2.response:相应内置对象,服务器响应给客户端的所有数据,都会被先封装进response中,再从response中取出来,生成一个http响应

response.getWriter():用于获取一个字符输出流,该流起点为服务器,终点为客户端

3.out:该对象是一个字符输出流,该流可以向客户端浏览器发送数据。

         注:除该流之外,getOutputStream()可以获取一个字节流,这两个流方向一致,关系为互斥,不能同时使用

              如果非要使用response.getOutputStream()获取流,必须先让out失效。

		out.clearBuffer();
		out=pageContext.pushBody();
4.session:会话范围,在jsp中特指一个用户从打开一个网站的任何一个页面开始,到关闭了该网站的所有页面为止。

    session方法:

<table>
	<tr>
		<td>新会话?</td>
		<td><%=session.isNew() %></td>
	</tr>
	<tr>
		<td>会话id</td>
		<td><%=session.getId() %></td>
	</tr>
	<tr>
		<td>会话创建时间</td>
		<td><%=session.getCreationTime() %></td>
	</tr>
	<tr>
		<td>上次会话访问</td>
		<td><%=session.getLastAccessedTime() %></td>
	</tr>
	<tr>
		<td>当前系统时间</td>
		<td><%=System.currentTimeMillis() %></td>
	</tr>
	<tr>
		<td>会话闲置时间</td>
		<td>
			<%=System.currentTimeMillis() - session.getLastAccessedTime() %>
		</td>
	</tr>
	<tr>
		<td>让会话失效</td>
		<td>
			<% //session.invalidate(); %>
		</td>
	</tr>
</table>

5.application:应用对象,应用范围,从部署web应用开始,到卸载web应用为止,算一次应用范围。

	application.setAttribute("a", "123");
	application.getAttribute("a");
	application.removeAttribute("a");
在application中设置,获取,删除参数,也可以在web.xml中设置初始化参数,在jsp中获取
  <context-param>
  	<param-name>abc</param-name>
  	<param-value>bca</param-value>
  </context-param>

<%=application.getInitParameter("abc") %>

6.pageContext:页面范围对象,在页面之内可以传参,除此之外,该对象可以获取其他8个内置对象。

       该功能的定义为九大内置对象的方法设置提供了极大便利,因为如果九个内置对象拥有同一个方法,

        不需要定义九种参数,而是传入一个pageContext即可。

	pageContext.forward("b.jsp");//java代码版本的请求转发
	pageContext.include("b.jsp");//java代码版本的动态包含

7.exception:异常对象,要使用该内置对象,必须在jsp页面上添加一个指令元素

<%@ page errorPage="true" %>
<%@ page errorPage="b.jsp" %>//在页面上添加该指令元素可以指定出错后的跳转页面
在b.jsp上可以进行异常输出:

<%@ page language="java"  pageEncoding="utf-8"%>
<%@ page isErrorPage="true" %>
<!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=utf-8">
<title>b.jsp</title>
</head>
<body>
<%=exception %>
</body>
</html>

8.config:用于获取jsp页面的初始化参数。

   <servlet>
  	<servlet-name>aa</servlet-name>
  	<jsp-file>/b.jsp</jsp-file>
  	<init-param>
  		<param-name>x</param-name>
  		<param-value>hhhhh</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>aa</servlet-name>
  	<url-pattern>/b.php</url-pattern>
  </servlet-mapping>
在web.jsp中进行以上设置,就可以在特定的jsp页面中设置初始化参数
由于进行了servlet映射,访问b.php并获取初始化参数
<%=config.getInitParameter("x") %>

即可在b.jsp页面中看到结果


9.page:代表当前jsp页面对象本身,它其实就是this,它可以获取page指令元素的info属性的内容


10.jsp中的四大范围:

     在一个jsp页面设置四大范围,并在该页面获取
<body>
<%
	pageContext.setAttribute("a", "页面范围");
	request.setAttribute("a", "请求范围");
	session.setAttribute("a", "会话范围");
	application.setAttribute("a", "应用范围");
%>
<%=pageContext.getAttribute("a") %>
<%=request.getAttribute("a") %>
<%=session.getAttribute("a") %>
<%=application.getAttribute("a") %>
</body>

从当前页面进行请求转发到b.jsp,再次获取四大范围

<jsp:forward page="b.jsp"></jsp:forward>

可以看到页面范围丢失。

若从该界面进行跳转,直接改变链接访问b.jsp:


可以看到请求范围也随之丢失。

此时再关闭浏览器,重新打开并直接访问b.jsp


看到会话范围丢失。

重新部署web应用,并直接访问b.jsp


看到所有范围均无法获取到,由此可见,jsp中四大范围大小以此为:

pageContext<request<session<application,除了pageContext外,其他范围都可以在页面之间传递数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值