目录
前言
本章的主要内容是对jsp页面语法的基本介绍
2.1JSP页面的基本结构
在传统的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面。一个JSP页面可由5种元素组合而成:
1 普通的HTML标记和JavaScript标记
2 JSP标记,如指令标记,动作标记。
3 变量和方法的声明
4 Java程序片
5 Java表达式
例子如下
%>
<HTML><body bgcolor = pink>
<script> <!--JavaScript(JS)标记 -->
var userTime = new Date();
var hour = userTime.getHours();
var minute =userTime.getMinutes();
var second = userTime.getSeconds();
var millisecond = userTime.getMilliseconds();
document.write("<h2>浏览器时间:"+
hour+":"+minute+":"+second+":"+millisecond+"<br></h2>");
</script>
<img src="image/time.jpg" width=180 height=120 /> <!--html标记 -->
<p style="font-family:黑体;font-size:36;color:red"> <!--html标记 -->
<% //Java程序片:
LocalTime timeServer = LocalTime.now();
int hour = timeServer.getHour();
int minute =timeServer.getMinute();
int second = timeServer.getSecond();
int nano = timeServer.getNano() ;//纳秒。
int millisecond = nano/1000000;
out.print("服务器时间:<br>"+
hour+":"+minute+":"+second+":"+millisecond);
int start=1;
int end=100;
int sum=continueSum(start,end);
%>
</p>
<p style="font-family:宋体;font-size:33;color:blue">
从
<%= start %> <!-- Java表达式 -->
至
<%= end %> <!-- Java表达式 -->
的<br>连续和是:
<%= sum %> <!-- Java表达式 -->
</p>
<script> <!--JavaScript(JS)标记 -->
document.write("<h2>服务器时间:"+
<%=hour%>+":"+<%=minute%>+":"+<%=second%>+":"+<%=millisecond%>+"</h2>");
</script>
</body></HTML>
运行结果如下:
2.2声明变量和定义方法
在“<%!”和“% >”标记符号之间声明变量和定义方法。“<%!”和“% >”标记符号的内容习惯上放在JSP页面指令之后,<HTML>之前,也可以写在<HTML>与</HTML>之间。
例子如下
1 声明变量
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body bgcolor=yellow>
<%! int i=0;
%>
<% i++;
%>
<p style="font-family:宋体;font-size:36">
您是第<%= i %>个访问本站的用户。
</p>
</body></HTML>
运行结果:
2 定义方法和类
<%@ 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>
运行结果:
Java程序片
可以在“<%”和“%>”之间插入Java程序片。一个Java页面可以有许多程序片,这些程序片将被tomca服务器按顺序执行。在程序片中声明的变量称作JSP页面的局部变量。局部变量的有效范围与其声明的位置有关,即局部变量在Jsp页面后继所有程序片以及表达式部分内容有效。Tomact服务器将Jsp页面转译成java文件时,将各个程序片的这些变量作为某个方法的变量,既局部变量。
Java程序片可以写在<HTML>之前,也可以写在<HTML>和</HTML>之间或</HTML>之后。
当多个用户请求一个jsp页面时。tomact服务器为每个用户启动一个线程,该线程负责执行字节码文件响应用户的请求。tomact服务器为每个用户启动一个线程,该线程负责执行字节码文件响应用户的请求,Tomact服务器使用多线程来处理程序片,其特点如下:
1 操作jsp页面的成员变量。
2 调用jsp页面的方法。
3 操作局部变量。注:运行在不同线程中的Java程序片的局部变量互不干扰。
2.4Java表达式
可以在“<%=”和“%>”之间插入一个可求值的表达式(不可插入语句<%与=之间不要有空格)。
2.5Jsp中的注释
1 HTML注释:在标记符号“<!--”“-->”之间加入注释内容:
<!--注释内容--》
2 JSP注释:在标记符号“<%--”“--%>”之间加入注释内容:
<%--注释内容--%>
2.6JSP指令标记
page指令用来定义整个JSP页面的一些属性和这些属性的值,属性值用单引号或双引号括起来。可以使用多个page指令分别为每个属性指定值,如:
<%@ page 属性1="属性1的值"%>
<%@ page 属性2="属性2的值"%>
...
<%@ page 属性n="属性n的值"%>
也可以用一个page指令指定多个属性的值,如:
<%@ page 属性1="属性1的值"属性2="属性2的值"...%>
page指令的作用对整个JSP页面有效,与其书写的位置无关。习惯上把page指令写在JSP页面的最前面。
page指令标记可以为contentType,import,language,session,buff,autoFlush,isThreadSafe,pageEncoding,inform,等属性指定值。以下分别讲述这些属性的设置与作用。
1 contentType
当用户请求一个JSP页面时,Tomact服务器负责解释执行JSP页面,并将某些信息发送到用户的浏览器,以便用户浏览这些信息。tomact服务器同时负责通知用户浏览器使用怎样的方法来处理所接受到的信息。这就要求JSP页面必须设置相应的MIME类型,及设置contentType属性的值。contentType属性值确定JSP页面响应的MIME类型。属性值的一般形式时:
"MIME类型"
注意:JSP页面使用page指令只能为contentType指定一个值,不允许两次使用page指令给contentTpe属性指定不同的属性值。
2 pageEncoding
pageEncoding属性的默认值时UTF-8,和contentType的附加属性charset的值意义不同,pageEncoding属性值时定义JSP页面使用的编码,即是告诉Tomact服务器的解析器用怎样的编码解析JSP页面中的字符。
3 language属性
language属性定义JSP页面使用的脚本语言,该属性的值目前之能取“java”
language属性指定值的格式是:
<%@ page language="java">
4 import属性
该属性的作用是为JSP页面引入Java运行环境提供的包的类,这样就可以在JSP页面的程序片部分,变量及方法定义部分以及表达式部分使用包的类。例如:
<%@ page import="java.io*","java.time.LocalDate"%>
5 session属性
session属性用于设置是否需要使用内置的session对象。session的属性值可以是ture或false。session属性默认值的属性值是true。
6 buffer属性
内置输出流对象out负责将服务器的某些信息或运行结果发送到用户端显示。buff属性用来指定out设置的缓冲区的大小或不使用缓冲区。例如:
<%@ page buffer="24kb"%>
7 autoFlush
autoFlush属性指定out的缓存区被填满时,缓冲区是否自动刷新。
8 isThreadSafe
isTreadSafe属性用来设置访问JSP页面是否是线程安全的。isTreadSafe的属性值可以取true或false。
当isTreadSafe属性值为true时。cpu的使用权在各个线程快速切换。当isTreadSafe属性值为false时,该jsp页面同一时刻只能响应一个用户请求,其他用户必须排队等待。
9 info属性
info属性是一个字符串,其目的是为JSP页面准备一个常用但可能要经常修改的字符串。
<%@ page info="we are students"%>
可以在jsp页面中使用方法:
getServletInfo();
获取info的属性值。
2.6.2 include指令标记
如果需要在JSP页面内某处静态嵌入一个文件,就可以考虑使用include指令标记,其语法格式如下:
<%@ include file="文件的URL"%>
所谓静态嵌入,就是当前JSP页面和嵌入的文件合并成一个新的JSP页面,然后Tomact服务器再将这个新的JSP页转译成java文件。
2.7JSP动作标记
2.7.1include动作标记
include动作语法标记语法格式为:
<jsp:include page="文件的URL"/>
或
<jso:include page="文件的URL">
param子标记
</jsp:include>
注:当include动作标记不需要param子标记时,必须使用第一种形式。
2.7.2param动作标记
param标记以“名字-值”对的形式为其他标记提供附加信息,param标记不能独立使用,必须作为jsp:include,jsp:forward标记的子标记来使用。
param动作标记的语法格式是:
<jsp:param name="参数"value "参数的值"/ >
当该标记与jsp:include动作标记一起使用时,可以将param标记中参数的值传递到include动作标记要加载的文件中去,被加载的JSP文件可以使用Tomact服务器提供的request内置对象获取include动作标记param子标记中name给出的参数的值。
2.7.3forward动作标记
格式:
<>jsp:forward page="要转向的页面"/>
或
<jsp:forward page="要转向的页面"/>
param子标记
</jsp:forward>
该指令的作用是:从该指令处停止当前页面的执行,而转向执行page属性指定的JSP页面。当forward动作标记不需要param子标记时,必须使用第一种形式。
2.7.4useBean动作标记
用来创作并使用一个Javabean。
总结:本节主要讲了jsp页面的基本结构和几个重要的动作标记,要读懂并建立jsp页面程序,认识并熟用这些是必不可少的能力。