一、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内置对象及表达式语言的更多相关文章

  1. Java EE.JSP.内置对象

    JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象.JSP提供了九中内置对象:request.response.out.session.ap ...

  2. Java学习--jsp内置对象

    九个内置对象,其中Out,request,response,session,application常用 get与post区别: request对象: response对象: 请求转发与请求重定向的区别 ...

  3. 9.Java web—JSP内置对象

    容器内置了9大对象,这些对象在jsp页无需实例化,可以直接使用. 分别为request. response .session. application .out. pageContext .confi ...

  4. java之jsp内置对象

    1.out对象 <% out.println("金鳞岂是池中物,<br>"); out.println("一遇风云变化龙.<br>" ...

  5. [Java web] JSP 内置对象

    1. Application 服务器启动后产生,所有用户共用一个Application,可以往里面存一些键值对 2. Session 会话对象,第一个JSP页面被装载时自动创建.从一个客户打开浏览器并 ...

  6. Java学习-jsp内置对象Session

  7. Jsp内置对象及EL表达式的使用

    一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...

  8. JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础

    JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...

  9. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

    Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...

随机推荐

  1. 利用maven开发springMVC项目(二)——框架配置

    申明:主要内容来源于大神博客(使用IntelliJ IDEA开发SpringMVC网站(二)框架配置),我只是用eclipse自己练习使用,记录下来也只是为了学习使用,没有任何的商业用途,侵权必删. ...

  2. Vue指令 常见的几个内置指令

    1.v-if指令:判断指令,根据表达式值得真假来插入或删除相应的值. 2.v-show指令:条件渲染指令,无论返回的布尔值是true还是false,元素都会存在在html中,只是false的元素会隐藏 ...

  3. Java运算符使用总结(重点:自增自减、位运算和逻辑运算)

    Java运算符共包括这几种:算术运算符.比较运算符.位运算符.逻辑运算符.赋值运算符和其他运算符.(该图来自网络) 简单的运算符,就不过多介绍使用了,可自行测试.关于赋值运算,可以结合算术运算和位运算 ...

  4. yyy loves Maths VII(状压DP)

    题目背景 yyy对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为"厄运数字" 题目描述 一群同学在和yyy玩一个游戏 每次,他们会给yyy ...

  5. 【Java项目】GUI图形用户界面(不断更新中!)

    <目录> 1 创建一个简单的窗体 2 如何进行事件监听 (1) 按钮监听 (2) 键盘监听 (3) 鼠标监听 3 容器 (1) 创建一个简单的对话框 (2) 创建一个简单的模态对话框 (3 ...

  6. linux 命令 uniq

    linux命令uniq去重 实例详细说明linux下去除重复行命令uniq 一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉 ...

  7. HBase(3)-安装与Shell操作

    一. 安装 1. 启动Zookeeper集群 2. 启动Hadoop集群 3. 上传并解压HBase -bin.tar.gz -C /opt/module 4. 修改配置文件 #修改habse-env ...

  8. 爬虫常用的 urllib 库知识点

    urllib 库 urllib 库是 Python 中一个最基本的网络请求库.它可以模仿浏览器的行为向指定的服务器发送请求,同时可以保存服务器返回的数据. urlopen() 在 Python3 的 ...

  9. 搜索引擎的选择与在chrome上的设置

    1  优缺点分析 百度:广告多,但是电脑端可以用Adblock Plus屏蔽:搜索内容有很多百度自家内容,如百家号.百度知道.百度文库.百度贴吧等,在搜索教程的时候很实用,但是不适合偏专业性搜索,很多 ...

  10. Why mobile web apps are slow

    http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/ I’ve had an unusual number of interest ...