JSP页面的基本结构,声明变量和定义方法
在传统的HTML页面中加入Java程序片段和JSP标记就构成了一个JSP页面
<%! %>
在<%! 和 %>之间可以声明变量和方法,声明的变量属于用户变量(类似全局变量),多个用户访问时会影响到其他用户
<% %>
在<%和%>之间插入java程序片。
当多个用户请求一个JSP页面是,Tomcat服务器位每一个用户启动一个线程,每个线程都有一段<% %>,但共用<%! %>
Java表达式和注释
Java表达式
可以在<%=和%>之间插入一个可求值表达式,表达式的值由服务器计算传递给用户端显示,没有位置限定
JSP注释
HTML注释:<!--注释内容--> JSP注释:<%--注释内容--%>
在<%%>中就是java的程序,不能使用这两种注释,HTML可以在浏览器F12下的元素页面里看到,JSP注释只能在JSP源码中看到,并且Tomcat服务器在编译JSP页面是忽略JSP注释
jsp标记
指令标记:
page指令标记
可以设置属性和值:
例如<%@ page contentType="text/html"%> 常见的属性有:
- pageEncoding
- contentType
- language
- session
- info
等等
include指令标记:
<%@ include="文件的URL" %>
即:静态嵌入文件
被嵌入的文件编码要和JSP页面的编码一致 简单理解就是把嵌入的文件的代码直接补到JSP页面中
动作标记:
include动作标记
<jsp:include page="文件的URL"/> 或<jsp:include page="文件的URL">param动作标记<jsp:include> 注意:当include动作标记中没有使用param动作标记,就必须使用第一种格式
这种动作标记与指令标记不同的是,动作标记会把文件生成一个新的java文件,而不是合并两个文件。
如果include的文件是普通文本,则把文件发到客户端显示,如果是JSP文件,则由服务器将执行结果发到客户端
param动作标记
给include的文件输入参数
<jsp:param name="参数" value="值"> 而被调用的文件获取参数可以使用Tmocat提供的request.getParameter(“参数”)方法
需要注意的是:
value的值必须使用Java表达式输入 下面是错误的
forward动作标记
与上面不同的是执行该指令以后,会之间跳转的调用的文件执行,原来文件的代码不会继续执行
useBean动作标记
后面会详细讲
用例:
1.
<%@ page contentType="text/html"%>
<%@ page pageEncoding="utf-8"%>
<%!
double a = 3;
double b = 4;
double c = 5;
%>
<html>
<body>
<p style="font: 20px 黑体">
加载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>
调用的Triganle.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 && B + C > 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);
%>
<html>
<body>
<p style="font: 30px 宋体">
<b>我是被加载的文件,负责计算三角形的面积</b>
<br>给我传递的三边是:<%=a%>,<%=b%>,<%=c%>
<br><b><i>计算的三角形面积位(保留两位小数):<%=getArea(a,b,c)%></i></b>
</p>
</body>
</html>
2.
<%@ page contentType="text/html"%>
<%@ page pageEncoding="utf-8"%>
<%--jsp注释--%>
<html>
<body>
<p style="font:14px 宋体"><jsp:include page="./myFile/Rollinglrc.txt"/></p>
<%
//java注释
%>
<audio src="../music/Rolling In The Deep - Adele.flac" controls></audio>
</body>
</html>
3.
<%@ page contentType="text/html"%>
<%@ page pageEncoding="utf-8"%>
<%@ page import="java.time.LocalTime"%>
<html>
<style>
p {
font: 50px 宋体;
color: green;
text-align:center;
}
</style>
<body>
<p>
服务器时间:
<%
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(hour+":"+minute+":"+second+":"+millisecond);
%>
</p>
</body>
</html>
书上的小结:
|