JSP页面的隐含对象和Servlet程序里的对象之间的关联和区别
首先,有两个概念:
1.JSP页面的域对象:pageContext,request,session,application对象(四个)
void setAttribute(String name,Object o):设置属性名对应的属性值
Object getAttribute(String name):获取指定属性名的属性值
Enumeration getAttributeNames():获取所有的属性名组成的Enumeration对象
removeAttribute(String name):移除指定属性名的属性
pageContext<request<session<application对象(对属性的作用域的范围从小到大)都有这些方法,这四个对象称之为域对象。
pageContext:属性的作用范围仅限于当前JSP页面
request:属性的作用范围仅限于同一个请求
session:属性的作用范围仅限于一次会话
application:属性的作用范围限于当前WEB应用,是范围最大的属性作用范围。只要在一处设置属性,在其他各处的JSP或Servlet中都可以获取到。
2.JSP页面的隐含对象:没有声明就可以使用的对象,共9个。
①request:HttpServletRequest的一个对象
②response:HttpServletResponse的一个对象
③pageContext:页面的上下文,是PageContext的一个对象。
可以从该对象中获取到其他8个隐含对象,
也可以从中获取到当前页面的其他信息(在自定义标签时,可以获取比如属性,参数等):
定义一个类:HelloSimpleTag.java
然后在TestTag.jsp页面里使用tt:helloSimple标签
从上面的例子中可以看出,pageContext确实可以获取到request、out等对象。
注意:不是说这9个对象就不能在servlet程序里调用,只是说在JSP页面里可以直接调用这9个对象而不需要先获取到对象。
比如:在JSP页面就可以直接调用session对象:session.getAttribute。
而在servlet程序里如果要调用session对象,必须先获取到session对象才可以使用:request.getSession().setAttribute。
又比如在上面的HelloSimpleTag.java里,存在一个函数setJspContext,这个函数就传入了一个JspContext对象。所以我们可以利用该对象强转成pageContext对象,这样就在java程序里获取到了pageContext对象。于是此时才可以利用该对象获取其他隐含对象比如request、out等对象,然后再利用request、out去实现想实现的功能。
④session:代表浏览器和服务器的一次会话,是HttpSession的一个对象
⑤application:代表当前WEB应用,是ServletContext对象
⑥config:当前JSP对应的Servlet的ServletConfig对象(了解)
⑦out:JspWriter对象,调用out.println()可以直接把字符串打印到浏览器上
⑧page:指向当前JSP对应的servlet对象的引用(了解)
⑨exception:在JSP文件的开头声明了Page指令的isErrorPage="true"时,才可以使用.
<%@ page isErrorPage="true">
JSP页面的隐含对象和Servlet程序里的对象之间的关联和区别的更多相关文章
- jsp九个内置对象、四个域对象及Servlet的三大域对象
一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创 ...
- JSP页面最终是编译为Servlet执行的
JSP页面最终是编译为Servlet执行的,你可以在Tomcat的%CATALINA_HOME%/work/Catalina/localhost中找到一个文件夹,该文件夹跟你的web-project的 ...
- 【转载】Jsp页面传Json数据到服务端,转对象或集合进行数据处理
需求:1.将页面数据带到服务端并转成对象,2.将页面的集合数据带到服务端转List实现:用ajax请求传递数据,数据格式为json JS方法: testJsonMethod = function(){ ...
- 创建jsp页面出现The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path错误
原因未添加tomcat服务器 第一步: 第二步:
- 【JavaWeb】JSP 页面
JSP 页面 简介 JSP(Java Server Pages),即 Java 的服务器页面.它的主要作用是代替 Servlet 程序回传 HTML 页面的数据,因为 Servlet 程序回传 HTM ...
- Servlet跳转到JSP页面后的路径问题相关解释
一.现象与概念 1. 问题 在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同 ...
- Servlet转发到JSP页面的路径问题
一.现象与概念 1. 问题 在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同 ...
- Jsp页面跳转和js控制页面跳转的几种方法
Jsp 页面跳转的几种方法 1. RequestDispatcher.forward() 在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servle ...
- JSP九大内置对象及其作用以及四大域对象
一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创 ...
随机推荐
- python语法------时间函数
1.导入函数库: import time 获取格式化的时间 你可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime(): #!/usr/bin/python # -*- co ...
- 连接到CentOS(Linux)服务器ssh、mysql缓慢
现象: 服务器163与服务器164在同一机柜,双绞线直接连接,从办公室或者服务器163去连机服务器164的ssh.mysql均缓慢,让机房人员查了,无果.而164却正常. 最后发现两个机器/etc/r ...
- MySQLdb 1031 Error
Python import MySQLdb 有可能报:site-packages/pkg_resources.py:1031: UserWarning: /home/***/.python-eggs ...
- adb push和pull使用
1.运行cmd> 进入adb.exe目录 2.>adb connect ip 3.>adb remount 4.>adb push 本地apk全路径 /system/app/ ...
- java基础介绍(转)
很全面的介绍JAVA基础的文档 Java 编程简介,第 1 部分: Java 语言基础 http://www.ibm.com/developerworks/cn/java/j-introtojava1 ...
- C#实现右下角弹出窗口效果
/// <summary> /// 窗体动画函数 注意:要引用System.Runtime.InteropServices; /// </summary> /// <pa ...
- PHP fastcgi模式大文件上传500错误
最近在项目中中上传图片时,大约有300多K,结果报了个服务器错误,以前从未遇到过,错误的内容如下: mod_fcgid: www.111cn.net HTTP request length 13229 ...
- UML学习笔记1
UML概述:是一种为面向对象软件设计提供的建模语言. 构成:事物things关系relationshs图diagrams UML事物:构件事物 行为事物 分组事物 注释事物 UML关系:依赖depen ...
- CentOS上的RabbitMQ安装
1. erlang安装配置(这里我们在opt目录下进行安装配置) cd /opt 安装依赖文件: yum install gcc glibc-devel make ncurses-devel open ...
- [Algorithm Basics] Sorting, LinkedList
Time complexity: Binary search O(log2 n): i=0. n elements: ------------------- i=1. n/2 ...