第2章 JSP语法
文章目录
- 第2章 JSP语法
- @[toc]
- 2.1 JSP 页面的基本结构
- 2.2 变量和方法的声明
- 声明变量
- 定义方法
- 2.3 Java程序片
- 2.4 Java表达式
- 2.5 JSP中的注释
- 2.6 JSP标记指令
- 1. page指令标记
- 2. include指令标记
- 2.7 JSP动作标记
- 1. include动作标记
- 2. param动作标记
- 3. forward动作标记
- 4. useBean动作标记
2.1 JSP 页面的基本结构
- 普通HTML标记
- JSP标记
- 变量和方法声明
- Java程序片
- Java表达式
JSP页面被第一次请求时:
JSP文件
Java文件
字节码文件
执行HTML
执行JSP标记
执行Java表达式
2.2 变量和方法的声明
在"<%!“和”%>"标记之间声明变量和方法,放置Java声明语句。
声明变量
例如:
<%! int a, b = 10, c;
String tom = null;
%>
变量在整个JSP页面内都有效,知道JSP引擎关闭才会释放。
定义方法
在"<%!“和”%>"标记之间定义方法,在整个JSP页面有效,可以被Java程序片调用。
例如:
<%!
double multi(double x, double y) { return x*y; }
%>
2.3 Java程序片
可以在"<%“和”%>之间插入Java程序片,多个程序片被按顺序执行,程序片中的变量称为局部变量。
如果成员变量不想同时被多个用户同时调用,要用synchronized
关键字修饰:
<%!
int count = 0;
synchronized void setCount() { count++; }
%>
<%
setCount();
out.println(count);
%>
一个JSP的Java程序片会被按顺序执行,并且在后继的程序片中有效,所有又是可以将一个Java程序片分割成多个Java程序片,中间夹插其他标记元素(如HTML等)。
2.4 Java表达式
可以在"<%=“和”%>之间插入一个表达式,这个表达式必须能求职,由服务器负责计算。JSP页面中表达式的值表示成字符串形式。
<%@ page contentType="text/html;charset=UTF-8" %>
<%
int x = 12, y = 9;
%>
Calculate x+y+x%y, thus<%=x%>+<%=y%>+<%=x%>%<%=y%>:<%=x+y+x%y%>
2.5 JSP中的注释
- HTML注释:
<!--
和-->
之间加入 - JSP注释:
<%--
和--%>
之间加入
2.6 JSP标记指令
1. page指令标记
page指令用来定义整个JSP页面的属性:
<%@ page 属性1="value 1" 属性2="value 2" ... %>
具体如下:
属性名 | 作用 |
contentType属性 | 确定JSP页面响应的MIME类型和JSP字符的编码 JSP只能为contentType指定一个值,不允许使用两次contentType |
language属性 | 目前只能取Java |
import属性 | 为JSP页面引入Java环境提供的包
|
session属性 | 是否设置session对象,默认true |
… |
2. include指令标记
在JSP页面整体嵌入一个文件,就可以使用include
指令标记,格式:
<%@ include file = "文件URL" %>
include标记会在指令位置处静态插入一个文件,被插入的文件必须是可访问可使用的。所谓静态插入,就是将多个文件合并成一个新的JSP页面,然后供引擎进行转义,所以所有文件的page contentType
属性必须相同,或只指定为一个值。
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file = "myfile/ok.txt" %>
<HTML>...</HTML>
2.7 JSP动作标记
动作标记是一种特殊标记,它影响JSP运行时的功能。
1. include动作标记
include动作标记的格式为:
<jsp:include page = "文件的URL">
或
<jsp:include page = "File's URL">
param 子标记
</jsp:include>
include动作标记会令JSP页面动态包含一个文件,即JSP运行时才将文件加入。
include动作标记和include指令标记都是处理所需文件,但处理方式不同,include指令标记是在编译阶段处理,被处理文件依赖于原文件,但处理速度更快,include动作标记实在运行时处理文件,被处理文件语法逻辑独立,可以使用param子标记灵活处理,但执行速度较慢。
2. param动作标记
param标记为其他标记提供附加信息,不能独立使用。格式如下:
<jsp:param name="名字" value="给定的值">
使用方法:
<%-- use.jsp --%>
<%@ page contentType="text/html;charset=UTF-8" %>
<% double a=3, b=4, c=5; %>
<jsp:include page="calct.jsp">
<jsp:param name="E1" value="<%=a%>"/>
<jsp:param name="E2" value="<%=b%>"/>
<jsp:param name="E3" value="<%=c%>"/>
</jsp:include>
<%-- calcu --%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%!
public String gatLen(double a, double b, double c) {
return (a+b+c).toString;
}
%>
<%
String s1 = request.getParameter("E1");
double a = Double.parseDouble(s1);
double b, c;
...
%>
<br>
Length=<%= getLen(a, b, c)%>
3. forward动作标记
forward语法格式:
<jsp:forward page="target URL"/>
或
<jsp:forward page = "target URL">
param 子标记
</jsp:forward>
该指令作用是:从此位置停止当前页面执行,转向执行page指定的JSP页面。
forward转移后,浏览器中现实的URL仍是转向前的URL地址,因此刷新后返回原来的界面。
4. useBean动作标记
将在第四章详细讨论。