目录
前言
本章主要内容是了解JSP页面的基本结构。JSP可由普通的HTML标记和JavaScript标记,JSP 标记,变量和方法的声明,java程序片,java表达式,五个元素组成。值得注意的是,Java指令标记和Java动作标记是本章的难点,需要着重理解
提示:以下是本篇文章正文内容,下面案例可供参考
2.1JSP页面标记基本结构
当Tomcat服务器上的一个JSP页面被第一次请求执行时,tomcat服务器首先把JSP页面文件转译成一个Java文件,再把这个Java文件编译成字节码文件,然后通过执行字节码文件响应用户的请求。其中字节码文件的任务是:
1)把JSP页面中普通的HTML标记和JavaScript标记交给用户端浏览器执行显示
2)JSP标记,方法定义,Java程序片由服务器负责处理和执行,将需要显示的结果发送给用户端浏览器
3)Java表达式由服务器负责计算,并把结果转化为字符串,然后交给用户端浏览器负责显示
tips:大家需要初步了解HTML语言,不需要对JavaScript有很高的掌握
为了一次性引入上面所述的五种元素,我们用example2_1来展示一下他们的用法
代码如下(示例):
<%@ page contentType="text/html" %> <!-- jsp指令标记 -->
<%@ page pageEncoding = "utf-8" %> <!-- jsp指令标记 -->
<%@ page import="java.time.LocalTime" %> <!-- jsp指令标记 -->
<%! public int continueSum(int start,int end){ // 定义方法
int sum =0;
for(int i=start;i<=end;i++)
sum=sum+i;
return sum;
}
%>
<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>
代码输出结果:
2.2声明变量和定义方法,类
我们在“<%!”和“%>”标记符号之间声明变量和定义方法,“<%!”和“%>”标记符号一般放在JSP页面指令之后,<HTML>之前,也可以写在<HTML>和</HTML>之间。
当我们在“<%!”和“%>”之间定义类,可以在Java程序片使用该类创建对象。下面的例子在“<%!”和“%>”之间定义了两个方法multi(int x ,inty)和div(int x,int y),程序片调用这两个方法。在“<%!”和“%>”之间定义一个Circlel类,然后在程序片中使用该类创建对象,用来计算圆的面积。
我们看看下面的代码
代码如下(示例):
<%@ 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页面的局部变量。
tips:Java程序片可以写在<HTML>之前,也可以写在<HTML>和</HTML>之间或</HTML>之后
值得注意的是一个JSP页面中的Java程序片会按照其在页面中的顺序被执行,而且某个Java程序片中声明的局部变量在其后继的所有Java程序片以及表达式部分内都有效。利用Java程序片的这个性质,有时候我们可以把一个Java程序片分割成几个Java程序片,然后在这些Java程序片之间再插入其他标记元素。
HTML中的标记
<%
Java程序片
%>
HTML中的标记
<%
Java程序片
%>
HTML中的标记
2.4Java表达式
我们可以在"<%"和"%.>"之间插入一个可以求值的表达式。表达式的值由我们的服务器负责计算,然后再把计算结果用字符串形式发送到客户端显示。
tips:Java表达式可以写在<HTML> 之前,也可以写在<HTML>和</HTML>之间或者</HTML>之后
看下面这个例子: <%@ page contentType = "text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body bgcolor=pink>
<% int x=12,y=9;
%>
<p style="font-family:宋体;font-size:36">
计算表达式x+y+x%y,即<%= x %>+<%= y %>+<%= x %>%<%= y %>的值:
<%= x+y+x%y %>
<br>计算表达式x>y即<%= x %> > <%= y %>的值:
<%= x>y %>
<br>计算表达式sin(<%= Math.PI %>/2)的值:
<%= Math.sin(Math.PI/2) %>
<br>
<% if(x-y>=0) {
%>
如果<%= x %>大于<%= y %>,计算<%= x %> - <%= y %>即
<%= x-y %>的平方根:
<%=Math.sqrt(x-y)%>
<% }
%>
</p></body></HTML>
运行结果:
2.5JSP中的注释
JSP注释:
1、JSP注释有两种,一种是可以在客户端显示的注释,称为HTML注释。
表示形式: <!-- 注释内容 -->
2、一种是发送到服务器端,在客户端不能显示的注释,称为JSP注释。
表示形式: <%--注释内容--%>
2.6 JSP指令标记
JSP指令用来向JSP引擎提供编译信息。可以设置全局变量,如声明类、要实现的方法和输出内容的类型。一般的,JSP指令在整个页面范围内有效,且并不向客户端产生任何输出。所有的JSP指令都只在当前的整个页面中有效。与其书写的位置无关,一般写在最前面。
第二章指令标记标记中讲述了两个标记 ,分别是page指令标记和include指令标记.
1.page指令:称为页面指令,用来定义整个JSP页面的一些属性和这些属性的值,属性值用单引号或者双引号括起来。
<%@page 属性 = "属性的值"
2.include指令标记:在JSP页面某处整体镶嵌一个文件,就可以考虑使用include指令标记
<%@ include file = "文件的URL"%>
2.7 JSP动作标记
动作标记是一种特殊的标记,它影响JSP运行时的功能。
本章主要介绍了三种JSP动作标记:include动作标记,param动作标记还有forwar动作标记
1.include动作标记
它的语法格式如下:
<jsp:include page = "文件的URL"/>
或者:
<jsp:include page = "文件的URL">
param子标记
</jsp:include>
tips:当include动作标记不需要param子标记时,必须使用第一种形式。同时书写的时候要注意"jsp",":","include"三者之间不能有空格。
2. param动作标记
param标记以"名字-值"对的形式为其他标记提供附加信息,param标记不能独立使用,必须作为jsp:include,jsp:forward标记的子标记来使用。
语法格式:
<jsp:param name = "参数" value= "参数的值"/>
下面的例子就使用了include动作标记加载JSP文件triangle.jsp,triangle.jsp保存了当前web服务目录daima的子目录myfile中。triangle.jsp页面可以计算显示三角形的面积,当triangle.jsp被加载时,它会获得example2_11.jsp页面的include动作标记的param子标记提供的三角形三边的长度。
example2_11.jsp代码:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body bgcolor=cyan >
<% double a=6.12,b=7.08,c=9.22;
%>
<p style="font-family:宋体;font-size:36">
<br>加载triangle.jsp计算三边为<%=a%>,<%=b%>,<%=c%>的三角形面积.
<jsp:include page="myfile/triangle.jsp">
<jsp:param name="sideA" value="<%=a%>"/>
<jsp:param name="sideB" value="<%=b%>"/>
<jsp:param name="sideC" value="<%=c%>"/>
</jsp:include>
</p></body></HTML>
triangle.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%! public String getArea(double a,double b,double c) {
if(a+b>c&&a+c>b&&c+b>a) {
double p=(a+b+c)/2.0;
double area=Math.sqrt(p*(p-a)*(p-b)*(p-c)) ;
String result = String.format("%.2f",area);//保留两位小数
return result;
}
else {
return(""+a+","+b+","+c+"不能构成一个三角形,无法计算面积");
}
}
%>
<% String sideA=request.getParameter("sideA");
String sideB=request.getParameter("sideB");
String sideC=request.getParameter("sideC");
double a=Double.parseDouble(sideA);
double b=Double.parseDouble(sideB);
double c=Double.parseDouble(sideC);
%>
<p style="font-family:黑体;font-size:36;color:blue">
<br><b>我是被加载的文件,负责计算三角形的面积<br>
给我传递的三边是:<%=sideA%>,<%=sideB%>,<%=sideC%></b>
<br><b><i>三角形的面积(保留2位小数):<%= getArea(a,b,c)%></i></b></i>
</p>
运行结果:
3.forwad动作标记
从该指令处停止当前页面的执行,而转向执行page属性指定的JSP页面。需要注意的是,当fordward动作标记不需要param子标记时,必须使用下面的第一钟形式
<jsp:forward page ="要转向的页面"/>
或者
<jsp:forward page = "要转向的页面">
param标记
</jsp:forward>
和前面的include动作标记类似
example2_12.jsp使用forward标记转向example2_12_a.jsp和example2_12_b.jsp,同时使用param子标记把随机数传递给这两个页面。
代码如下:
<%@ 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>
结果大于5则转向example2_12_b.jsp 背景色为黄色,否则为example2_12_a.jsp的淡蓝色背景色
总结
提示:这里对文章进行总结:
以上就是今天要讲的内容,本文介绍了JSP的基本语法。Java程序片和JSP动作标记是本章的难点。