面试题:jsp九大内置对象
我们常说的JSP有九大内置对象分别为:request、response、session、out、pagecontext、page、exception、application、config。
我们知道,JVM只能识别java类,并不能识别JSP代码,那么这些对象是如何产生的的呢?这就要提到Servlet。Servlet就是用Java编写的服务器端程序。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类。
JSP的本质就是Servlet,Servlet是JSP的前身,JSP是Servlet的扩展;当JSP第一次被访问时,Web容器将JSP代码编译成JVM能够识别的Java类,JSP经编译后就变成了Servlet。(JSP与Servlet联系)
JSP中的内置对象都是通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到。
JSP是HTML中内嵌Java代码,侧重页面显示;而Servlet是HTML代码与Java代码分开,侧重逻辑控制。(JSP与Servlet区别)
1、request对象(转译后对应javax.servlet.http.HttpServletRequest对象)
request对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据(包括头信息、系统信息、请求方式以及请求参数等)。
request对象的生命周期:一次请求。
request对象的作用域:JSP页面内有效。
request常用的方法:
1 object getAttribute(String name) ----返回指定属性的属性值
2 Enumeration getAttributeNames() ----返回所有可用属性名的枚举
3 String getCharacterEncoding() ----返回字符编码方式
4 int getContentLength() ----返回请求体的长度(以字节数)
5 String getContentType() ----得到请求体的MIME类型(多用途互联网邮件扩展类型)
6 ServletInputStream getInputStream() ----得到请求体中一行的二进制流
7 String getParameter(String name) ----返回name指定参数的参数值
8 Enumeration getParameterNames() ----返回可用参数名的枚举
9 String[] getParameterValues(String name) 返回包含参数name的所有值的数组
10 String getProtocol() ----返回请求用的协议类型及版本号
11 String getScheme() ----返回请求用的计划名,如:http.https及ftp等
12 String getServerName() ----返回接受请求的服务器主机名
13 int getServerPort() ----返回服务器接受此请求所用的端口号
14 BufferedReader getReader() ----返回解码过了的请求体
15 String getRemoteAddr() ----返回发送此请求的客户端IP地址
16 String getRemoteHost() ----返回发送此请求的客户端主机名
17 void setAttribute(String key,Object obj)---设置属性的属性值
18 StringgetRealPath(String path) ----返回一虚拟路径的真实路径
19 String request.getContextPath() ----返回上下文路径
2、response对象 (转译后对应javax.servlet.http.HttpServletResponse对象)
response对象表示服务器端对客户端的回应。主要用于设置头信息、跳转、Cookie等。
response的生命周期:一次响应。
response的作用域:只在JSP页面内有效。
response常用方法:
public void setHeader(java.lang.String name, java.lang.String value) ----设置头信息的名字和内容
public void sendRedirect(java.lang.String location) throws java.io.IOException ----跳转,由一个页面跳往另外一个页面
public void addCookie(Cookie cookie) ----向客户端加入cookie
public void setContentType(java.lang.String type) ----设置内容的返回类型
在了解了request与response的用法后,有一个重要的问题需要清楚,请求转移与请求重定向的区别:
请求重定向:response.sendRedirect(), 客户端行为,从本质上讲等同于两次请求,前一次的请求对象不会保持,地址栏的URL地址会改变。
请求转发:request.getRequsetDispatcher().forward(requset,response);服务器行为,是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。(服务器内部转发,所有客户端看不到地址栏的改变)。
3、session对象 (转译后对应javax.servlet.http.HttpSession对象)
session对象用于存储特定的用户会话所需的信息 。
session对象生命周期:从存入数据时开始,默认闲置30分钟后失效。
session对象作用域:会话内有效。(从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话;因为http是无状态的,Session需要使用Cookie作为识别标志。该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。)
session常用方法:
public String getId() ----获取Session对象编号。
public void setAttribute(String key,Object obj)----将参数Object指定的对象obj添加到Session对象中,并为添加的对象指定一个索引关键字。
public Object getAttribute(String key) ----获取Session对象中含有关键字的对象。
public Boolean isNew() ----判断是否是一个新session
4、application对象(转译后对应javax.servlet.ServletContext对象)
application对象用于存储和访问来自任何页面的变量,类似于 session 对象。不同之处在于,所有的用户分享一个 Application 对象,类似于“全局变量”,而 session 对象和用户的关系是一一对应的。
application对象生命周期:服务器启动发送第一个请求时就产生了Application对象,直到服务器关闭。
application对象常用方法:
setAttribute(String key,Object obj) ----将参数Object指定的对象obj添加到Application对象中,并为添加的对象指定一个索引关键字。
getAttribute(String key) ----获取Application对象中含有字的对象。
5、out 对象(转译后对应javax.servlet.jsp.jspWriter对象)
out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。(注意要及时关闭输出流)
其主要方法如下:
clear() ----清除缓冲区中的数据,若缓冲区已经是空的,则会产生IOException异常;
clearBuffer() ----清除缓冲区的数据,若缓冲区为空,不会产生IO异常;
flush() -----直接将目前暂存于缓冲区的数据输出;
getBufferSize()----返回缓冲区的大小;
getRemaining()----返回缓冲区的剩余空间大小;
isAutoFlush() ----返回布尔值表示是否自动输出缓冲区的数据;
输出数据的一些方法:
newLine() ----输出换行;
print(datatype data) ----输出不同数据类型的数据;
println(datatype data) ----输出不同数据类型的数据,并自动换行;
6、pageContext 对象(转译后对应javax.servlet.jsp.PageContext对象)
pageContext对象能够存取其他隐含对象,如request、reponse、session、application 等对象。(实际上,pageContext对象提供了对JSP页面所有的对象及命名空间的访问。)
pageContex常用方法:
void setAttribute(String name, Object value, int scope)----pageContext对象存取其他隐含对象属性的方法,此时需要指定范围的参数:范围参数有四个,分别代表四种范围:PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE
pageContext对象取得其他隐含对象的方法:
Exception getException( ) ----回传网页的异常
JspWriter getOut( ) ----回传网页的输出流
Object getPage( ) ----回传网页的Servlet 实体
ServletRequest getRequest( ) ----回传网页的请求
ServletResponse getResponse( ) ----回传网页的响应
ServletConfig getServletConfig( ) ----回传此网页的ServletConfig 对象
ServletContext getServletContext( ) ----回传此网页的执行环境
HttpSession getSession( ) ----回传和网页有联系的会话
3.PageContext对象提供取得属性的方法
Object getAttribute(String name, int scope) ----回传name 属性,范围为scope的属性对象,回传类型为Object
Enumeration getAttributeNamesInScope(int scope) ----回传所有属性范围为scope 的属性名称,回传类型为Enumeration
int getAttributesScope(String name) ----回传属性名称为name 的属性范围
void removeAttribute(String name) ----移除属性名称为name 的属性对象
void removeAttribute(String name, int scope) ----移除属性名称为name,范围为scope 的属性对象
void setAttribute(String name, Object value, int scope) ----指定属性对象的名称为name、值为value、范围为scope
Object findAttribute(String name) ----寻找在所有范围中属性名称为name 的属性对象
7、config 对象(转译后对应javax.servlet.ServletConfig对象)
config对象的主要作用是取得服务器的配置信息。
config对象常用方法:
getServletContext() ----返回 一个含有服务器相关信息的ServletContext对象。
getIntParameter(String name) ----返回初始化参数的值。
getIntParameterNames() ----返回包含了Servlet初始化所需要的所有参数,返回类型是枚举型
8、page对象 (转译后对应this)
page对象代表JSP本身,只有在JSP页面内才是合法的。page对象有点类似于Java编程中的this指针,就是指当前JSP页面本身。
9、exception对象(转译后对应java.lang.Throwable对象)
exception对象的作用是显示异常信息,必须在page 指令中设定< %@ page isErrorPage="true" %>才能使用,在一般的JSP页面中使用该对象将无法编译JSP文件。
exception对象常用方法:
getMessage( ) ----该方法返回错误信息。
printStackTrace( ) ---- 该方法以标准错误的形式输出一个错误和错误的堆栈。
toString() ----该方法以字符串的形式返回一个对异常的描述。
面试题:jsp九大内置对象的更多相关文章
- JSP九大内置对象的作用和用法总结?
JSP九大内置对象的作用和用法总结? 1.request对象javax.servlet.http.HttpServletRequest request对象代表了客户端的请求信息,主要用于接受通过HTT ...
- JSP 九大内置对象
JSP 九大内置对象: 一 out对象主要用来向客户端输出各种数据类型内容,并且管理应用服务器上的输出缓冲区.out.print()//输出数据out.newLine()//输出一个换行符out.fl ...
- Jsp九大内置对象及其作用域
本文主要介绍Jsp九大内置对象及其作用域,着重介绍几个常用的,希望对初学者有所帮助. 1 Jsp九大内置对象 2 详细介绍 2.1 request javax.servlet.http.HttpSer ...
- JSP九大内置对象分析
JSP九大内置对象分为三类: 1.输入输出对象:out对象.response对象.request对象 2.通信控制对象:pageContext对象.session对象.application对象 3. ...
- JSP九大内置对象(转载)
JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 1. ...
- JSP九大内置对象和四个作用域
JSP九大内置对象和四个作用域 在学习JSP的时候,首先就要先了解JSP的内置对象,什么是内置对象呢?内置对象也叫隐含对象,就是不需要预先声明就可以在脚本代码和表达式中随意使用.而这样的内置对象在JS ...
- JSP九大内置对象和四种属性范围解读
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文首先主要解说了JSP中四种属性范围的概念.用法与实例. 然后在这个基础之上又引入了九 ...
- JSP——九大内置对象和其四大作用域
一.JSP九大内置对象: JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象. Request:代表的是来自客户端的请求,例如我们在FORM ...
- 一、JSP九大内置对象 二、JAVAEE三层架构和MVC设计模式 三、Ajax
一.JSP九大内置对象###<1>概念 不需要预先申明和定义,可以直接在jsp代码中直接使用 在JSP转换成Servlet之后,九大对象在Servlet中的service方法中对其进行定义 ...
随机推荐
- 关于15桥梁课程1&2的笔记以及待做事项的梳理
1.指针所占用的空间是固定的 2.void *malloc(sizeof(int)); (这玩意耗时间,老师说通过内存池解决) free(p);free(p); 两次free()报错,正确的做法: ...
- 关于for循环中是否需要缓存length值的个人总结
在JS性能优化中,有一个常见的小优化,即 // 不缓存 for (var i = 0; i < arr.length; i++) { ... } // 缓存 var len = arr.leng ...
- Ubuntu server 安装samba
安装Samba时,出现了一下问题: linux-image-generic***依赖出现问题,无法安装Samba. 使用apt-get update 更新,吓尿了,全部是忽略,源是系统自带的.改成其他 ...
- 【转】C# Socket编程(2)识别网络主机
[转自:https://www.cnblogs.com/IPrograming/archive/2012/10/11/CSharp_Socket_2.html] 一个客户端想要发起一次通信,先决条件就 ...
- vuecli3修改项目启动端口
工作中可能存在启动多个项目的时候,默认端口号会被占,导致启动错误,这种情况下只要把要启动的项目的端口号换掉启动未用的端口就可以了,具体实现如下: vuecli3中的端口文件存放目录为:node_mod ...
- Python脚本MAC上双击执行,如何设置?
1.在文件首行添加如下代码: 如果你想使用默认python版本执行当前的脚本,即python2,则需要添加 #!/usr/bin/env python # -*- coding: utf-8 -*- ...
- (转)android adb pull and push
adb命令下pull的作用是从手机端向电脑端拷文件. 命令:adb pull /sdcard/**.txt D:\ 说明:将手机卡中的某个文本文件 ...
- List<Map> 排序
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.u ...
- linux 查看系统信息和安装哪些软件的命令
https://www.cnblogs.com/wangkongming/p/4531341.html 查看系统磁盘硬盘占用率 https://blog.csdn.net/aaashen/articl ...
- erlang的dict和maps模块
erlang在r17以后增加了map这个数据结构,在之前,类似map的需求用dict模块来实现,这里直接贴一下相关的操作 dict D = dict:new(). D1 = dict:store(k1 ...