前言
本章主要内容为JSP页面的基本结构、声明变量和定义方法、Java程序片、Java表达式、JSP指令标记、JSP动作标记等小节。
2.1 JSP页面的基本结构
在传统的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面。 一个JSP页面可由5种元素组合而成:
- 普通的 HTML 标记和JavaScript标记。
- JSP标记,如指令标记、动作标记。
- 变量和方法的声明。
- Java程序片。
- Java 表达式
<%@ page contentType="text/html" %> <!-- jsp指令标记 --> //表示页面显示器为html
<%@ page pageEncoding = "utf-8" %> <!-- jsp指令标记 --> //表示页面编码器为utf-8
<%@ 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> //p标签为段落标签
<script> <!--JavaScript(JS)标记 -->
document.write("<h2>服务器时间:"+
<%=hour%>+":"+<%=minute%>+":"+<%=second%>+":"+<%=millisecond%>+"</h2>");
</script>
</body></HTML>
2.2 声明变量和定义方法
在<%! %> 之间声明变量和定义方法,习惯上放在JSP页面指令之后,之前。
1.声明变量: <%! %> 之间声明的变量在整个JSP页面内都有效,与其书写的位置无关。
2.定义方法和类:
(1)在<%! %>之间定义方法,可在Java程序片中调用该方法。
ps:方法内声明的变量只在该方法内有效。
(2)在<%! %>之间定义类,可以在Java程序片中使用该类创建对象。
2.3 Java程序片
在<% %> 之间插入Java程序片。
在程序片中声明的变量为JSP页面的局部变量。
JSP页面可以有多个程序片,这些程序片将被Tomcat服务器按顺序执行。
Tomcat服务器使用多线程来处理程序片,特点如下:
操作JSP页面的成员变量
调用JSP页面的方法
操作局部变量
当把一个Java程序片分割成几个程序片时,需要在这些Java程序片之间插入其他标记元素。
通常格式为:
HTML中的标记
<%
Java程序片
%>
HTML中的标记
<%
Java 程序片
%>
HTML中的标记
2.4 Java表达式
在<%= %> 之间插入一个可求值的表达式(注意:不可插入语句)
ps:“<%”和“=”之间无空格!否则会出错
表达式的值由服务器计算,并将计算结果用字符穿形式发送到用户端显示
2.5 JSP中的注释
JSP页面中的注释可分为两种:
(1)HTML注释:
<!-注释内容->
(2)JSP注释:
<%–注释内容–%>
2.6 JSP指令标记
2.6.1 page指令标记
page指令用来定义整个jsp页面的一些属性和这些属性的值,属性值用单引号或者双引号括起来
page语法格式:
<%@ page 属性1= “值1” 属性2=“值2” …%>
page指令标记可以指定如下属性的值:contentType、import、language、session、buffer、autoFlaush、isThreadSafe、pageEncoding等
(1)contentType属性
contentType属性值确定JSP页面响应的MIME类型
若不给page指令的conteneType指定一个值,则它的默认值为“text/html;charset-ISO-8859-1”
ps:不允许两次使用page指令给contentType属性指定不同的值
扩展:
1、iso-8859-1:有对应的字节和数据,使用一个字节来表示2^8=256种可能。 a-z、0-9等
2、gb2312:2个字节2^16=64000多种可能,可以对汉字编码
3、gbk:可以对简繁体编码
4、UTF-8:文字字符数字都可以表示,可能是多种字节
(2)pageEncoding属性
pageEncoding属性的默认值是UTF-8。pageEncoding属性值是定义JSP页面的编码
例如JSP页面指定的编码为UTF-8时: <%@ page pageEncoding=“utf-8”%>
(3)language属性
language属性用来定义jsp页面所使用的脚本语言,该属性的值目前只能取java
格式:
<%@ page language=“java” %>
(4)import属性
作用是为jsp页面引入java运行环境提供的类,如<%@ page import=“java.io.","java.util.” %>
(5)session属性
用于设置是否需要使用内置的session对象,取值为true或false,默认为ture
(6)buffer属性
用来指定out设置的缓冲区的大小或者不使用缓冲区,其默认值为8kb
(7)autoFlush属性
指定out的缓冲区被填满时,缓冲区是否自动刷新,可取值true或false,默认值为true
(8)isThreadSafe属性
用来设置jsp是否可多线程访问,当设置为true时,jsp页面能同时响应多个客户的请求,党委false时,jsp页面同一时刻只能响应一个客户的需求,其他客户需要排队等待,默认值为true
(9)info属性
该属性的值时一个字符串,目的是为jsp页面准备一个常用且可能要修改的字符串,如<%@ page info =“we are students” %>; 可用getServletInfo()获取info属性值
2.6.2 include指令标记
该指令标记的作用是在jsp页面中该指令的位置上,静态插入一个文件
include语法格式:
<%@ include file = “文件的URL” %>
静态插入就是把当前jsp页面和插入的文件合并成一个新的jsp页面,然后jsp引擎再将这个新的jsp页面转译成java文件
2.7 JSP动作标记
2.7.1 include动作标记
语法格式:
<jsp:include page = “URL”/>或 <jsp:include page = “URL” >
param子标记 </jsp:include>
2.7.2 param动作标记
语法格式:
<jsp:param name = “参数” value = “ 参数的值”>
2.7.3 forward动作标记
格式:
<jsp:forward page = “要转向的页面” />或 <jsp:forward page = “要转向的页面” >
param标记 </jsp:forward>
作用:从该指令处停止当前页面的继续执行,而转向执行page属性指定的jsp页面
example2_12.jsp
<%@ 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>
example2_12_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>
example2_12_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>
2.7.4 useBean动作标记
格式:
<jsp:useBean id=“bean的名字” class=“创建beans的字节码文件” scope=“bean有效范围” />
该标记用来创建并使用一个javaBean
总结
以上就是第二章的内容,主要就是为JSP页面的基本结构以及各种指令标记。