JSP页面=HTML标记+JSP标签+JSP标签(变量和方法的声明、java程序片、java表达式)
JSP页面程序是在静态页面中加入用Java描写的动态页面处理部分。
JSP的元素类型只有3种:脚本元素、指令元素和标准操作元素。
JSP脚本元素书写在标签<%和%>之间包括:声明、表达式和Java程序语句。
注意:JSP元素的命名对大小写敏感。
JSP的执行顺序:
1、服务器接受请求;
2、JSP引擎将JSP代码转换成Servlets代码;
3、JSP引擎调用Java编译器将Servlets代码编译为.class文件;
4、JVM解释执行.class文件。
5、结果返回给请求的客户端。
JSP基本语法
一、注释
1、JSP网页自身注释
<%-- JSP网页自身的注释内容 --%>
不会出现在网页的源代码中,编译时会被忽略掉,“隐式注释”
注释内容中有--%>,要用--%\>
2、JSP网页的普通注释
<% 程序段
/* 多行注释内容
多行注释内容 */
程序段
//单行注释内容
程序段
%>
3、JSP网页的HTML注释
<!-- 发送到客户端的注释 -->
注释中可以出现动态数据(通过表达式表示),这是与一般HTML注释最大的不同之处。
<!-- 注释 <%=expression %> 注释 -->
表达式内容可以是动态的,如
<!-- Comment generate Date is <%= (new java.util.Date()).toString () %> -->
“<%”、“%>”、“‘”等符号被JSP引擎视作具有特定意义的符号;
JSP程序包含这些符号需使用转换符来表示。
二、脚本元素
脚本元素有:注释声明、表达式、程序代码段(Scriptlet)
以<%开始并以%>结束
通常是Java代码,它允许声明变量和方法,包含任意脚本代码和对表达式的求值。
1、JSP声明元素
<%! Declaration(s) %>
- 在JSP中使用变量和方法前,必须事先声明。
- 声明语句必须符合指定Java的语法规范。
- 声明变量时要用分号“;”作为结束符。
- 可以直接使用<%@page %>包含的变量和方法,无须对其声明。
- 一个声明仅在一个页面中有效。,如果想重复使用某声明,可以把其放入<%@include%>或< jsp:include>。
2、JSP表达式元素
<%= expression %>
如果表达式的结果不能转化成String,将抛出错误异常。
- 表达式不能用分号“;”作为结束符。
- 表达式元素可以很复杂,由多个表达式组成。
- 表达式有时也能作为其他JSP标签的属性值。
3、JSP脚本小程序元素
<% JSP脚本小程序元素(Scriptlet) %>
- 遵循脚本语言语法规范。
- 分号原则
- 自由使用隐含的和jsp:useBean声明对象
- 符合Java注释格式
JSP编译指令
<%@ 指令名称 属性1 =,属性2 =,… %>
接下来介绍三个指令是page、include和taglib
一、page指令元素
网页指令page用于定义与整个JSP页面相关的属性,对整个页面有效。
<%@page contentType="text/html;charset=GB2312"%>
对page指令的各个属性值解释如下:
二、include指令元素
文件加载指令include只有一个属性file,值为被包含文件的名称。文件可以为.txt或.jsp
<%@include file=“被包含的文件名”%>
三、taglib指令元素
用于定义一个标签库及自定义标签的前缀
<%@taglib uri=“扩展标签库的URI” prefix=“扩展标签的前缀” %>
定义标签库pe4j-taglib和前缀pe4j的代码为:
<%@taglib uri="/pe4j-taglib" prefix="pe4j" %>
JSP操作指令
在JSP中操作指令有:< jsp:include>,< jsp:forward>,< jsp:plugin>,< jsp:param>,< jsp:useBean>,< jsp:setProperty>和< jsp:getProperty>
一、< jsp:include>
在JSP文件中包含一个静态或动态文件。文件名一般为相对路径。注意jsp与:与include之间不能有空格,否则出错。
静态文件:根据include放置的位置导出。当静态文件发生改变时,必须将JSP文件重新保存和转译。
动态文件:当动态文件发生改变时,运行JSP文件会进行同步变化。
<jsp:include page =URL flush=“true" >
<jsp:param NAME = “参数名称1” VALUE = “值1” />
<jsp:param NAME = “参数名称2” VALUE = “值2” />
……
</jsp:include>
参数设置可以省略,省略时还可以使用如下简单格式:
<jsp:include page =URL flush=“true” />
二、< jsp:forward>
将浏览器显示的页面重定向到另一HTML或JSP文件。
<jsp:forward page = URL>
<jsp:param NAME="参数名称1" VALUE="值1" />
<jsp:param NAME="参数名称2" VALUE="值2" />
</jsp:forward>
若使用<jsp:param>将参数传递给JSP网页时,JSP网页可通过 request.getParameter("参数名称") 取得传入的参数。
三、< jsp:plugin>
让客户端执行一个小的JAVA程序,有可能的话还要下载一个java插件。
< jsp:plugin>动作标签将根据浏览器的版本被替换成HTML标签< object>或< applet>元素
<jsp:plugin
TYPE = "bean|applet"
code="保存类的文件名称"
codebase="类路径"
[NAME = "对象名称"]
[archive = "相关文件路径"]
[ALIGN = "对齐方式"]
[height = "高度"]
[width = "宽度"]
[hspace = "水平间距"]
[vspace = "垂直间距"]
[jrevesion = "Java环境版本"]
[nspluginurl = "供NS使用的plugin加载位置"]
[iepluginurl = "供IE使用的plugin加载位置"] >
<jsp:params>
<jsp:param NAME = "参数名称1" VALUE = "值1" />
<jsp:param NAME = "参数名称2" VALUE = "值2" />
……
</jsp:params>
<jsp:fallback> 错误信息</jsp:fallback>
</jsp:plugin>
四、< jsp:useBean>
定义JSP网页中要使用的JavaBean对象。
与useBean操作配合使用的还有< jsp:setProperty>和< jsp:getProperty>标签。
-
< jsp:setProperty>用来设置JavaBean对象的属性。注意:在使用< jsp:setProperty>之前必须使用< jsp:useBean>标记对Bean进行声明。
-
< jsp:getProperty>用来获取JavaBean对象的属性值。
<jsp:useBean id = "..."//Bean的对象名 scope="作用域,默认为page" { class="package.class"/ //Bean所引用的类的名字,要求这个类不能是抽象的,且必须有一个公用的、没有参数的构造方法。 type="package.class"/ //如果Bean已经在指定域存在,type定义了脚本变量定义的类型;在没有使用class或beanName的情况下使用type,Bean不会被实例化。 beanName="{package.class/<%=expression%>}"type="package.class" //BeanName的属性值为包、类、表达式,它作为参输穿个java.beans.BeansBeans的方法instantiate()。该方法检查参数是一个类还是一个连续模板,然后调用相应的方法来实例化一个Bean。type的值可以和Bean相同。 } > </jsp:useBean>
待补充!!!见:《Web编程技术》学习笔记(六)中JSP使用bean
Bean这块感觉了解的不够深刻,主要就是beanName、instantiate了解不够,
五、< jsp:param>
为其他标签提供附加信息
<jsp:param name=" " value=" "/>
该标签必须配合<jsp:include><jsp:forward>等动作标签一起使用。
当<jsp:include>使用该标签则会将参数传入至include包含的文件中的。