JSP页面构成
JSP页面是通过在HTML语言中嵌入Java语句(脚本)来实现的。一个JSP页面由二大部分元素组成:
HTML元素:可以是HTML标签、JavaScript脚本、CSS层叠样式表等。
JSP元素:有指令标识、脚本标识、注释标识、动作标识等,在脚本标识里还可以使用JSP的内置对象。
1.指令标识
<1>全局指令page
page指令用于对JSP文件中的全局属性进行设置。page指令只能当前页有效,除了import属性之外,其它属性在一个页面中只能设置一次。
<2>文件引用指令include
include指令的目的是减少页面代码冗余。
文件page.jsp:
<3>标签指令taglib
下面给出一个简单的例子:
2.脚本标识
<1>程序标识
在JSP页面中,程序也称为“小脚本”,这些小脚本可以是任意的Java代码。
下面给出一个简单的例子:
<2>表达式标识
表达式标识的作用是向页面输出一个表达式的值,它等价于out.println()。
下面给出一个简单的例子,它可以完成前述例子中的相同功能:
<3>声明标识
使用小脚本标识和表达式标识所定义的是嵌入的Java语句,但是它不能声明方法,它所定义的变量仅仅是局部变量,如果要声明方法或成员方法,就必须使用声明标识,这些方法和成员变量将在小脚本和表达式中使用。
3.注释标识
<1>HTML注释
注释内容不会在用户的浏览器中显示,但是注释的内容会以源代码的方式传输到用户端,用户可以通过查看源代码的方式看到注释的内容。一般不建议使用。
<2>JSP注释
注释内容不会在用户的浏览器中显示,也不会以源代码的方式传输到用户,用户无论如何是看不到这类注释的。
<3>脚本注释
由于JSP是将脚本运行的结果传送到客户端,因此脚本注释不会以源代码的方式传输到用户,用户无论如何是看不到这类注释的。
4.动作标识
Java语言是一种通用的语言,在JSP中是作为一种嵌入式的语言使用的,在JSP层次上还需要一些语句来定义JSP的动作,这就是动作标识。它采用严格的XML标签语法,嵌入在JSP文件中。
<1>转发页面
只有一个动作:formward
下面是二个例子:
第一个例子是直接转向/util/errorPage.jsp页面,而第二个例子是先将要转向的页面保存在一个Java变量中,然后再输出到forward 的page 参数中.
<2>包含文件或资源
只有一个动作:include。
flush属性指定在将页面包含进来之前是否清空主页面的输出流,默
认值为false。
include动作与include指令的区别
<3>使用javabean
这类动作包括
简单地说,Javabean是一个符合一定规范的类,在这个类中定义了一系列的getters和setters方法。在传统的编程中,函数调用时常常需要提供参数,函数结束时常常返回运行结果。而在使用Javabean时,调用方在调用Javabean的方法前,通过
<4>处理插件
此处插件是指在客户端运行的代码。如Java applet包括下述三个动作
例:
内置对象
1.Response
其内置对象中最常用的方法是sendRedirect()。它与forward动作有很相似功能!
区别:<1>.forward重定向是在容器内部实的同一个Web应用程序的重定向,所以forward方法只能重定向到同一个Web应用程
序中的一个资源,重定向后浏览器地址栏URL不变,而
sendRedirect方法可以重定向到任何URL,因为这种方法是修
改HTTP头来实现的,重定向后浏览器地址栏URL改变为新
的UR。2. forward重定向将原始的HTTP请求对象(request)
从一个servlet实例传递到另一个实例,而采用sendRedirect方
式则不能传递,因为两者不是同一个application。
<2>. forward重定向将原始的HTTP请求对象(request)从一
个servlet实例传递到另一个实例,而采用sendRedirect方式则
不能传递,因为两者不是同一个application。
<3>. 基于第二点,参数的传递方式不一样。
<4>. sendRedirect能够处理相对URL,自动把它们转换成绝对
URL,如果地址是相对的,没有前导'/',那么Web容器就认为它是相对于当前的
2. session
session在页面之间传递用户相关的信息,可以理解为是作用域范围为整个应用程序的用户相关的变量,这些信息保存在内存中(以session ID作为标识),直到用户离开(用户在客户端关闭浏览器)。
3.application
application在页面之间传递公共的信息,可以理解为是作用域范围为整个应用程序的用户无关的变量,这些信息保存在内存中,直到Web 容器被关闭。
4. config
config是ServletConfig类的一个实例。在Servlet初始化时,JSP 引擎通过config向它传递信息。这种信息可以是用户在配置文件web.xml提供的属性名/值的参数,也可以是通过ServletContext对象传递的服务器有关的信息。在开发过程中比较少用到config内置对象,只有在编写需要重载Servlet的init()方法时才会用到。
5. pageContext
pageContext提供JSP的全部上下文开发环境,就是说通过pageContext 可以访问所有的其它内置对象。
6.page
page内置对象是this的别名,就是指当前JSP页面本身。在实际开发过程中不常使用。
7.exception
该内置对象仅出现在错误处理页面,即在全局page指令中isErrorpage 属性设置为true的页面。在异常处理页面中,可以通过exception的getMessage()等方法来访问异常信息。