JSP全名为Java Server Pages,中文名叫java服务器页面。是一种运行在服务器的语言,也是一种动态网页技术标准,他是在HTML语言中插入Java程序段,从而形成JSP文件。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
我们今天的学习将从JSP的基本语法学起。首先我们要明确的一点是JSP是基于Java语言的,所以在学习之前,需要掌握Java SE中的基础内容。
任何语言的学习我们都是从输出“Hello World” 开始,我们来看看怎么使用JSP输出吧。
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<% out.println("Hello World"); %>
以上就是JSP输出Hello World的源代码,接下来我们来分别学习一下
首先,在代码的最顶部是指令标识,指令标识主要用于设定整个JSP页面的相关属性,如网页的编码方式和脚本语言。语法如下
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
指令标识
JSP有三种指令标识,分别是
- <%@ page … %> 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
- <%@ include … %> 包含其他文件
- <%@ taglib … %> 引入标签库的定义
Page指令
Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。
Page指令主要有这么几个主要属性
- contentType:指定当前JSP页面的MIME类型和字符编码
- import:导入要使用的Java类
- language:定义JSP页面所用的脚本语言,默认是Java
Include指令
JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。
语法如下:
<%@ include file="文件相对 url 地址" %>
include 指令中的文件名实际上是一个相对的 URL 地址。
如果您没有给文件关联一个路径,JSP编译器默认在当前路径下寻找。
Taglib指令
JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。
Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。
Taglib指令的语法:
<%@ taglib uri="uri" prefix="prefixOfTag" %>
脚本标识
在JSP页面中,脚本标识使用得最为频繁,因为他们能够很方便、灵活的生成页面中的动态内容。JSP脚本标识分为三部分,分别是JSP脚本程序、JSP声明、JSP表达式,通过这些标识,在JSP文件中就可以像编写Java程序一样声明变量,定义函数进行运算。
脚本程序
脚本程序:就是在<% %>里嵌入Java代码,这里的Java代码和我们一般的Java代码没有什么区别。
我们上述代码中输出Hello World就是通过脚本程序实现的
<% out.println("Hello World"); %>
我们再来定义一个函数试试看:
<%
for (int i = 0; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
out.println(i + "*" + j + "=" + (i * j) + " ");
}
out.println("<br>");
}
%>
上述代码输出了一个乘法口诀表。
JSP声明
声明标识用于在JSP页面中定义全局变量或方法。通过声明标识定义的方法或变量可以被整个JSP页面访问。
我们通过JSP声明来定义两个函数来输出乘法口诀
<%!
//JSP内置out对象,试用脚本方式调用,打印九九乘法表
void printMultiTable2(JspWriter out) throws Exception{
String s = "";
for (int i = 0; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
out.println(i + "*" + j + "=" + (i * j) + " ");
}
out.println("<br>");
}
}
%>
<% printMultiTable2(out);%>
上述代码定义了一个无返回指的带参方法printMultiTable2,然后通过脚本程序运行并输出结果。
注意:声明标识只负责声明方法和变量,不负责程序的运行。同时,声明标识中创建的方法和变量声明周期是从创建开始到服务器关闭结束,而脚本程序中创建的变量或方法仅在当前页面中有效,有点类似于Java 中的静态变量(声明标识)和全局变量(脚本程序)。
JSP表达式
表达式的本质:在将JSP页面转换成Servlet后,使用out.print()将表达式的值输出。
语法:<%= expression %>
例如:<%=user.getName() %>
因此这里要注意以下两点:
1) 如果表达式是调用一个方法,那么这个方法必须要有返回值
2) 在方法的后面不能有分号;
<%!
//返回九九乘法表对应的HTML代码,通过表达式来调用,在页面上显示
String printMultiTable1() {
String s = "";
for (int i = 0; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
s += i + "*" + j + "=" + (i * j) + " ";
}
s += "<br>";
}
return s;
}
%>
<%=printMultiTable1()%>
上述代码中我们在声明标识中定义了一个String作为返回值的printMultiTable1方法,并且在表达式中将此方法输出。
以上内容就是JSP中的基本语法,由此我们可以看出JSP虽然是一门运行在服务端的语言,但我们可以从中看到Java的比例还是非常高的,可以说JSP就是一门基于Java的动态脚本语言