JSP语法基础
1.JSP页面概述
1.1 指令标识
语法格式如下:
1 | < %@ 指令名 属性1="属性值1" 属性2="属性值2"...%> |
参数说明:
- 指令名:用于指定指令名称,在JSP中包含page.、include和taflib三条指令.
- 属性:用于指定属性名称,不同的指令包含不同的属性。在一个指令中可以设置多个属性,各属性之间用逗号或空格分隔.
- 属性值:用于指定属性值
例如:
1 | <%@ page language="java" contentType="text/html";charset="GB18030" pageEncoding="GB18030"%> |
指令标识的“<%@”和“%>”
是完整的标记,不能添加空格
1.2 page指令
page指令用于定义整个JSP页面的相关属性,这些属性在JSP中被服务器解析成servlet是会转换为相应的Java代码.page指令格式如下:
1 | <%@ page attr1="value1" attr2="value2" ...%> |
page的属性有15个,常用属性如下:
属性名 | 描述 | 示例 |
---|---|---|
language | 设置JSP页面语言,目前只支持Java | <%@page language="java"%> |
extends | 设置JSP页面继承的Java类.该属性不常用,且可能影响服务器性能优化 | |
import | 设置JSP导入的类包.JSP可以嵌入Java代码,这些代码调用API时需要相应的类包 | /*-*<%@page import="java.util.*"%> |
pageEncoding | 定义JSP页面的编码格式 | <%@page pageEncoding="utf8"%> |
contentType | 用于设置JSP页面的MIME类型和字符编码 | <%@page contentType="text/html";charset="utf8"%> |
session | 设置JSP页面是否使用HTTP的session会话对象.Boolean类型 | <%@page session="true"%> |
buffer | 设置JSP的out输出对象使用的缓冲区大小,默认大小8KB,且单位只能是KB,建议使用8的倍数 | <%@page buffer="128KB"%> |
autoFlush | 设置当JSP页面缓存满时,是否自动刷新缓存.默认true | <%@page autuFlush="false"%> |
isErrorPage | 可以将当前页面设置成错误处理页面,以处理另一个JSP页面的错误,也就是异常处理 | <%@page isErrorPage="true"%> |
errorPage | 用于指定另一个JSP页面来处理当前页面的错误,指定的页面必须设置isErrorPage属性为true | <%@page errorPage="error/loginErrorPage.jsp"%> |
1.3 include指令
用于在一个JSP页面中包含另一个JSP页面.只是原样包含(静态包含),因此两个JSP文件不能有相同的变量.可以提高代码的复用率.
1 | <%"path"%> file= |
被包含文件中建议删除
<html>
、<body>
等标签,因为包含文件中已经指定这些标记.
1.4 taglib指令
通过该指令声明该页面中所使用的标签库,同时引用标签库,并制定标签的前缀.在页面引用标签库后,就可以通过前缀来引用标签库中的标签.语法格式如下:
1 | <%"tagPrefix" uri="tagURI"%> prefix= |
参数说明:
- prefix:用于指定标签的前缀,该标签不能命名为
jsp
,jspx
,java
,javax
,sun
,servlet
,sunw
- uri:用于指定标签库文件的存放位置
在页面中引用JSTL中的核心库标签,示例代码如下:
1 | <%"C" uri="http://java.sun.com/jsp/jstl/core"%> prefix= |
2. 脚本标识
- JSP表达式(Expression)
- 声明标识(Declaration)
- 脚本程序(Scriptlet)
2.1 JSP表达式
用于向页面输出信息,语法格式如下:
1 | <%= 表达式%>- |
“=”前面不能有空格,后面有
2.2 声明标识
1 | <%! 声明变量或方法的代码%> |
“!”前面不能有空格,后面有
2.3 代码片段
1 | <% Java代码或是脚本代码%> |
代码片段与声明标识的区别:
代码片段仅在当前JSP有效,声明标识在整个项目有效
3. 动作标识
3.1 包含文件标识<jsp:include>
用于包含其它的文件,可以是静态文件,也可以是动态文件.如果是静态文件将原样输出,如果是动态文件,将编译执行后输出.该标签会识别出文件类型,而不是通过名称来判断是否静态.
1 | <jsp:include page="url" flush="false|true" /> |
或者
1 | <jsp:include page="url" flush="false|true"> |
参数说明:
- page:用于指定被包含文件的相对路径.
- flush:可选属性,设置是否先刷新缓冲区再执行.默认false.
- 子动作标识
<jsp:param>
:向被包含的动态页面传递参数
<jsp:include>
与include
指令的区别:
include
指令会将被包含的文件内容原封不动的插入到包含页中,然后再一起编译为一个Java文件;而<jsp:include>
包含文件时,当该标识被执行时,会将请求转发到被包含页面,并将执行结果输出到浏览器中,然后再返回包含页继续执行后面的代码,所以这些文件是分别编译的include指令中不能有相同名称的变量,因为他们会被合成一个文件编译,但是
<jsp:include>
中每个文件是分别编译的,所以其中重名的变量和方法不冲突
使用
<jsp:include>,
被包含的页面不应该有<html>
、<body>
3.2 请求转发标识<jsp:forward>
用于将请求转发到其他的Web资源,例如另一个JSP页面、HTML页面、Servlet等.执行请求转发后,当前页面不再执行,而是去执行指定的页面,然后将结果直接返回给浏览器.
1 | <jsp:forward page="url"/> |
或者
1 | <jsp:forward page="url"> |
参数说明:
- page:用于指定请求转发的目标页面
- 子动作标识
<jsp:param>
:用于向转向的文件传递参数
例:使用<jsp:forward>
标识将页面转发到用户登录界面
方法:从index.jsp
页面转发到login.jsp
页面
index.jsp:
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
login.jsp
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
3.3 传递参数标识<jsp:param>
1 | <jsp:param name="参数名" value="参数值"/> |
参数说明:
- name:用于指定参数名称
- value:用于设定对应参数值
例:为<jsp:forward>
指定参数
1 | <jsp:forward page="login.jsp"> |