JSP的九个隐含对象以及4个域对象
程序员文章站
2022-05-05 11:41:39
...
一、JSP中的九个隐含对象
jsp中的九个隐含对象是:request , response ,
pageContext , session , application ,config ,out,page ,exception 这九个隐含变量。也就是说在jsp页面中使用这些变量是不需要声明的。
下面是对这九个变量的简单说明:
- (1)request :request就是Servlet 中的HtppservletRequest ,代表客户端的请求,是常用的对象。作用是:取得请求参数。
- (2)response :response 就是Servlet 中的HtppservletResponse ,代表客户端的响应。
- (3)pageContext:
- (4)session :对象代服务器和客户端所建立的会话,当需要在不同的jsp页面中保留客户信息的情况下使用,。
- (5)application :application 其实就是ServletContext 的一个对象实例。代表当前的web应用,对象负责提供应用程序在服务器上运行时的一些全局信息。在当前的web应用中有效。
- (6)config :对象提供一些配置信息。获取jsp在web.xml中的初始化参数。
- (7)out :输出到浏览器,out.println(“要输出的内容”),在jsp中是比较常用的。
- (8)page :代表了正在运行的由jsp文件产生的对应的servlet对应的servlet对象。
- (9)exception :此对象不能在一般jsp文件中直接使用,只有在<%@ page isErrorPage=“true”%>的jsp文件中使用。
二、四个域对象及其属性有关的方法
pageContext ,request ,session ,application 这四个对象称为JSP中的四个域对象。
- (1)setAttribute(name , name):用于设置属性。
- (2)getAttribute(name):根据属性的名字获取属性的值。
- (3)getgetAttributeNames():获取所有属性的名字,以枚举类型返回。
- (4)removeAttribute() : 移除指定名字的属性。
- (5)测试:同一个jsp页面中
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
//pageContext
pageContext.setAttribute("pageContext", "pageContextText");
//request
request.setAttribute("request", "requestText");
//session
session.setAttribute("session", "sessionText");
//application
application.setAttribute("application", "applicationText");
%>
<%= pageContext.getAttribute("pageContext")%><br/><br/>
<%= request.getAttribute("request")%><br/><br/>
<%= session.getAttribute("session")%><br/><br/>
<%= application.getAttribute("application")%><br/><br/>
</body>
</html>
测试结果
- (6)测试:不同的jsp页面中
- 第一个页面
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
//pageContext
pageContext.setAttribute("pageContext", "pageContextText");
//request
request.setAttribute("request", "requestText");
//session
session.setAttribute("session", "sessionText");
//application
application.setAttribute("application", "applicationText");
%>
<a href="index2.jsp">跳转index2.jsp</a>
</body>
</html>
- 第二个页面
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%= pageContext.getAttribute("pageContext")%><br/><br/>
<%= request.getAttribute("request")%><br/><br/>
<%= session.getAttribute("session")%><br/><br/>
<%= application.getAttribute("application")%><br/><br/>
</body>
</html>
测试结果:
- (7)测试:在servlet中取值
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<%
//pageContext
pageContext.setAttribute("pageContext", "pageContextText");
//request
request.setAttribute("request", "requestText");
//session
session.setAttribute("session", "sessionText");
//application
application.setAttribute("application", "applicationText");
%>
<a href="AuthorServlet">跳转到AuthorServlet</a>
</body>
</html>
- AuthorServlet.java 。 注意: pageContext , 在servlet里边不能使用。
package com.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class AuthorServlet
*/
@WebServlet("/AuthorServlet")
public class AuthorServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AuthorServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// pageContext , 在servlet里边不能使用
//request
response.getWriter().println( request.getAttribute("request") );
//session
response.getWriter().println( request.getSession().getAttribute("session") );
//application
response.getWriter().println(getServletContext().getAttribute("application") );
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
- 测试结果:
- (8)总结:
- pageContext : 只能在应用在当前页面的一次请求中。
- request : 只要在同一个请求中,不论该请求经过多少个动态资源,只能是转发。
- session :只要在同一个会话中,不论该请求经过多少个动态资源,不论转发还是重定向。
- application :只要在当前web应用中,只要服务器不关闭,一直存在。
上一篇: 三星偷跑S10广告:外形、重磅功能确定!