一、JSP内置对象
JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象。
JSP提供了9种内置对象:
(一)、request
简述:
JSP编程中最常用的对象,代表来自客户端的请求,调用request对象相应的方法可以获取关于客户请求的信息。
常见方法的用法示例:
<font size=5>
<br>客户端使用的协议是:
<%
String protocol = request.getProtocol();
out.println(protocol);
%>
<br>获取接收客户提交信息的页面:
<%
String path = request.getServletPath();
out.println(path);
%>
<br>获取客户提交信息的长度:
<%
int length = request.getContentLength();
out.println(length);
%>
<br>获取HTTP头文件中User-Agent的值:
<%
String headerFirst = request.getHeader("User-Agent");
out.println(headerFirst);
%>
<br>获取HTTP头文件中accept的值:
<%
String headerSecond = request.getHeader("accept");
out.println(headerSecond);
%>
<br>获取HTTP头文件中Host的值:
<%
String headerThird = request.getHeader("Host");
out.println(headerThird);
%>
<br>获取HTTP头文件中accept-encoding的值:
<%
String headerFourth = request.getHeader("accept-encoding");
out.println(headerFourth);
%>
<br>获取客户的IP地址:
<%
String IP = request.getRemoteAddr();
out.println(IP);
%>
<br>获取客户机的名称:
<%
String clientName = request.getRemoteHost();
out.println(clientName);
%>
<br>获取服务器的名称:
<%
String serverName = request.getServerName();
out.println(serverName);
%>
<br>获取服务器的端口号:
<%
int serverPort = request.getServerPort();
out.println(serverPort);
%>
</font>
(二)、response
简述:
该对象用于向客户端发送数据,例如Cookie、HTTP文件头信息等数据。
通过response对象组织发送到客户端的信息,但组织方式比较底层故不建议一般程序开发人员使用,一般需向客户端发送文字信息时直接用out对象。
常见方法的用法说明及示例:
①、addCookie(Cookie cookie):向response对象添加一Cookie对象来保存客户端的用户信息,通过request对象的getCookies()方法获取该Cookie。
Cookie cookie = new Cookie("name","dlut");
response.addCookie(cookie);
②、addHeader(String name,String value):向response对象添加HTTP文件头,该头文件会传到客户端,若同名文件头存在则覆盖原来的文件头。
③、containsHeader(String name):判断response对象中指定名字的HTTP文件头是否存在。
④、sendError(int sc):向客户端发送错误信息。
⑤、setHeader(String name,String value):设定指定名字的HTTP文件头的值,若该值存在改值将被新值覆盖。
eg:让网页每隔5秒刷新一次
response.setHeader("Refresh","5");
⑥、setContentType(String value):设定返回response对象的类型。
⑦、sendRedirect(String url):将请求重新定义到一个新的页面。
(三)、out
简述:
out对象表示向客户端发送数据的对象,通过该对象发送的内容将在浏览器上显示,属于文本。
out对象内部包含了一个缓冲区。
常用方法:
print()、println()、clear()、clearBuffer()、flush()、getBufferSize()及getRemaining()
(四)、session
简述:
会话(session)是同一个用户发起的多个请求的集合,当用户第一次向站点发送请求时,服务器会创建一会话(session)对象,并为该对象分配一个唯一的会话ID,该会话ID作为每个请求的一部分传递,以此将用户与会话对象匹配便于让服务器跨多个请求记住客户机的状态。
会话(session)中保存和检索的信息必须是Java Object对象,而不是int等基本数据类型。
用法说明:
1.获取会话(session)对象
通过调用HttpServletRequest的getSession()获取当前请求的session对象。通常通过制定getSession()的参数为true使不存在现成的会话时自动创建一会话对象。
HttpSession session = request.getSession(true);
HttpSession对象生存与服务器上,通过Cookie或URL这类后台机制自动关联到请求的发送者。
2.存储与读取属性值
会话对象提供了一个内建的数据结构,该结构可以保存任意数量的键值对。
(1).存储
通过调用session对象的setAttribute(String name,Object object)方法存储属性值。
(2).读取
通过调用session对象的getAttribute(String name)方法读取属性值。
(五)、application
简述:
该对象代表运行在服务器上的Web应用程序,相当于Servlet上下文。
该对象一旦创建后会一直保持下去直至服务器关闭。
常见方法的用法说明:
方法名称 | 方法说明 |
getAtteibute(String name) | 返回由name指定名字的application对象属性的值,该值为一Object对象。 |
setAttribute(String name,Object object) | 用object初始化某个属性,该属性由name指定。 |
getAtteibuteNames() | 返回所有application对象属性的名字,结果集是一Enumeration(枚举)类的实例。 |
getInitParameter(String name) | 返回application初始化参数属性值,属性由name指定。 |
getServerInfo() | 获得当前版本Servlet编译器的信息。 |
getMimeType() | 获取组件MIME的类型。 |
getRealPath() | 获取组件在服务器上的真实路径。 |
(六)、config
简述:
config内置对象是ServletConfig类的一个实例,用于JSP引擎在Servlet初始化时,通过config向它(Servlet)传递信息。这种信息可以是属性名/值匹配的参数,也可以是通过ServletContext对象传递的服务器的有关信息。一般在JSP开发中很少用到config内置对象,只有在编写Servlet时若需要重载Servlet的init()方法时才会用到。
常用方法:
方法名称 | 方法说明 |
getServletContext() | 返回 一个含有服务器相关信息的ServletContext对象。 |
getInitParameter(String name) | 返回初始化参数的值 |
getInitParameterNames() | 返回包含了Servlet初始化所需要的所有参数,返回类型是枚举型 |
(七)、pagecontext
简述:
pageContext内置对象是一个比较特殊的对象,它相当于页面中所有其他对象功能的最大集成者,即使用它可以访问到本页面中所有其他的对象,例如前面已经描述的request、response、out和page对象等。由于在JSP中request和response等对象本来就可以通过直接调用方法使用,所以pageContext对象在实际JSP开发中很少使用到。
常用方法:
方法名称 | 方法说明 |
getRequest() | 返回当前页面中的request对象。 |
getResponse() | 返回当前页面中的response对象。 |
getSession() | 返回当前页面中的session对象。 |
getServletContext() | 返回当前页面中的application对象。 |
getPage() | 返回当前页面中的page对象。 |
getOut() | 返回当前页面中的out对象。 |
getException() | 返回当前页面中的exception对象。 |
getServletConfig() | 返回当前页面中的config对象。 |
setAttribute(String name) | 给指定的属性名设置属性值。 |
getAttribute(String name) | 根据属性名找到相应的属性值。 |
setAttribute(String name, Object obj, int scope) | 在给定的范围内设置相应的属性值。 |
getAttribute(String name, int scope) | 在给的范围内获取相应的属性值。 |
findAttribute(String name) | 寻找一个属性并返回,如果查找不到则返回null。 |
removeAttribute(String name) | 通过属性名删除掉某个属性。 |
removeAttribute(String name, int scope) | 在指定的某个范围里删除某个属性。 |
getAttributeScope(String name,int scope) | 返回某属性的作用域。 |
getAttributeNamesInScope(int scope) | 返回指定范围内的所有属性名的枚举。 |
release() | 释放pageContext占据的所有资料。 |
forward(String relativeURLpath) | 使用当前页面重导到另一个页面。 |
include(String relativeURLpath) | 使用当前位置包含的另一个页面。 |
(八)、page
简述:
page对象有点类似于Java编程中的this指针,就是指当前JSP页面本身。page是java.lang.Object类的对象。page对象在实际开发过程中并不经常使用。
常用方法:
方法名称 | 方法说明 |
getClass() | 返回当时Object的类。 |
hashCode() | 返回此时Object的哈希代码。 |
toString() | 将此时的Object类转换成字符串。 |
equals(Object object) | 比较此对象是否与指定的对象相等。 |
copy(Object object) | 将此对象复制到指定的对象中。 |
clone() | 对此对象进行克隆。 |
(九)、exception
简述:
该对象用来处理JSP文件在执行时所有发生的错误及异常。
常用方法:
方法名称 | 方法说明 |
getMessage() | 返回错误信息。 |
printStackTrace() | 以标准错误形式输出一个错误及错误的堆栈。 |
toString() | 以字符串形式返回一个对异常的描述。 |
注意事项:(很重要)
必须在<%@page isErrorPage="true"%>的情况下才可以使用内嵌对象exception。
二、JSP内置对象对应类型及作用范围
JSP内置对象 | 对应类型 | 作用范围 |
request | javax.servlet.servletRequest | request |
response | javax.servlet.servletResponse | page |
session | java.servlet.http.HttpSession | session |
application | java.servlet.servletContext | application |
page | java.lang.Object | page |
out | java.servlet.jsp.JspWrite | page |
pagecontext | java.servlet.jsp.PageContext | page |
config | java.servlet.servletConfig | page |
exception | java.lang.throwable | page |
三、表达式语言
表达式语言(EL):与JSP脚本相比,EL提供了一种更加简便的生成动态Web页面的方式。
基本语法:
${expr}:$为EL语法中的输出符号,expr为EL有效表达式。EL有效表达式包含文字、操作符、变量(对象引用)及函数调用。
基本语法示例:
<!--Boolean-->
${true }<br>
<!--Integer与Float-->
${23 + 15.28 }<br>
${13 < 5 }<br>
${(12 > 5)&&(a!=b) }<br>
<!--String-->
${"Hello!" }<br>
<!--Null-->
${null }<br>
隐式对象:
EL表达式语言除了输出JSP页面中定义变量外还可对JSP页面的相关信息进行操作。为方便这些操作,EL提供了11个隐式对象。
类别 | 标识符 | 描述 |
JSP | pageContext | JSP页面的上下文 |
作用域 | pageScope | 与page作用域的属性名称和值相关联的Map类 |
requestScope | 与request作用域的属性名称和值相关联的Map类 | |
sessionScope | 与session作用域的属性名称和值相关联的Map类 | |
applicationScope | 与application作用域的属性名称和值相关联的Map类 | |
请求参数 | param | 存储请求参数名值对的Map类 |
paramValues | 将请求参数的所有值作为String数组存储的Map类 | |
请求头 | header | 按名称存储请求头部主要值的Map类 |
headerValues | 按请求头部的所有值作为String数组存储的Map类 | |
Cookie | cookie | 按名称存储请求附带的Cookie的Map类 |
初始化参数 | initParam | 按名称存储Web应用程序上下文初始化参数的Map类 |
这11个隐式对象中只有pageContext是与JSP内置对象所共有的。
因pageContext拥有访问所有其他8个JSP内置对象的功能,故可通过EL访问所有的JSP内置对象。
EL11个隐式对象中除pageContext以外其他的隐式对象均为Map类型。
存取器:
EL提供了两种不同的存取器:
1.点运算符:"." 通常用于访问对象的属性。
2.方括号运算符:"[]" 用于检索数组和集合的元素。
与JSP脚本不同的是若应用EL存取器的对象为null时,那么EL将输出null到JSP页面而不会抛出异常。
Java EE JSP内置对象及表达式语言的更多相关文章
-
Java EE.JSP.内置对象
JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象.JSP提供了九中内置对象:request.response.out.session.ap ...
-
Java学习--jsp内置对象
九个内置对象,其中Out,request,response,session,application常用 get与post区别: request对象: response对象: 请求转发与请求重定向的区别 ...
-
9.Java web&mdash;JSP内置对象
容器内置了9大对象,这些对象在jsp页无需实例化,可以直接使用. 分别为request. response .session. application .out. pageContext .confi ...
-
java之jsp内置对象
1.out对象 <% out.println("金鳞岂是池中物,<br>"); out.println("一遇风云变化龙.<br>" ...
-
[Java web] JSP 内置对象
1. Application 服务器启动后产生,所有用户共用一个Application,可以往里面存一些键值对 2. Session 会话对象,第一个JSP页面被装载时自动创建.从一个客户打开浏览器并 ...
- Java学习-jsp内置对象Session
-
Jsp内置对象及EL表达式的使用
一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...
-
JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础
JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...
-
JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
随机推荐
-
ubuntu右上角时间不显示
重启unity sudo killall unity-panel-service
-
TensorFlow安装(Ubuntu 16.04)
原文链接 github not support on this platform pip安装: # Ubuntu/Linux 64-bit $ sudo apt-get install python- ...
-
在树莓派(Raspberry Pi)上编译安装更新版本的Python
Raspiban Wheezy上预装的Python3版本是3.2.3,本文将介绍升级到3.4.3的方法. 此文也适用于安装其它版本(比如最新版本)的Python. 我用的是B+型的树莓派,装的系统是2 ...
-
Web应用程序系统的多用户权限控制设计及实现-总结【11】
Web应用程序系统的多用户权限控制设计及实现通过10章内容讲述已经结尾了.写这些博客的目的很简单,方便自己以后参考,也留下自己编程岁月的一些痕迹.对于编程,对于工作,真是心甘情愿的就好. 由于这只是一 ...
-
CSS3圆角
使用border-radius属性: (1): (2)但是,如果你要在四个角上一一指定,可以使用以下规则: 四个值: 第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角. 三个值: ...
-
Recon-Erlang线上系统诊断工具
Erlang系统素以稳定可靠闻名,但是它也是c实现的,也是要管理比如内存,锁等等复杂的事情,也会出现Crash,而且crash的时候大部分原因是因为内存问题.为此erlang运行期提供了强大的自省机制 ...
-
一、HTML和CSS基础--HTML+CSS基础课程--第1部分
第一章 HTML介绍 Html和CSS的关系 1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字.图片.视频等. 2. CSS样式是表现.就像网页的外衣.比 ...
-
【转】第5篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+委托回调方法分析
作者: 牛A与牛C之间 时间: 2013-11-19 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第5篇:Xilium CefGlue 关于 CLR Object 与 JS ...
-
极大似然估计&;最大后验概率估计
https://guangchun.wordpress.com/2011/10/13/ml-bayes-map/ http://www.mi.fu-berlin.de/wiki/pub/ABI/Gen ...
-
使用Qt创建第一个OpenCV的Gui应用
写在前面 学习OpenCV有一些小日子了,发现群里还有很多初学OpenCV的人像我当初一样跌跌撞撞到处找资料,所以在这里把学习笔记分享给大家,希望有志学习OpenCV进行计算机视觉活动的小伙伴们能少走 ...