JSP页面和JSP标记
1. JSP页面的基本结构
一个JSP页面可由5种元素构成:普通的HTML标记、JSP标记、变量和方法的声明、java程序片、java表达式。
HTML标记可直接交给浏览器处理显示;jsp标记、数据和方法声明、java程序片由服务器执行,并将结果返回给用户浏览器;java表达式由服务器计算,并转化为字符串后交给用户浏览器。
如下示例:计算100的因子之和。时间变化只有按F5时才能变化。
<%@ page contentType="text/html; charset=GB2312" %>
<%@ page import= "java.util.Date" %>
<%!
Date date;
public int getFactorSum(int n){
int sum=0;
for(int i=1;i<n;i++){
if(n%i==0)
sum=sum+i;
}
return sum;
}
%>
<HTML><BODY bgcolor="cyan">
<FONT Size=4><P>程序片创建Date对象:
<% date=new Date();
out.println("<br>"+date+"<br>");
int m=100;
%>
<%= m %>
的因子之和是(不包括<%= m %>):
<%= getFactorSum(m)%>
</P></FONT></BODY></HTML>
1.1 变量和方法的声明
变量:在“<%!”和”%>”之间声明,直接的变量称为JSP页面的成员变量。在整个JSP页面内都有效;多用户访问时共享。
方法:一样,也是在”<%!”和”%>”之间,整个JSP页面内有效;方法内变量只在方法中有效。
示例:由于是共享的,所有下面页面实现了访问用户的统计。
<%@ page contentType="text/html; charset=GB2312" %>
<%!
int i=0;
public int record(){i++;
return i;}
%>
<HTML><BODY bgcolor="cyan">
<FONT Size=4><P>您是第:<%= record() %>位用户!
</P>
<FORM action="mess.jsp" method=post name=form>
<INPUT TYPE="text" name="boy">
<INPUT TYPE="submit" value="enter" name="submit">
</FORM>
</FONT></BODY></HTML>
1.2 Java程序片
在<%和%>之间插入程序片,这些程序片被JSP引擎按顺序执行。
在程序片中声明的变量称为JSP页面的局部变量,方法中声明的变量就是属于此类。
1.3 表达式
在<%=和%>之间插入表达式。
1.4 注释
HTML注释:<!--此乃注释-->
JSP注释:<%--注释--%>
2. JSP标记
2.1 page指令
page用来定义整个JSP页面的一些属性和这些属性的值。可以标记的值有:contentType/import/language/session/buffer/autoflush/isThreadSafe/pageEncoding
language属性
定义JSP页面使用的脚本语言,目前只能取Java。
<%@page language=”java” %>
import属性
为JSP页面引入Java核心包中的类,这样可以在JSP页面的程序片部分、变量和方法中使用核心包中的类。
默认包含:
”java.lang.*”、”javax.servlet.*”、”javax.servlet.jsp.*”、”javax.servlet.http.*”
contentType属性
contentType默认为”text/html; charset=ISO-8859-1” 可以改。对于前一部分,可以改为:text/plain、image/gif、application/msword;后面一部分,可以有:GB2313。
session属性
设置是否需要内置的session对象。
buffer属性
用来指定out设置的缓冲区大小或不适用缓冲区,一般默认为8kb。
autoFlush属性
out缓冲区被填满时,是否自动刷新。可取true或false
isThreadSafe属性
是否允许多个线程同时访问该JSP页面。默认为true。
2.2 include指令标记
在某处插入一个文件
<%include file=”文件URL” %>
2.3 include动作标记
格式为:
<jsp:include page=”文件URL”/>
或<jsp:include page=”文件URL”>
param子标记
</jsp:include>
include动作标记告诉jsp页面动态加载一个文件,和之前include指令标记不同的是,当JSP引擎把jsp页面译成java文件时,不把jsp页面中动作指令include所指定的文件和原JSP页面合并,而是告诉java解释器,这个文件在JSP允许时才处理。
示例:两个页面,用户向第一个页面输入数字提交(如果为空, 默认为100),在第二个页面计算数字的和,并显示。
第一个页面:
<%@ page contentType="text/html; charset=GB2312" %>
<HTML><BODY bgcolor="cyan"><FONT Size=3>
<FORM action="" method=post name=form>
<INPUT type="text" name="ok">
<BR> <INPUT type="submit" value="送出" name=submit>
</FORM>
<P>请输入一个整数,单击按钮求连续和
<% String a=request.getParameter("ok");
if(a==null) a="100";
int i=Integer.parseInt(a);
%>
<jsp:include page="computer.jsp">
<jsp:param name="input" value="<%= i %>" />
</jsp:include>
</FONT></BODY></HTML>
computer.jsp
<%@ page contentType="text/html; charset=GB2312" %>
<HTML><BODY>
<% String str=request.getParameter("input");
int n=Integer.parseInt(str);
int sum=0;
try{
for(int i=1;i<=n;i++)
sum+=i;
}
catch(NumberFormatException e){
out.print("<BR>"+"请输入数字字符:");
}
%>
<P>从1到<%= n %>的连续和是:<%= sum %>
</BODY></HTML
2.4 param动作标记
以“名字-值”的形式为其他标记提供附加信息。与jsp:include、jsp:forward、jsp:plugin一起使用。
2.5 forward动作标记
格式:
<jsp:forward page=”要转向的页面” />
或
<jsp:forwardpage=”要转向的页面”>
param 子标记
</jsp:forward>
2.6 plugin动作标记