菜单

JSP教程(三)–JSP中”预定义变量”的使用

2020年1月29日 - 金沙国际唯一官网

为了简化JSP表达式和scriptlets中的代码,提供了8种自动定义的变量,有时称做implicit
objects(固有对象)。它们是:request,response,out,session,application,config,pageContext,和
page。下面我们来详细的了解它们。

jsp本质上是一个技术,能够动态生成html代码,当然现在你可以把它理解为一种特殊的html文件,

以下内容引用自:

  request

语法

JSP隐式对象是Java对象,JSP容器使隐式对象在每一个页面中对开发人员是可用的,开发人员可以直接调用它们而不用显式声明。JSP隐式对象也称为预定义的变量。

  与request相联系的是HttpServletRequest类,使您可以得到request的参数(通过getParameter方法),request
的类型(GET,POST,HEAD,等等),和引入的HTTP头(cookies,Referer,等等)。严格来说,request是类ServletRequest的一个子类而不是HttpServletRequest类的,事实上,如果request的协议不是HTTP,那麽它几乎不会工作。

脚本

语法格式:

<% 代码片段(java) %>

案例:

<html>
<head><title>Hello World</title></head>
<body>
Hello World!<br/>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>

JSP支持九个隐式对象,如下所示:

  response

声明

一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。
语法格式:

<%! 代码片段(java) %>

案例:

<%! int i = 0; %> 
<%! int a, b, c; %> 
<%! Circle a = new Circle(2.0); %> 
对象 描述
request 这是与请求关联的HttpServletRequest 对象。
response 这是与客户端响应关联的HttpServletResponse对象。
out 这是用于向客户端发送输出的PrintWriter对象。
session 这是与请求关联的HttpSession对象。
application 这是与应用程序上下文关联的ServletContext对象。
config 这是与页面关联的ServletConfig 对象。
pageContext 这个封装特使用特定服务器的特性,如更高的性能jspwriter。
page 这是this的一个简单的同义词,是用来调用由转换的Servlet类定义的方法。
Exception Exception对象允许指定的JSP访问异常数据。

  对客户端的response与HttpServletResponse
相连。请注意,因为输出流是放入缓冲的,所以可以设置HTTP状态码和response头,尽管在标准的servlets中不允许将之发送到客户端。

表达式

一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。
语法格式:

<%= 表达式 %>

案例:

<html> 
<head><title>A Comment Test</title></head> 
<body>
<p>
   Today's date: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body> 
</html> 

一、request对象

  out

注释

语法格式:

<%-- 这里可以填写 JSP 注释 --%>

其他语法请查看:http://www.runoob.com/jsp/jsp-syntax.html

request对象是javax.servlet.http.HttpServletRequest对象的一个实例。每次客户端请求一个页面时,JSP引擎都会创建一个新的对象来表示那个请求。

  这里使用PrintWriter类来发送输出到客户端。然而,为了使response对象有效,可使用一个PrintWrite类的使用缓冲的版本JspWriter。使用session的属性page
directive,您可以自己定义缓冲的大小,甚至可以在使用了buffer属性后关闭缓冲。也请注意,out仅用于scriptlets之中,因为JSP表达式自动的放入输出流,所以极少需要明确的声明out。

隐式对象


JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。

JSP所支持的九大隐式对象:

对象 描述
request HttpServletRequest类的实例
response HttpServletResponse类的实例
out PrintWriter类的实例,用于把结果输出至网页上
session HttpSession类的实例
application ServletContext类的实例,与应用上下文有关
config ServletConfig类的实例
pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page 类似于Java类中的this关键字
Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象

request对象提供方法来获取HTTP头信息,包括表单数据,cookies,HTTP方法等。

  session

request对象

request对象是javax.servlet.http.HttpServletRequest
类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。

request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。


二、response对象

  应用与request相联系的HttpSession类。因为session是自动创建的,即使没有一个引入的session,这种变量仍可绑定。有一个例外是,如果您用page
directive关闭session,再试图使用session时将导致错误(在JSP页面向servlet转换时)。

response对象

response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。

response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。


response对象是javax.servlet.http.HttpServletResponse对象的一个实例。当服务器创建request对象时,它也创建了代表客户端响应的对象。

  application

out对象

out对象是 javax.servlet.jsp.JspWriter
类的实例,用来在response对象中写入内容。

最初的JspWriter类对象根据页面是否有缓存来进行不同的实例化操作。可以在page指令中使用buffered=’false’属性来轻松关闭缓存。

JspWriter类包含了大部分java.io.PrintWriter类中的方法。不过,JspWriter新增了一些专为处理缓存而设计的方法。还有就是,JspWriter类会抛出IOExceptions异常,而PrintWriter不会。

下表列出了我们将会用来输出boolean,char,int,double,String,object等类型数据的重要方法:

方法 描述
out.print(dataType dt) 输出Type类型的值
out.println(dataType dt) 输出Type类型的值然后换行
out.flush() 刷新输出流

response对象还定义了接口,可以处理创建的新的HTTP
头。通过这个对象JSP程序员可以添加新的cookies或日期stamps,HTTP状态码等。

  使用ServeletContext类,通过使用getServletConfig().getContext()得到。

session对象

session对象是 javax.servlet.http.HttpSession 类的实例。和Java
Servlets中的session对象有一样的行为。

session对象用来跟踪在各个客户端请求间的会话。


三、out对象

  config

application对象

application对象直接包装了servlet的ServletContext类的对象,是javax.servlet.ServletContext
类的实例。

这个对象在JSP页面的整个生命周期中都代表着这个JSP页面。这个对象在JSP页面初始化时被创建,随着jspDestroy()方法的调用而被移除。

通过向application中添加属性,则所有组成您web应用的JSP文件都能访问到这些属性。


out隐式对象是javax.servlet.jsp.
JspWriter对象的一个实例,用于在响应中发送内容。

  是一个ServletConfig类的对象。

config对象

config对象是 javax.servlet.ServletConfig
类的实例,直接包装了servlet的ServletConfig类的对象。

这个对象允许开发者访问Servlet或者JSP引擎的初始化参数,比如文件路径等。

以下是config对象的使用方法,不是很重要,所以不常用:

config.getServletName();

它返回包含在<servlet-name>元素中的servlet名字,注意,<servlet-name>元素在
WEB-INFweb.xml 文件中定义。


最初的JspWriter对象被实例化不同程度地取决于页面是否缓冲。通过使用页面指令的buffered=’false’属性,缓冲可以很容易地关掉。

  pageContext

pageContext 对象

pageContext对象是javax.servlet.jsp.PageContext
类的实例,用来代表整个JSP页面。

这个对象主要用来访问页面信息,同时过滤掉大部分实现细节。

这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。

pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage
URL,页面scope等。

PageContext类定义了一些字段,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE,
APPLICATION_SCOPE。它也提供了40余种方法,有一半继承自javax.servlet.jsp.JspContext
类。

其中一个重要的方法就是removeArribute(),它可接受一个或两个参数。比如,pageContext.removeArribute(“attrName”)移除四个scope中相关属性,但是下面这种方法只移除特定scope中的相关属性:

pageContext.removeAttribute("attrName", PAGE_SCOPE);

JspWriter对象包含大部分与java.io.PrintWriter类相同的方法。然而,JspWriter对象有一些额外的方法用来处理缓冲。与PrintWriter对象不同,JspWriter抛出IOException。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图