目录
1.JSP基本结构
在传统的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面。一个JSP页面可由5种元素组合而成:
· 普通的HTML标记和JavaScript标记
· JSP标记,如指令标记、动作标记
· 变量和方法的声明。
· Java程序片
· Java表达式
当Tomcat服务器上的一个JSP页面第一次请求执行时,Tomcat服务器首先将JSP页面文件(xxx.jsp)转译成Java文件,在将此Java文件编译生成字节码文件,通过执行字节码文件响应用户的请求,当用户再次访问此JSP页面时,Tomcat服务器可直接执行字节码文件以响应用户请求,不需要再次转译以及编译。
2.声明变量和定义方法
JSP中定义变量和方法格式如下:
<%! 声明变量或定义方法 %>
此标记符号一般放在JSP页面指令之后。用此方法声明的变量或定义的方法在整个JSP页面都有效,与其书写位置无关。
3.Java程序片和Java表达式
JSP中插入Java程序片以及Java表达式的格式如下:
<% Java程序片 %>
<%= Java表达式 %> //注意,不可插入语句。"<%="是一个完整的符号,中间不能有空格
Java程序片中声明的变量为JSP的局部变量,其有效范围语气声明的位置有关,在声明位置后继的所有程序片以及表达式都有效。有时候可以将一个Java程序片分割成几个Java程序片,在这些小Java程序片之间可以在插入其他标记元素。
需要注意的是,在JSP页面中,Java表达式的值被表示成一个字符串的形式,所以在编写JSP页面时,要把Java表达式的按普通的文本来使用。
4.JSP标记
4.1JSP指令标记
JSP指令标记包括:
page指令,用来定义整个JSP页面一些属性的值,其作用对整个JSP页面有效,与书写位置无关,但一般写在文件开头。page指令标记可以为属性指定其值,以下是几个常用属性:
· contentType :属性值确定JSP页面响应的解析器类型,如果不指定,默认是“text/heml”
在一个JSP页面不允许两次使用page指令给contentType指定不同的值。
· pageEncoding :默认值是UTF-8,其作用是定义JSP页面使用的编码方式。
· language : 属性定义JSP页面使用的脚本语言,该属性值目前只能取“java”,若没指定此 属性值,则JSP默认该值为language
· import :为JSP页面引入Java运行环境提供的包的类,可以为该属性指定多个值。
include指令,作用是在JSP页面出现该指令的位置处,静态嵌入一个文件,该文件的编码必须和当前JSP页面一致。使用include指令可以实现代码的复用。比如,在几个JSP页面使用include指令嵌入一个相同的文件,用户就可以在这几个JSP页面之间方便的切换。
JSP指令标记格式如下:
<%@ page 属性1 = “属性1的值” %>
<%@ page 属性2 = “属性2的值” %> //page指令标记
<%@ include file = “文件的URL” %> //include指令标记
4.2JSP动作标记
include标记,语法格式如下:
< jsp:include page = "文件的URL" />
或者
< jsp:include page = "文件的URL" >
param子标记
</ jsp:include >
注意,当include动作标记不需要param子标记时,必须使用第一种形式。include动作标记和include指令标记的作用都是处理所需要的文件。区别如下:
| 处理的时刻 | 处理方式 | 优缺点 | |
|---|---|---|---|
| include动作标记 | JSP页面运行时 | 被处理的文件独立于当前JSP页面 | 优点:可以使用param子标记灵活处理所需文件 缺点:执行速度慢 |
| include指令标记 | 编译阶段 | 被处理的文件依赖于当前JSP页面 | 优点:处理速度快 缺点:相比之下更不灵活 |
forword标记,作用是从该指令处停止当前页面的执行,转向page属性指定的JSP页面,语法格式如下:
<jsp:forward page = "要转向的页面" />
或者
<jsp:forward page = "要转向的页面">
param子标记
</jsp:forward>
注意,当forward标记不需要param子标记是,必须使用第一种形式。
param标记,以“名字-值”对的形式为其他标记提供附加信息,param标记不能独立使用,须作为include、forward标记的子标记来使用,其语法格式如下:
< jsp:param name = "参数" value = "参数的值" />
useBean标记,用来创建并使用一个JavaBean,在以后的文章中会有详细说明。
5.运用案例
使用param子标记将随机数传递给要转向的页面。
ex1.jsp
<%@ page contentType="text/html" %> <%-- JSP指令标记 --%>
<%@ page pageEncoding = "utf-8" %> <%-- JSP指令标记 --%>
<HTML><body> <%-- HTML标记 --%>
<h1>
<%-- 产生一个1-10之间的随机数 --%>
<% double i=(int)(Math.random()*10)+1; <%-- java程序片 --%>
if(i<=5) {
%> <jsp:forward page="example2_12_a.jsp" > <%-- forward动作标记 --%>
<jsp:param name="number" value="<%= i %>" /> <%-- param动作标记 --%>
</jsp:forward>
<% }
else {
%> <jsp:forward page="example2_12_b.jsp" >
<jsp:param name="number" value="<%= i %>" />
</jsp:forward>
<% }
%>
</body></HTML>
ex1_a.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body bgcolor=cyan>
<p style="font-family:宋体;font-size:36">
<% String s=request.getParameter("number");
out.println("传递过来的值是"+s);
%>
<br><img src=image/pic_a.jpg width=300 height=280/>
</p></body></HTML>
ex1_b.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body bgcolor=yellow>
<p style="font-family:宋体;font-size:36">
<% String s=request.getParameter("number");
out.println("传递过来的值是"+s);
%>
<br><img src=image/pic_b.jpg width=300 height=280 />
</p></body></HTML>
下一篇文章将介绍Tag文件与Tag标记。
本文详细介绍了JSP的基本构成,包括HTML标记、JSP标记、变量和方法声明、Java程序片和表达式。同时,阐述了JSP的生命周期,即如何从JSP页面转化为Java字节码文件。此外,还讲解了JSP指令标记(如page指令和include指令)和动作标记(如include动作和forward动作)的使用,以及param标记的功能。最后,通过一个案例展示了如何使用param子标记传递参数到目标页面。

610

被折叠的 条评论
为什么被折叠?



