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
<%@include file="path"%>

被包含文件中建议删除<html><body>等标签,因为包含文件中已经指定这些标记.

1.4 taglib指令

通过该指令声明该页面中所使用的标签库,同时引用标签库,并制定标签的前缀.在页面引用标签库后,就可以通过前缀来引用标签库中的标签.语法格式如下:

1
<%@taglib prefix="tagPrefix" uri="tagURI"%>

参数说明:

  • prefix:用于指定标签的前缀,该标签不能命名为jsp,jspx,java,javax,sun,servlet,sunw
  • uri:用于指定标签库文件的存放位置

在页面中引用JSTL中的核心库标签,示例代码如下:

1
<%@taglib prefix="C" uri="http://java.sun.com/jsp/jstl/core"%>

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
2
3
<jsp:include page="url" flush="false|true">
子动作标识<jsp:param>
</jsp:include>

参数说明:

  • 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
2
3
<jsp:forward page="url">
子动作标识<jsp:param>
</jsp:forward>

参数说明:

  • page:用于指定请求转发的目标页面
  • 子动作标识<jsp:param>:用于向转向的文件传递参数

例:使用<jsp:forward>标识将页面转发到用户登录界面

方法:从index.jsp页面转发到login.jsp页面

index.jsp:

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>

<head>
<title>中转页</title>
</head>

<body>
<jsp:forward page="login.jsp" />
</body>

</html>

login.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>

<head>
<title>登录</title>
</head>

<body>
<form method="POST" action="">
用户名:<input type="text">
密&nbsp;&nbsp;码:<input type="password">
<br />
<input type="button" value="提交">
</body>

</html>

3.3 传递参数标识<jsp:param>

1
<jsp:param name="参数名" value="参数值"/>

参数说明:

  • name:用于指定参数名称
  • value:用于设定对应参数值

例:为<jsp:forward>指定参数

1
2
3
<jsp:forward page="login.jsp">
<jsp:param name="userid" value="123"/>
</jsp:forward>

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×