文章目录
什么是JSP
JSP简介
JSP(Java Server Pages)是基于Java语言的动态网页技术,它以“.jsp”为拓展名。在一个jsp页面中,可以包括指令标识,HTML代码,JavaScript代码,嵌入的Java代码,注释和JSP动作标识等内容,但这些并不是一个JSP页面所必需的。
JSP运行原理
当JSP文件被部署到Web服务器中后,并不能直接回应给浏览器,它的运行需要经历四个关键阶段
如下图
当浏览器向Web应用服务器请求一个JSP页面时,Web应用服务器将其转换为一个Servlet文件(即一个.java文件),然后将这个Java文件编译成一个字节码文件(即.class文件),最后Web应用服务器加载转换后的Servlet实例,处理客户端的请求,并返回HTML格式的响应回应给客户端浏览器
使用JSP指令标识
指令标识主要用于设定整个JSP页面范围内都有效的相关信息,这些标识会被服务器解释执行,但不会产生任何内容输出到网页中。
JSP包含了page,incline和taglib3个之类标识。它们语法结构相同,定义方法如下:
<%@ 指令名 属性1="属性值1" 属性2="属性值2" ……%>
页面指令page
page指令提供了共13个属性。下面对常用的进行介绍。
属性 | 作用 |
---|---|
language | 指定当前页面中使用的语言 |
contentType | 设置JSP页面的MIME类型和字符编码 |
pageEncoding | 设置JSP页面的编码格式 |
import | 导入JSP页面的类包 |
buffer | 设置out对象使用的缓冲区大小,默认大小是8KB |
autoFlush | 指定缓冲区已满时,自动将缓冲区中的内容输出到客户端 |
isErrorPage | 将当前JSP页面设置成错误处理页面,用于处理另外一个JSP页面的错误 |
errorPage | 指定当前页面出现异常时,所调用的另一个页面(即错误处理页面) |
session | 指定当前JSP页面是否支持session,默认为true |
isELIgnored | 指定是否禁用EL表达式 |
isThreadSafe | 指定JSP页面是否是线程安全的 |
文件包含指令include
语法格式如下:
"<%@ inculde file="path" %>
该指令只有file一个属性,用于指定要包含文件的路径,可以是相对路径,也可以是绝对路径。
引用标签库指令taglib
用于声明一个标签的引用。语法格式如下:
"<%@ taglib prefix="tagPrefix" uri="tagURI" %>
taglib:声明指令为taglib指令。
prefix:用于指定标签库的前缀。
uri:用于指定标签库文件的位置。
使用JSP脚本
代码片段的语法格式如下:
"<% Java代码或是脚本代码 %>
JSP表达式的语法格式如下:
"<%= 表达式 %>
声明标识的语法格式如下:
"<%! 声明变量或方法的代码 %>
由于使用声明标识的变量是全局的,所以在多个用户并发的时候会产生线程安全的问题,此种方式应用很少。
注释的魅力
注释 | 代码 |
---|---|
HTML注释 | <!-- 注释内容 --> |
JSP隐藏注释 | <%-- 注释内容 --%> |
代码片段中的注释 | 单行 //注释内容 多行:/*注释内容*/ |
HTML并不是安全的注释方式,可以通过查看网页源代码的方式查看到所编写的注释内容。
常用的JSP动作标识
包含动作标识jsp:include
用于包含其他界面,可以是动态也可以是静态。
语法格式如下:
<jsp:include page="url" flush="false|true" />
或:
<jsp:include page="url" flush="false|true" >
子动作标识<jsp:param>
</jsp:include>
请求转发的动作标识jsp:forward
用于将当前请求转发到其他的Web资源(HTML界面,JSP界面,Servlet等).
语法格式如下:
<jsp:forward page="url" />
或:
<jsp:forward page="url" >
子动作标识<jsp:param>
</jsp:forward>
子动作标识jsp:param
可以作为其他标识的子标识,用于为其他标识传递参数。
语法格式如下:
<jsp:param name="参数名" value="参数值" />