4.1 JSP基本语法
JSP (全称Java Server Pages) 是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTML、XML 或其他格式文档的Web网页的技术标准。
JSP=HTML+Java
JSP的本质是Servlet
访问JSP的时候,
(1)JSP转换成Servlet(2)执行Servlet文件
(1)HTML模板数据
(2)JSP元素
一、Java部分-脚本:
(1)脚本段:<% 脚本 %>
(2)声明: <%! 声明 %>
(3)表达式:<%= 表达式 %> 注意:表达式后不能加分号
(4)注释:<%-- JSP注释 --%>
二、Java部分-指令
(1)page指令
语法:<%@ page 属性1=值1 属性2=值2... %>
<%@ page language=”java” import=”java.util.*” contentType="text/html;
charset=utf-8" session="true/false" errorPage="url"
isErrorPage="true/false" buffer="" %>
注意:在一个JSP页面中可以使用多个<%@page %>指令,但其中的属性只能用一次,不过import属性例外,它可以多次出现,引入多个类和包,这和Java中的import语句差不多。
(2)include指令
语法:<%@ include file="相对的URL" %>
作用:静态包含
注意:
被引入的文件必须遵循JSP语法。
被引入的文件可以使用任意的扩展名,但都会被JSP引擎按照JSP页面的处理方式去处理,为了见名知意,建议使用“.jspf”(JSP fragment,即JSP片段)作为静态引入文件的扩展名。
被引入的文件中不要包含<html></html>、<body></body>等标记,因为这样会影响引入文件中同样的标记。
引入和被引入文件中的指令不能冲突(page指令中的pageEncoding和import属性除外)。
(3)taglib指令
<%@ taglib uri=”” prefix=”” %>
作用:是减少jsp页面中的java代码
三、Java部分-动作(了解)
(1)<jsp:include>
动作元素
语法:
<jsp:include page="relativeURL" flush="true|false" />
page属性用于指定被引入资源的相对路径
flush属性用于指定是否将当前页面的输出内容刷新到客户端。
作用:把其他资源的输出内容插入到当前JSP页面的输出内容中。----动态包含
案例:
<%@-- include.jsp --%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>include</title>
</head>
<body>
<%Thread.sleep(5000);%>
included.jsp内的中文<br />
</body>
</html>
<%@-- dynamicInclude.jsp --%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>dynamicInclude page</title>
</head>
<body>
dynamicInclude.jsp内的中文
<br>
<jsp:include page="included.jsp" flush="true" />
<%--对比:flush为true和false的区别。--%>
<%--<jsp:include page="included.jsp" flush="false" />--%>
dynamicInclude.jsp内的中文2
</body>
</html>
include指令和<jsp:include>
标签有很大的区别:
-
<jsp:include>
标签要引入的资源和当前JSP页面是两个彼此独立的执行实体,即被动态引入的资源必须能够被Web容器独立执行。而include指令只能引入遵循JSP格式的文件,被引入文件与当前JSP文件需要共同合并才能翻译成一个Servlet源文件。 -
<jsp:include>
标签要引入的资源是在运行时才包含的。而include指令引入的资源是在编译时期包含的,包含的是源代码。 -
<jsp:include>
标签运行原理与RequestDispatcher.include()方法类似,即被包含的页面不能改变响应状态码或者设置响应头,而include指令没有这方面的限制。
(2)<jsp:forward>
动作元素
语法:
<jsp:forward page="relativeURL" />
类似:请求转发