JSP

阅读更多
一、JSP 三大编译指令:

1、page: 该指令是针对当前页面的指令
    <%@ 属性=属性值  %>
    language: 声明当前JSP页面使用的脚本语言种类,通常是java。默认值也是java。
    extends: 指定JSP页面编译所产生Java类所去继承的类。
    import: 通常用来导入包。有几个包是默认自动导入的:
java.lang.*,java.servlet.*,java.jsp.*  ...;
    session: 设置当前页面是否需要HTTP Session。
    buffer: 设置当前的缓存大小。默认值为8KB。可以设置none。
    autoFlush: 当前输入缓冲区即将溢出的时候,是否需要抛出一个溢出异常。
    info: 设置该JSP页面的信息。
    errorPage: 指定错误处理的页面。
    isErrorPage: 设置本JSP页面是否需要错误页面。通常情况下是无序指定。
    contentType: 用于生成网页的文件格式以及编码。
    pageEncoding: 指定生成网页的编码字符集。

2、include: 用于指定包含另一个页面
    使用include,可以将一个外部文件包含到JSP文件中,同时解析必要Java语法。注意编译指令
    最好引入静态的JSP文件。什么静态引入?一旦使用编译include的静态引入本把引入JSP融合成一个页面。因此被包含页面甚至不需要是完整的页面。
    <%@include file="relativeURLFile" %>
    注意:需要指出的是,静态包含还会包含页面中的编译指令,如果
    两个页面的编译指令相冲突,程序报错。

3、taglib: 用于定义和访问自定义标签

二、JSP 动作指令:
动作指令与编译指令不同,编译指令是通知Servlet引擎去处理消息。
而动作指令只是运行时的动作。编译指令在将JSP编译成Servlet时起作用。
而动作指令通常可替换成JSP脚本。(注意:它只是JSP脚本的标准化写法)

1、jsp:forward 执行页面专项,将请求处理转发到下一个页面。
   forward指令用于将页面响应转发到另一个页面。注意:forward 既可以转发到静态HTML页面。
   注意:①、执行forward请求时,用户请求的地址并没有发生改变。但是页面内容全部改成目标页面内容。
         ②、执行forward指令请求的时候,客户端的请求参数不会丢失。页面转发到JSP页面,或者转发给容器中的Servlet。
总结:从表面上看, 指令给人感觉,它是将用户请求“转发”给另一个页面。但是实际上, 并且没有重新向另一个页面发送请求。它是完全采用了新页面来对用户生成响应。请求依然就只是一次请求。

2、jsp:param 用于传递参数,注意:必须和其他支持参数的标签一起使用。

3、jsp:include 用于动态引入一个JSP页面。
   include指令一个动态include指令,也用于包含某个页面。它不会导入被include页面编译指令。仅仅将被导入页面的body内容插入本页面。

4、jsp:plugin 用于下载JavaBean 或者  Applet 到客户端执行。
5、jsp:useBean 创建一个JavaBean的实例。
6、jsp:setProperty: 设置JavaBean 实例的属性值。
7、jsp:getProperty: 输出JavaBean 实例的属性值。

jsp:forward 和  jsp:include 的区别
实际上,jsp:forward和jsp:include动作指令十分相似,这是它们的语法
都是采用特殊的方法去引入目标的页面。通过查看JSP页面所生成Servlet代码可以发现区别。
区别在于:执行forward时,被forward的页面将完全代替原有的页面。
而执行include时,被include的页面只是插入原有的页面。

jsp:useBean指令,jsp:setProperty指令,jsp:getProperty指令:
这三个指令都是与JavaBean相关的指令。其中useBean指令用于JSP页面
初始化Java实例。setProperty指令用于JavaBean实例设置相关属性。
getProperty指令用于JavaBean实例获取相关属性。


page: 该JavaBean实例仅在该页面有效。
request: 该JavaBean实例仅在请求的时候有效。
session: 该JavaBean实例仅在本次session会话内有效。
application: 该JavaBean实例会一直有效(本应用)。


三、JSP 隐式对象:
所谓对象,就是在JSP中内置好的对象,就叫隐式对象。
JSP 九大内置对象:
1、application  -- javax.servlet.ServletContext。
该实例代表JSP所属的Web应用本身。
application 通过setAttribute方法设置application的某个属性,该属性值可以作用于整个Web。因此在Web内可以使用getAttribute获取该属性
需要指出的是:虽然使用application(即Servlet实例)可以方便多个Servlet,多个JSP
共享数据,但不要仅仅为了JSP、Servlet共享数据就将数据放入Application中!由于Application代表了整个的Web因此,因为只有关于整个Web项目的配置信息,数据才会放入Application
application 还有一个重要的用处:可用于获取Web应用的配置参数。web.xml
注意:通过Web获取配置参数的方式,可以将一些配置信息放在web.xml文件中配置。
避免使用硬编码方式写在代码中,该种方式可以更好的程序的移植性。

2、config  -- javax.servlet.ServletConfig
该实例代表JSP所属的配置信息。
config对象代表当前JSP页面的配置信息。但JSP页面通常无须配置。因此也就不存在配置信息。所以JSP页面比较少用该对象。但是Servlet中则用处相对较大,因为Servelt需要在web.xml
文件中进行配置。

3、exception -- java.lang.Throwable
该实例代表JSP所属其他页面的异常和错误。
exception对象是Throwable的实例,代表JSP脚本中产生的错误和异常。是JSP页面异常机制的
一部分。
在JSP脚本中无须处理异常。事实上,JSP脚本包含的所有的可能出现的异常都交给错误页面处理。
注意:exception 对象仅在异常处理页面中有效,通过异常处理结构可以看出。
注意:由于只有JSP脚本,输出表达式才会对应于jspService()方法里的代码。所以这两个
部分的代码无须关心异常。但是在JSP的声明部分依然需要处理异常。
JSP异常处理机制对JSP的声明不起作用。
注意:在异常处理的页面中,应该在page指令中isErrorPage添加上并且设置为true,
只有该属性设置为true时,才可以访问exception内置对象。

4、page --  代表页面本身。也就是Servlet的this
5、out -- javax.servlet.jsp.JspWriter
该实例代表JSP的输出流
out: 其实就是输出流。通常用于输出变量的值。
注意:<%=> 本质等于 out.write() 输出表达式

6、pageContext -- javax.servlet.jsp.PageContext
该实例代表页面的上下文
即也就是本页面调用的包  比如 java.util.*
pageContext: 该对象表示页面上下文,用于访问对象之间共享数据。

7、request -- javax.servlet.HttpServletRequest
该实例封装一个请求
equest 对象是JSP重要的对象。每个request都会是一个用户的请求。
这个请求里面包含了所有的用户需要传递的参数。
request 重要的特性:可以操作表示一个request请求范围。
所有的web应用都会有请求与响应,没有请求与响应就没有web开发!
request和response 是HTTPRequest HTTPResponse的请求实例操作。

8、response -- javax.servlet.HttpServletResponse
该实例代表客户端的响应
response: 代表服务端的响应。基本上大部分时间服务器无须使用response。
因为可以直接使用更简单的out。out就是代表输出流。

9、session -- javax.servlet.HttpSession
该实例代表一次会话














你可能感兴趣的:(jsp)