jsp page指令 九个内置对象 四种属性范围 两种跳转的区别 <%@ include和jsp:include

jsp中的page指令

 

语法规则:

<@%page attribute1=”value1”  attribute2=”value2”…………%>page指令以<%@page 开始,以%>结束。

 

page常用指令表:

属性

定义

language=”ScriptLanguage”

指定JSP Container用什么语言来编译,目前只支持JAVA语言。默认为JAVA

extends=”className”

定义此JSP网页产生的Servlet是继承哪个

import=”importList”

定义此JSP网页要使用哪些Java API

session=”true|false”

决定此页面是否使用session对象。默认为true

buffer=”none|size in kb”

决定输出流(Input stream)是否又缓冲区。默认为8kb

autoFlush=”true|false”

决定输出流的缓冲区慢了后是否需要自动清除,缓冲区慢了后会产生异常错误(Exception).默认为true

isThreadSafe=”true|false”

是否支持线程。默认为true

errorPage=”url”

如果此页发生异常,网页会重新指向一个url

isErrorPage=”true|false”

表示此页面是否为错误处理页面。默认为false

contentType=”text/html;charset=gb2312”

表示MIME类型和JSP的编码方式。笔者使用例左

pageEncoding=”ISO-8859-1”

编码方式。(笔者已经加入使用的编码)

isELLgnored=”true|false”

表示是否在此JSP页面中EL表达式。true则忽略,反之false则支持。默认为false

 

page指令是针对当前页面的指令,常用的page指令有8个:

1.<%@page language="java"%>设置jsp中用到的语言,用到的是java,也是目前唯一有效的设定

2.<%@page extends="mypackage.myclass"%>设置目前jsp要继承的父类,一般不需要设置,在默认情况下,jsp页面默认的父类是HttpJspBase。

3.<%@page import="java.sql.*"% > jsp页面所用到的类

4.<%@page errorPage="error.jsp"%> 设置该jsp页面出现异常时所要转到的页面,如果没设定,容器将使用当前的页面显示错误信息

5.<%@page isErrorPage="true"%> 设置该jsp页面是否作为错误显示页面,默认是false,如果设置为true,容器则会在当前页面生成一个exception对象,和4拍配使用

6.<%@page contentType="text/html;charset=gb2312"%> 设置页面文件格式和编码方式

7.<%@page isThreadSafe="true"% > 设置容器以多线程还是单线程运行该jsp页面,默认是true,是多线程。设置为false,则以单线程的方式运行该jsp页面

8.<%@page session="true"% > 设置该jsp页面是否可以用到session对象(jsp内置对象,为web容器创建),默认是true,能用到session.设置为false,则用不到

 

jsp page指令 九个内置对象

 

1.request对象 G)F3 Grvb
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。 } +#p!C'XM
B AO8@> .
1 object getAttribute(String name) 返回指定属性的属性值 < ]//T V '
2 Enumeration getAttributeNames() 返回所有可用属性名的枚举 N }za: kp
3 String getCharacterEncoding() 返回字符编码方式 {( gG(0k4t
4 int getContentLength() 返回请求体的长度(以字节数) .vv%,U6b
5 String getContentType() 得到请求体的MIME类型 B|NLi s rM
6 ServletInputStream getInputStream() 得到请求体中一行的二进制流 _U*W(= I
7 String getParameter(String name) 返回name指定参数的参数值 ,>R a^J HZ
8 Enumeration getParameterNames() 返回可用参数名的枚举 A2=|(m ? T
9 String[] getParameterValues(String name) 返回包含参数name的所有值的数组 p%0U^e8iD)
10 String getProtocol() 返回请求用的协议类型及版本号 j7P~o54I0J
11 String getScheme() 返回请求用的计划名,如:http.https及ftp等 IN!7) O4 >
12 String getServerName() 返回接受请求的服务器主机名 6E| x9 b
13 int getServerPort() 返回服务器接受此请求所用的端口号 jqs 40a
14 BufferedReader getReader() 返回解码过了的请求体 3As d 96'u
15 String getRemoteAddr() 返回发送此请求的客户端IP地址 EIGrd<y `
16 String getRemoteHost() 返回发送此请求的客户端主机名 X/c=gkKY
17 void setAttribute(String key,Object obj) 设置属性的属性值 _ jWu9y HF
18 String getRealPath(String path) 返回一虚拟路径的真实路径 7_->| P nL
s~ a +]KQ;


2.response对象 P =-^> 8y
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。 K-5U31 /
YS6K M3=9c
1 String getCharacterEncoding() 返回响应用的是何种字符编码 & KP|f8f1
2 ServletOutputStream getOutputStream() 返回响应的一个二进制输出流 T eLVQ NX
3 PrintWriter getWriter() 返回可以向客户端输出字符的一个对象 |$igJd8}yR
4 void setContentLength(int len) 设置响应头长度 1 W] xiug
5 void setContentType(String type) 设置响应的MIME类型 )g1|?,Uf5n
6 sendRedirect(java.lang.String location) 重新定向客户端的请求 U SN8 b4
l R` r WJ
Ia#ZRC#xa


3.session对象 s-, (0 ^g
session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例. phC x0 5F
} zqmU9+U"
1 long getCreationTime() 返回SESSION创建时间 V?qjGH?
2 public String getId() 返回SESSION创建时JSP引擎为它设的惟一ID号 & F`R z
3 long getLastAccessedTime() 返回此SESSION里客户端最近一次请求时间 A^BbN-/
4 int getMaxInactiveInterval() 返回两次请求间隔多长时间此SESSION被取消(ms) kn a Cp #
5 String[] getValueNames() 返回一个包含此SESSION中所有可用属性的数组 y8A &HUSB
6 void invalidate() 取消SESSION,使SESSION不可用 S/Qmo G.%
7 boolean isNew() 返回服务器创建的一个SESSION,客户端是否已经加入 u}sv H &M
8 void removeValue(String name) 删除SESSION中指定的属性 R YjL7+/
9 void setMaxInactiveInterval() 设置两次请求间隔多长时间此SESSION被取消(ms) ~ZuA_Z ]1<
9b G}6e`
@1R OXv$4l


4.out对象 3 BI3jbMA
out对象是JspWriter类的实例,是向客户端输出内容常用的对象 --: l uD]V
S kM mNC9
1 void clear() 清除缓冲区的内容 P /70 xn_s
2 void clearBuffer() 清除缓冲区的当前内容 a/ uj^G[d
3 void flush() 清空流 4;8 w``-*d
4 int getBufferSize() 返回缓冲区以字节数的大小,如不设缓冲区则为0 s$Sn&rpm
5 int getRemaining() 返回缓冲区还剩余多少可用 lIv
6 boolean isAutoFlush() 返回缓冲区满时,是自动清空还是抛出异常 + (P/]IPh
7 void close() 关闭输出流 ENO xQXt4
tF:kCIG:
t[= r C?a


5.page对象 r +O -m6
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例 { fL2)/n
Z |z 7l g
E: Q-|<<l
1 class getClass 返回此Object的类 [ ~} N R=
2 int hashCode() 返回此Object的hash码 HU+zSwMSIH
3 boolean equals(Object obj) 判断此Object是否与指定的Object对象相等 ~SN 8Lr# X
4 void copy(Object obj) 把此Object拷贝到指定的Object对象中 !SVE 9AJ
5 Object clone() 克隆此Object对象 dYc ! +rv
6 String toString() 把此Object对象转换成String类的对象 ZS aecPm%j
7 void notify() 唤醒一个等待的线程 +] 7 6 $ S
8 void notifyAll() 唤醒所有等待的线程 8,* 7p j
9 void wait(int timeout) 使一个线程处于等待直到timeout结束或被唤醒 ]5<Bl w J
10 void wait() 使一个线程处于等待直到被唤醒 :|3:YgMR4
11 void enterMonitor() 对Object加锁 yqz7 3 T
12 void exitMonitor() 对Object开锁 !a 6 X < @
,4 0K 0T:]
KKIFZw:e


6.application对象 _Z J )!5m"
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。 m$ ~ ^iS_
eNFKK & J
S6QM_R^ C
1 Object getAttribute(String name) 返回给定名的属性值 rJLhVbri d
2 Enumeration getAttributeNames() 返回所有可用属性名的枚举 E(' ^i
3 void setAttribute(String name,Object obj) 设定属性的属性值 p.3N ` Zv
4 void removeAttribute(String name) 删除一属性及其属性值 wwt {<ei g
5 String getServerInfo() 返回JSP(SERVLET)引擎名及版本号 S P >p_4
6 String getRealPath(String path) 返回一虚拟路径的真实路径 0OKh` 6Z
7 ServletContext getContext(String uripath) 返回指定WebApplication的application对象 Vo? 2r O0
8 int getMajorVersion() 返回服务器支持的Servlet API的最大版本号 - 45~)?WA
9 int getMinorVersion() 返回服务器支持的Servlet API的最大版本号 <7a EI+uX
10 String getMimeType(String file) 返回指定文件的MIME类型 3#Vy o#LGH
11 URL getResource(String path) 返回指定资源(文件及目录)的URL路径 ^ s *f l
12 InputStream getResourceAsStream(String path) 返回指定资源的输入流 1 D*Q}r zQ
13 RequestDispatcher getRequestDispatcher(String uripath) 返回指定资源的RequestDispatcher对象 @'< ;{+ {
14 Servlet getServlet(String name) 返回指定名的Servlet x//.? YC)R
15 Enumeration getServlets() 返回所有Servlet的枚举 w!Jqs~Qj
16 Enumeration getServletNames() 返回所有Servlet名的枚举 qd Y di~
17 void log(String msg) 把指定消息写入Servlet的日志文件 h HnO n
18 void log(Exception exception,String msg) 把指定异常的栈轨迹及错误消息写入Servlet的日志文件 2 8kPrN
19 void log(String msg,Throwable throwable) 把栈轨迹及给出的Throwable异常的说明信息 写入Servlet的日志文件 G4x 8-L ie
.]>Bz{k L%
z/yV{V$K s


7.exception对象 &4+H~>Yu
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象 {^o?] p,u
z i#N>qN
~ .l/ -,
1 String getMessage() 返回描述异常的消息 ? 42&e @G
2 String toString() 返回关于异常的简短描述消息 8 :Ho*jo
3 void printStackTrace() 显示异常及其栈轨迹 E5!w _&
4 Throwable FillInStackTrace() 重写异常的执行栈轨迹 GUAW& = ^
T b-@sW2
  0=y A.O#x


8.pageContext对象 O2QzX] t;W
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。 ^0K "AP
Z; U &q;
N)LB } *X
1 JspWriter getOut() 返回当前客户端响应被使用的JspWriter流(out) m{Ik Z~%D
2 HttpSession getSession() 返回当前页中的HttpSession对象(session) Ck"-}
3 Object getPage() 返回当前页的Object对象(page) A ^6^3 Es
4 ServletRequest getRequest() 返回当前页的ServletRequest对象(request) u:#x? } _
5 ServletResponse getResponse() 返回当前页的ServletResponse对象(response) Km!HlK dy|
6 Exception getException() 返回当前页的Exception对象(exception) KyrG. x gn
7 ServletConfig getServletConfig() 返回当前页的ServletConfig对象(config) yWJ04 u D
8 ServletContext getServletContext() 返回当前页的ServletContext对象(application) "x1dg@= A
9 void setAttribute(String name,Object attribute) 设置属性及属性值 j ( Z= p}
10 void setAttribute(String name,Object obj,int scope) 在指定范围内设置属性及属性值 ? U2) t
11 public Object getAttribute(String name) 取属性的值 !:OY~_gxDr
12 Object getAttribute(String name,int scope) 在指定范围内取属性的值 KVA > 8 o^
13 public Object findAttribute(String name) 寻找一属性,返回起属性值或NULL C E r>lZ%y
14 void removeAttribute(String name) 删除某属性 ODlC: ~w7
15 void removeAttribute(String name,int scope) 在指定范围删除某属性 7Kxg5=I4 4
16 int getAttributeScope(String name) 返回某属性的作用范围 WZ , N *1
17 Enumeration getAttributeNamesInScope(int scope) 返回指定范围内可用的属性名枚举 &/ "x{VD]
18 void release() 释放pageContext所占用的资源 )FN2 p'h;
19 void forward(String relativeUrlPath) 使当前页面重导到另一页面 tLC%5 b`*
20 void include(String relativeUrlPath) 在当前位置包含另一文件 G , PnTe
  -fq- zE>3
  Wm{ 28W2b"


9.config对象 g!/mR Z 4H
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象) 3 w Q7 m
h@ft= <dV
x2 /hRxZ
1 ServletContext getServletContext() 返回含有服务器相关信息的ServletContext对象 3'{ot ,` i
2 String getInitParameter(String name) 返回初始化参数的值 }lv I u{=G
3 Enumeration getInitParameterNames() 返回Servlet初始化所需所有参数的枚举

 

 

jsp中四种属性范围

jsp中有9个内置对象,其中pageContext,request,session,application可以做一个好似容器的东西来用,向容器里放东西,使用setAttribute(String name,Object value),取得可用getAttribute(String name).

其中pageContext.setAttribute(String name,Object value)设置后,只可在当页面取得,无论采取什么样的跳转都不会取到值

request.setAttribute(String name,Object value)设置后,用服务器端跳转的方式可取到值

session.setAttribute(String name,Object value)设置后,无论采用什么样的跳转都可以取到值、

application.setAttribute(String name,Object value)设置后,在整个的应用中都可以取得,不关闭服务器,容器的东西会一直存在.


jsp中两种跳转的区别

在jsp中有两种跳转,客户端跳转和服务器端跳转,,他们之间存在下面4点的区别:

1.<jsp:forward page=""/>做为服务器端跳转,跳转后地址栏地址是当前地址,而不是目的页面。而response.sensRediresct("")作为客户端跳转地址栏会变成目的页面的地址.

2.客户端跳转当程序执行到此句时,是所有代码执行完成后再执行跳转动作,也就是说其后的代码有被执行的机会,而服务器端的跳转是强硬的,执行到此句时,强制跳转,不执行其后的代码。

3.从传递参数的角度上看,客服端跳转可以通过地址重写的方式传递参数,如response.sendRedirect(*.jsp?ref=pokoo&ref2=pokoo2).而服务器的跳转可以采用<jsp:param name="ref" value="pokoo"/>来传递参数。

4.jsp中有四种属性保存范围,如在当前资源中在request中保存了属性,那么客户端的跳转到目的页是拿不到,request容器里的东西的,而服务器端的跳转可以取道.

下面说说自己理解的jsp中四种属性保存范围和jsp中的9个内置对象,和jstl标签库,和简单的jsp标签的开发

 

在servlet中不能有<jsp:forward page=""/>,那服务器跳转是用 RequestDispatcher rd=request.getRequestDispatcher("*.jsp"); rd.forward(request,response);

 

 

@include和jsp:include的区别

<%@include file=""% > 该指令可以把其他文件包含到jsp页面里来,这个文件可以是普通文件,也可以是jsp文件,与之类似功能<jsp:include page=""/>.

前一种指令是先将被包含文件的内容包含进来,然后再进行处理,在jsp页面显示.本身该jsp标签应该有<html>标记,那么被包含文件就不能存在这个标记,否侧就出错.

一句话:先包含后处理

而后一种指令相反,它是先处理,再将被包含文件的显示部分包含进来,都有<html>就不会出错.

一句话:先处理后包含

如使用第二种可以向被包含页面传递参数,被包含页面必须为动态页面,

<jsp:include page="*.jsp">

<jsp:param name="ref1" value="value1"/>

</jsp:include>

 

被包含页面可以用request取得参数

 

jsp中的taglib指

<%@taglib uri="tagLibraryURI" prefix="tagPrefix"%>

该指令的作用是命名标记库,jsp2.0有一套标准的标记库---jstl.使用标记库可以使jsp中的script代码减少,毕竟从MVC设计理念来讲,jsp只起到显示的作用,应最大限度的减少script代码.

关于jstl的用法以及如何进行标签库的简单开发本博客jsp分类可以找到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值