JSP_动作和隐式对象
Posted 小企鹅推雪球!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP_动作和隐式对象相关的知识,希望对你有一定的参考价值。
文章目录
JSP_动作
- JSP动作操作XML中的结构控制
servlet
引擎的行为 - 使用JSP动作可以动态插入文本,重新使用JavaBEANS组件,并将用户转发到另一个页面或为Java插件生成
html
- JSP动作元素的语法:
<jsp:action_name attribute = "value" />
- 所有动作都共有两个属性:
id
属性和scope
属性 id
属性唯一标识动作元素,并允许再JSP页面内引用该操作,如果动作创建了一个对象的实例,则id
值可以用于通过隐式对象PageContext
引用这个对象的实例scope
属性标识动作元素的生命周期,id
属性和scope
属性是直接相关的,因为scope
属性决定了与id
关联的对象的使用情况
JSP_常见的动作
jsp:include
动作:<jsp:include page = "relative URL" flush = "true" />
允许将文本插入到正在生成的页面中- 在将JSP页面转换为
servlet
时将文本插入的include
指令不同,jsp:include
动作在请求页面时插入动态文件 jsp:include
的两个属性:1.page
属性,包括页面的相对url
,2.flush
属性,是一个布尔值,确定包含的资源是否在缓冲区之前被刷新
JSP_include动作样例`
date.jsp文件内容
<p>今天是: <%= (new java.util.Date()).toLocaleString()%></p>
index.jsp文件内容
<body>
<h2>include动作示例</h2>
<jsp:include page="date.jsp" flush="true" />
</body>
JSP_useBean动作
useBean
动作使用id
和scope
变量搜索现有对象,如果没有找到对象,则回尝试创建指定对象useBean语法
:<jsp:useBean id = "name" class = "package.class" />
- 当加载了
bean
类时,可以使用jsp:setProperty和jsp:getProperty
操作修改和检索bean
类的属性
useBean动作的属性
calss
:指定bean
的完整包名称type
:指定将引用对象的变量的类型beanName
:给出由java.beans.Beans类instantiate()
方法指定的bean
的名称。
JSP_setProperty 动作
setProperty
动作操作Bean
属性,在使用setProperty 动作
之前,Bean
已定义- 第一种使用
setProperty 动作
的方式:可以在jsp:setProperty
之后,但是在jsp:useBean
元素之外
<jsp:useBean id = "myName" ... />
...
<jsp:setProperty name = "myName" property = "someProperty" .../>
在这种情况下.无论时实例化新的Bean
对象,还是找到现有的bean
对象,都可以执行jsp:setProperty
- 第二种使用
setProperty 动作
的方式:jsp:setProperty
可以在jsp:useBean
元素的正文内的上下文内出现
<jsp:useBean id = "myName" ... >
...
<jsp:setProperty name = "myName" property = "someProperty" .../>
</jsp:useBean>\\
在这种情况下,只有当一个新对象被实例化时,才会执行jsp:setProperty
,如果找到了一个现有的对象,则不行jsp:setProperty
jsp:setProperty动作相关的属性
name
属性;指定将设置其属性的bean
,bean
已经定义property
属性:表示要设置的属性,值“*”
表示名称与bean
属性名称匹配的所有请求参数将被传递给对应的setter
方法。value
属性:要分配给给定属性的值。参数的值为null
,或者参数不存在,则setProperty
操作被忽略。param
属性:param
属性是属性要接收的值的请求参数的名称。不能同时使用值和参数,但是不允许使用。
JSP_getProperty动作
getProperty
动作用于检索给定属性得到值,并将其转换为字符串,最后将其插入输入getProperty
动作只有两个属性,这两个属性都是必需的。getProperty
动作使用如下
<jsp:useBean id = "myName" ... />
...
<jsp:getProperty name = "myName" property = "someProperty" .../>
getProperty
动作属性如下:
name
属性,要检索的属性bean
名,bean
已经提前定义property
属性:要检索bean
属性的名称
JSP_setProperty 和getProperty动作样例
设置Bean类Message
public class Message {
private String message = "这是bean类默认信息";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
创建一个main.jsp
文件,加载bean
类,并设置/获取传入的参数
<head>
<title>在JSP使用JavaBeans示例</title>
</head>
<body>
<div style="margin:auto;text-align:center;">
<h2>在JSP使用JavaBeans示例</h2>
<hr/>
<jsp:useBean id="msg" class="com.yiibai.Message" />
<p>获取默认设置的信息是:<jsp:getProperty name="msg" property="message" /></p>
<jsp:setProperty name="msg" property="message" value="这是我传入的信息" />
<p>获取设置的信息是:<jsp:getProperty name="msg" property="message" /></p>
</div>
</body>
JSP_forward动作
<jsp:forward>
动作终止当前页面的操作,并将请求转发到另一个资源,例如静态页面,另一个JSP页面或Java Servlet
。<jsp:forward>
语法:<jsp:forward page = "Relative URL" />
forward动作的属性
page
:包含另一个资源的相对url
,例如静态页面,另一个JSP页面或Java Servlet
。- 创建
date.jsp
和main.jsp
页面 date.jsp
页面内容如下
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
mian.jsp内容
<jsp:forward page = "date.jsp" />
<p>舍弃main.jsp内容内容</p>
当访问main.jsp
时,会从其中丢弃main
的内容,并显示来自转发目标页面的内容
JSP_text动作
- 可以使用
<jsp:text>
操作将模板文本写入JSP页面和文档 text动作
语法:<jsp:text>Template data</jsp:text>
- 模板的主体不能包含其他元素; 它只能包含文本和EL表达式
- 在XML文件中不能使用诸如
${whatever> 0}
的表达式,因为大于符号是非法的,使用gt
形式来代替, - 例如
${whatever gt 0}
或替代方法是将值嵌入到CDATA
中。如例 -<jsp:text><![CDATA[<br>]]></jsp:text>
- 如果需要包括
DOCTYPE
声明,如XHTML
,还要使用<jsp:text>
元素
<jsp:text><![CDATA[<!DOCTYPE html PUBLIC
"DTD/xhtml1-strict.dtd">]]></jsp:text>
<head><title>jsp:text action</title></head>
<body>
<books><book><jsp:text>
Welcome to JSP Programming
</jsp:text></book></books>
</body>
</html>
JSP_隐式对象
- JSP支持九个自动定义的变量,也成为隐式对象,
request
与请求相关联的HttpServletRequest对象。response
与客户端的响应关联的HttpServletResponse对象。out
将输出发送到客户端的PrintWriter对象。session
与请求相关联的HttpSession对象。application
与应用程序上下文相关联的ServletContext对象。config
与该页面相关联的ServletConfig对象。pageContext
封装了使用服务器特定的功能,如更高性能的JspWriter
对象。page
只是一个同义词,用于调用由编译的servlet类定义的方法。Exception
异常对象允许指定的JSP访问异常数据。
JSP_request对象
request
对象是javax.servlet.http.HttpServletRequest
对象的一个实例。每当客户端请求页面时,JSP引擎将创建一个新对象来表示该请求。request
对象提供了获取包括表单属性,cookie
,http
方法等http
头部信息的方法
JSP_response对象
response
对象是javax.servlet.http.HttpServletResponse
对象的一个实例。就像服务器创建request对象一样,它还创建一个对象来表示对客户端的响应。response
对象还定义了处理创建新HTTP
头的接口。通过此对象,JSP程序员可以添加新的Cookie
或日期戳
,HTTP状态代码等。
JSP_out对象
out
隐式对象是javax.servlet.jsp.JspWriter
对象的一个实例,用于在响应中发送内容。- 初始化
JspWriter
对象根据页面是否缓存而不同地实例化。缓冲可以通过使用page
指令的buffered ='false'
属性来关闭。 JspWriter
对象包含与java.io.PrintWriter
类大部分相同的方法
列出了用于写入boolean,char,int,double,object,String
等类型数据的重要方法。
out.print(dataType dt)
:打印数据类型值out.println(dataType dt)
:打印数据类型值,然后用新行(换行)字符终止行。out.flush()
:刷新流
JSP_session对象
session
对象是javax.servlet.http.HttpSession
的一个实例,其行为与Java Servlet
下的会话对象行为完全相同。session
对象用于跟踪客户端请求之间的客户端会话
JSP_application对象
application
对象是生成的Servlet的ServletContext
对象的直接包装,实际上是javax.servlet.ServletContext
对象的一个实例。application
对象是JSP
页面在其整个生命周期中的表示。- 当JSP页面被初始化时,将创建
application
对象,并且在JSP页面被jspDestroy()
方法删除时application
对象也将被删除。 - 通过向
application
对象添加属性值,可以确保组成Web应用程序的所有JSP文件都可以访问它。
JSP_config对象
config
对象是javax.servlet.ServletConfig
的实例化,是生成的servlet的ServletConfig
对象周围的直接包装。config
对象允许JSP访问Servlet或JSP引擎初始化参数,例如:路径或文件位置等。config
对象的语法:config.getServletName();
返回当前servlet
名称,它是包含在WEB-INF\\web.xml文件中定义的<servlet-name>元
素中的字符串。
JSP_pageContext对象
pageContext
对象是javax.servlet.jsp.PageContext
对象的一个实例。pageContext
对象用于表示整个JSP页面。pageContext
对象旨在作为访问有关页面的信息的一种手段,同时避免大部分实现细节。pageContext
对象存储对每个请求的请求和响应对象的引用。应用程序,配置,会话和输出对象是通过访问此对象的属性导出的。pageContext
对象还包含有关发布到JSP页面的指令的信息,包括缓冲信息,errorPageURL和页面范围。pageContext.removeAttribute("attrName")
从所有作用域中删除属性,pageContext.removeAttribute("attrName",
指定页面);
JSP_page对象
page
对象时对该页面实例的实际引用,可以认为它表示的时在整个JSP页面的对象page
独享时this
对象的直接同义词
JSP_exception对象
1.exception
对象是一个包含上一页抛出的异常的包装器。它通常用于生成对错误条件的适当响应
以上是关于JSP_动作和隐式对象的主要内容,如果未能解决你的问题,请参考以下文章