欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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>

测试结果
JSP的九个隐含对象以及4个域对象

  • (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>

测试结果:
JSP的九个隐含对象以及4个域对象

  • (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);
	}

}

  • 测试结果:
    JSP的九个隐含对象以及4个域对象
  • (8)总结:
    • pageContext : 只能在应用在当前页面的一次请求中。
    • request : 只要在同一个请求中,不论该请求经过多少个动态资源,只能是转发。
    • session :只要在同一个会话中,不论该请求经过多少个动态资源,不论转发还是重定向。
    • application :只要在当前web应用中,只要服务器不关闭,一直存在。
相关标签: JAVA Web jsp web