目录
前言
本章主要内容为对jsp基本结构的简介,包含JSP程序片、JSP表达式、JSP注释、以及JSP指令标记,JSP动作指令等小节。
2.1 JSP页面的基本结构
JSP页面可由5中元素组合而成:
★ HTML标记和JavaScript标记
★ JSP标记
★ 变量和方法的声明
★ Java程序片
★ Java表达式
2.2 变量和方法的声明
“<%! %>”标记符号之间声明变量和定义方法。其可以放在<HTML>之前,也能放在<HTML></HTML>之间。
2.2.1 声明变量
“<%! %>”标记符号声明的变量在整个页面都有效(即为全局变量),与其放在的位置无关。其变量占有的内存只有在Tomcat服务器结束后才会释放。
2.2.2 定义方法和类
在 “<%! %>”标记符号间定义方法,可以在java程序片中调用该方法,而在这方法中定义的变量只能在该方法中有效。
在 “<%! %>”标记符号间定义类,可以在java程序片中使用该类创建对象。
代码如下:
<%@ page contentType = "text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body bgcolor = #ffccff>
<p style="font-family:宋体;font-size:36;color:blue">
<%! double multi(double x,double y){ //定义方法
return x*y;
}
double div(double x,double y) { //定义方法
return x/y;
}
class Circle { //定义类
double r;
double getArea(){
return 3.1415926*r*r;
}
}
%>
<% double x=8.79;
double y=20.8;
out.print("调用multi方法计算"+x+"与"+y+"之积:<br>");
out.print(multi(x,y));
out.print("<br>调用div方法计算"+y+"除以"+x+"的商:<br>");
String s =String.format("小数点保留3位:%10.3f",div(y,x));
out.println(s);
Circle circle = new Circle(); //用Circle类创建对象。
circle.r = 3.6;
out.print("<br>半径是"+circle.r+"的圆面积"+circle.getArea());
%>
</p></body></HTML>
2.3 Java程序片
“<%%>”标记符号之间的代码就是Java程序片,一个JSP页面的Java程序片不唯一,且其执行顺序是自上而下的。在Java程序片中定义的变量其作用的范围仅仅是从定义的地方到JSP页面的结尾(即为局部变量)。
Java程序片的书写范围也无特别要求,其可以放在<HTML>之前,也能放在<HTML></HTML>之间。
“<%=%>”标记符号之间插入一个可求值的表达式(不可插入Java语句)。(%和=是相连的不能有空格)
代码如下:
2.5 JSP中的注释
JSP页面中注释看分为两种:
(1)HTML注释:在标记符号“<!---->”之间加入注释内容
(2)JSP 注释:在标记符号“<%----%>”之间加入注释内容
2.6 JSP指令标记
2.6.1 page标记
page指令用来定义整个JSP页面的一些属性和这些属性的值,其属性值用 ‘’或者“”括起来。( page指令的作用对整个JSP页面有效。与其书写的位置无关。)
例如:
<%@ page 属性1 = "属性1的值" %>
<%@ page contentType = "text/html" %>
<%@ page pageEncoding = "utf-8" %>
page可设置的属性(常用的一些属性):
1.contentType属性:
该属性设置的是JSP页面所对应的页面解释器。(contentType的值仅能设置一次,不能重复进行设置) 例如:<%@ page contentType = "text/html" %>
2.pageEncoding属性:
该属性设置的JSP中的编码方式,其一般默认值为utf-8。
例如:
<%@ page pageEncoding = "utf-8" %>
3.import属性:
该属性的作用是为JSP页面引入Java中提供的包中的类。
例如:<%@ page import = "java.io.*" %>
2.6.2 include指令标记
include指令标记的作用就是在JSP页面中静态的插入一个文件
例如:<%@ include file ="文件的路径"%>
例如:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ include file="myfile/ok.txt" %>
<HTML><center><body background="image/beida.jpg">
<bgsound src="sound/beida.mp3" loop=1>
<h1>这里是北京大学 </h1>
</body></HTML>
2.7 JSP动作标记
动作标记是一种特殊的标记,它影响JSP运行时的功能。
2.7.1 include动作标记
include动作标记告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。
其格式为:
(1)<jsp:include page ="文件的路径">
(2)<jsp:include page ="文件的路径">
param子标记
</jsp:include>
(当include动作标记不需要param子标记时,必须要用第一种形式)
2.7.2 param动作标记
param标记以“名字-值”的形式为其他标记提供附加信息,param标记不能独立使用,要作为jsp:include,jsp:forword标记的子标记来使用
其格式为:
<jsp:param name="参数" value="参数的值"/>
2.7.3 forward动作标记
forward动作标记的作用是:从该标记处停止当前页面的执行,而转向执行page属性指定的JSP页面。
其格式为:
(1)<jsp:forward page = "要转向的页面"/>
param子标记
(2)</jsp:forward>
forward动作标记指定的要转向的JSP文件可以使用Tomcat服务器提供的request内置对象获取param子标记中name指定的属性值。
例如:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body>
<h1> 产生一个1-10之间的随机数
<% double i=(int)(Math.random()*10)+1;
if(i<=5) {
%> <jsp:forward page="example2_12_a.jsp" >
<jsp:param name="number" value="<%= i %>" />
</jsp:forward>
<% }
else {
%> <jsp:forward page="example2_12_b.jsp" >
<jsp:param name="number" value="<%= i %>" />
</jsp:forward>
<% }
%>
</body></HTML>
<%@ 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>
<%@ 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>
其结果为: