1、什么是内置对象?

在jsp开发中,会频繁使用到一些对象,如:HttpSession,ServletContext,HttpServletRequest。
      如果每次使用这些对象时,都要去创建对象 显示非常麻烦。所有sun公司就设计jsp时,在jsp页面加载完毕后会自动帮助开发者创建好这些对象,而开发者只需要直接使用这些对象去调用方法即可,这些创建好的对象就叫内置对象。

举例:

Servlet:
HttpSession session = Request.getSession(true);(需要开发者动手做)
Jsp:
Tomcat服务器:
HttpSession session = request.getSession(true);(不需要开发者动手做)
开发者只需要用session对象去调用相应的方法即可,比如:session.getId();

2、9大内置对象

内置对象名 对应类型
request      
response   
config            
application                
session                  
exception     
page         
out       
pageContext    
HttpServletRequest
HttpServletResponse
ServletConfig
ServletContext
HttpSession
Throwable
Object(this)
JspWriter
pageContext

2.1、Out 对象

out对象是jspWrite类中的,相当于带缓冲的PrintWriter
        printWriter:
             writer(内容):直接向浏览器写出内容
        jspWriter
            writer(内容):向jsp缓冲区写出内容

当满足以下条件之一,缓冲区内容就会写出(如下面代码)
      1) 缓冲区满了
      2) 刷新缓冲区
      3) 关闭缓冲区
      4) 执行完jsp页面

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" buffer="1kb" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'MyJsp.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
//方法1:顶部设置缓冲区的大小为1Kb(buffer="1kb")
for(int i=1;i<=500;i++){
out.write("123");
}
//查看缓冲区大小
System.out.println("当前缓冲区的大小:"+out.getBufferSize());
//查看缓冲区剩余大小
System.out.println("剩余缓冲区大小:"+out.getRemaining());
//方法2:刷新缓存
//out.flush(); response.getWriter().write("a"); //解析:方法1或2,都能让123先输出来,最后输出a;如果两者都去掉,那么先输出a,后输出123.
%>
</body>
</html>

2.2、pageContext 对象

PageContext对象类型是PageContext,叫jsp的上下文对象

2.2.1、可以获取其他八个内置对象
 public class pageContext{
public void _jspService(){
//创建了对象
HttpSession session=””…
ServletConfig config=””….
//把8个常见使用的内置对象封装到了PageContext对象中了
public void method(PageContext pageContext){
//从pageContext对象中获取其他八个内置对象
JspWriter out=pageContext.getOut();
....
}
}
}
2.2.2、pageContext 对象,本身就是一个域对象

ServletContext     context域对象
      HttpServletRequest    request域对象
      HttpSession    session域对象
      PageContext    page  域对象

作用:保存数据和获取数据,用于共享数据

      #保存数据
         1)默认情况下,保存到page域:PageContext.setAttribute(“name”);
         2)可以向四个域对象保存数据:PageContext.setAttribute(“name”,域范围常量);

#获取数据
         1)默认情况,从page域获取:PageContext.getAttribute(“name”);
         2)可以从4个域中获取数据:PageContext.getAttribute(“name”,域范围常量);
              域范围常量
                    PageContext.PAGE_Scope
                    PageContext.REQUEST_SCOPE
                    PageContext.SESSION_SCOPE
                    PageContext.APPLICATION_SCOPE
         3)自动在四个域中搜索数据:PageContext.findAttribute(“name”);
顺序:page域 ----> request域 ----> session域 ----> context域(application域)               注:请求转发:request就有值;浏览器不关闭:session就有值;服务器不关闭:context域(application域)就有值

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>pageContext对象</title>
</head>
<body>
<%
//1)可以获取其他八个内置对象
response.getWriter().write("是否相等?"+(out==pageContext.getOut())+"<br/>");
response.getWriter().write("是否相等?"+(session==pageContext.getSession())+"<br/>");
%>
<%--
2)pageContext作为作用域对象使用
2.1可以往不同域对象存取数据
--%>
<%
//保存数据,默认情况下,保存在page域中
pageContext.setAttribute("message","page message");
pageContext.setAttribute("message","request message",pageContext.REQUEST_SCOPE);//保存到request域中
pageContext.setAttribute("message", "session message",pageContext.SESSION_SCOPE);//保存到session域中
pageContext.setAttribute("message","application message",PageContext.APPLICATION_SCOPE);//保存到context域中
// request.setAttribute("message","request message");//等价于上面代码
%>
<%
//获取数据
String message=(String)pageContext.getAttribute("message");
out.write(message);
%>
<%--
原则:
1)在哪个域中存储数据,就必须在哪个域中取出数据!!!
--%>
<hr/>
<%=pageContext.getAttribute("message",pageContext.PAGE_SCOPE) %><br/>
<%=pageContext.getAttribute("message",pageContext.REQUEST_SCOPE) %><br/>
<%=pageContext.getAttribute("message",pageContext.SESSION_SCOPE) %><br/>
<%=pageContext.getAttribute("message",pageContext.APPLICATION_SCOPE) %><br/>
<hr/>
<%-- findAttribute():在四个域中自动搜索数据
顺序:page域-->request域--->session域--->application域
--%> <%=pageContext.findAttribute("message") %><br/>
<%=session.getAttribute("message") %>
<%
//转发
48 //request.getRequestDispatcher("/pageContext2.jsp").forward(request, response);
response.sendRedirect("/pageContext2.jsp");
%>
</body>
</html>

3、jsp中的四个域对象

PageContext       page域
    request           reuquest域
    session           session域
    application        context域

  1)域对象的作用
          保存数据和获取数据   ,用于数据共享.
  2)域对象方法
          SetAttribute(“name”,Object)保存数据
          getAttribute(“name”)获取数据
          removeAttribute(“name”)清除数据
  3)域对象的范围
          Page域:只能在当前jsp页面使用(当前页面)
          Request域:只能在同一个请求中使用(转发)
          Session域:只能在同一个会话(Seesion对象)中使用(私有的)
          Context域:只能在同一个文本应用中使用(全局的)

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'pageContext3.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
page域 <%=pageContext.getAttribute("message",PageContext.PAGE_SCOPE) %><br/>
reuest域 <%=pageContext.getAttribute("message",PageContext.REQUEST_SCOPE) %><br/>
session域 <%=pageContext.getAttribute("message",pageContext.SESSION_SCOPE) %><br/>
context域 <%=pageContext.getAttribute("message",pageContext.APPLICATION_SCOPE) %><br/>
</body>
</html>

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9816583.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

java基础81 jsp的内置对象(网页知识)的更多相关文章

  1. JSP的执行原理、JSP的内置对象、四大作用域解析、MVC模式理解>从零开始学JAVA系列

    目录 JSP的执行原理.JSP的内置对象.四大作用域解析.MVC模式理解 JSP的执行原理 这里拿一个小例子来解析JSP是如何被访问到的 首先将该项目部署到tomcat,并且通过tomcat启动 通过 ...

  2. 【ASP.NET 基础】ASP.NET内置对象

    准确地说,asp.net 并没有内置对象这一说,jsp 里确实把 request.response 这些当作 jsp 的内置对象,这里只不过是借用了一下 jsp 的说法而已.在 Web 中处于中心的是 ...

  3. JSP的内置对象以及作用域。

    最近在面试,一些基础的问题总是会被问到,虽然是基础,但是有些东西在工作中用的少,所以就有些记不清了,在面试的时候更因为紧张很容易造成原先知道的知识也会突然忘了的情况发生.所以在重新组织一下jsp的内置 ...

  4. JSP的内置对象(上)

    1.JSP内置对象的概念:JSP的内置对象时Web容器所创建的一组对象,不使用new关键字就可以使用的内置对象 2.JSP九大内置对象内置对象:out ,request ,response ,sess ...

  5. 什么是jsp?jsp的内置对象有哪些?

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [什么是jsp? ...

  6. JSP&EL 内置对象

    JSP&EL 内置对象 转载▼   具体的JSP和El中的内置对象见下表,由于我写在了excel中,也不知道怎么把excel发出来,就截了图. 相关问题: Q1: JSP:EL中 pageCo ...

  7. struts访问jsp api内置对象的集中方式

    1 default-action-ref元素改元素用来配置默认的action,如果struts找不到对应的action,就会调用这个默认的action 2 dmi处理方式是通过请求action中的一个 ...

  8. Java Script基础(五) 内置对象Date

    在JavaScript中,系统的内置对象有Date对象.Array对象.String对象和Math对象等. 1.Date:用于操作日期和时间. 2.Array:用于在单独的变量名中存储一系列的值. 3 ...

  9. 菜鸟日记之JSP二 内置对象的理解

    ·最近学习JSP了,对编程和网络又有了一些理解.无论是现实中人与人的交流,还是网络世界的接触,都是在相互表达自己的意思让别人知道,并理解对方的信息.然后我们知道的事情不断的变多,会又交杂出新的内容,不 ...

随机推荐

  1. Android自定义 Dialog 对话框

    Android自定义Dialoghttp://www.cnblogs.com/and_he/archive/2011/09/16/2178716.html Android使用自定义AlertDialo ...

  2. 【树上莫队】【SP10707】 COT2 - Count on a tree II

    Description 给定一棵 \(n\) 个点的树,每个节点有一个权值,\(m\) 次询问,每次查询两点间路径上有多少不同的权值 Input 第一行是 \(n\) 和 \(m\) 第二行是 \(n ...

  3. Linux发不出分片包的问题分析

    今日有个网络攻击模拟需求,要打分片的ip包,程序写好了,在开发机上验证也没问题,然后部署到沙盒环境之后不行,就是发不出来数据包,而不分片的数据包能够正常发送,定位过程如下 1.对比了两台机器/proc ...

  4. centos install python3 pip3

    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-dev ...

  5. 编程语言教程书该怎么写: 向K&R学习!

    原文地址:Lax Language TutorialsAndrew Binstock 每年在评审Jolt Awards图书的时候,我都会被一些语言教程类图书弄得心力交瘁.从这些年的评审经验来看,这些语 ...

  6. tf.nn.conv2d 参数介绍

    tf.nn.conv2d是TensorFlow里面实现卷积的函数,参考文档对它的介绍并不是很详细,实际上这是搭建卷积神经网络比较核心的一个方法,非常重要 tf.nn.conv2d(input, fil ...

  7. 记录第一次阿里云服务器部署java web工程的经历

    起因:测试一个微信小程序,发现所有的请求要求为https的形式,开发工具忽略后手机无法测试,故尝试配置. 准备:阿里云服务器一台 域名一个(解析在服务器)     tomcat7.0.54     j ...

  8. Ubuntu下快速部署安装 Nginx + PHP + MySQL 笔记

        先更新软件库 sudo apt-get update 安装 MySQL sudo apt-get install mysql-server 安装 Nginx sudo apt-get inst ...

  9. 鸟哥的书——ubuntu命令

    纯粹按着鸟哥的书上的基本命令打一遍,不喜勿喷! Chapter5.首次登录 一.基础命令: 1.显示时间和日期的命令:date dzhwen@deng:~$ date 2014年 02月 23日 星期 ...

  10. 不可不看!CSS3中三十一种选择器用法

    原文 The 30 CSS Selectors you Must Memorize 由 Jeffrey Way 发表于 2012 年 6 月,介绍了 30 种最常用的 CSS 选择器用法,多加了一种, ...