一、什么是JSP?
JSP全称Java Server Pages,是一种动态网页开发技术。有别于传统的HTML,它是在HTML代码的基础上嵌入Java代码片段和JSP标签,构成了JSP网页。JSP文件以.jsp为后缀名。
二、打开JSP文件
当我们打开JSP文件时,服务器内部会经历一次从动态资源(JSP)到静态资源(HTML)的转化。服务器会自动把JSP 中的 HTML 片段和数据拼接成静态资源响应给浏览器。也就是说,JSP 运行在服务器端,但最终发给客户端的是已经转换好的 HTML 静态页面。
三、JSP的技术特征?
跨平台
业务代码分离
采用JSP技术开发的项目,通常使用HTML语言来设计和格式化静态页面的内容,而使用JSP标签和Java代码片段来实现动态部分。
组件重用
继承Java Servlet功能
JSP是在Servlet的基础上发展起来的,它是JSP的拓展和优化,我们可以在JSP中使用Servlet的全部功能。(且JSP依赖于Servlet,用户访问JSP页面时,JSP代码会被翻译成Servlet代码,最终以字符串的形式向外输出HTML代码。)
预编译
预编译就是指在用户第一次通过浏览器访问JSP页面时或者是编译之后对其进行了修改之后,服务器将对JSP页面代码进行编译,并且只执行一次编译。编译好的代码将被保存,在用户下一次访问时,直接执行编译好的代码。
四、JSP和Servlet的对比
注:以下这张表格内容为转载,侵删
Servelt | JSP |
Servlet在Java内添加HTML代码 | JSP 在 HTML 内添加 Java 代码 |
Servlet 是一个 Java 程序,支持 HTML 标签 | JSP 是一种 HTML 代码,支持 Java 语句 |
Servlet 一般用于开发程序的业务层 | JSP 一般用于开发程序的表示层 |
Servlet 由 Java 开发人员创建和维护 | JSP 常用于页面设计,由 Web 开发人员使用 |
五、JSP的基本构成
1)指令标签:通常位于文件首位
2)HTML语句:定义网页内容的显示格式
3)注释:分三种,HTML的注释格式,JSP的注释格式和嵌入Java代码的注释格式
4)嵌入Java代码:Java代码被包含在<%%>标签中
5)JSP动作标签:是JSP标签的一种,它们都使用"JSP:"开头
六、指令标签
首先需要明确:指定标签不会产生任何内容输出到网页中,主要用户定义整个JSP页面的相关信息。服务器会根据JSP指令来编译JSP,生成Java文件。
JSP指令以<%@开头,以%>结束,具体语法如下:
<%@ directive attribute = "value" attributeN = "valueN" ...%>
page指令(以下仅为部分属性)
属性 | 说明 |
language | 设置JSP页面使用的语言,目前只支持Java语言。故默认值为Java。 |
extends | 设置JSP亚眠继承的Java类。该属性不常用。 |
import | 设置JSP导入的类包。 |
pageEncoding | 指定文件编码。通常设置编码格式为GBK或UTF-8。 |
contentType | 用于设置JSP页面的MIME类型和字符编码,浏览器会据此显示网页内容。 |
注:以上属性除了import可以声明多个外,其它属性都只能出现一次。
include指令
include指令用于文件包含。该指令可以在JSP页面中包含另一个文件的内容,但是它仅支持静态包含。被包含的文件可以是一段Java代码、HTML代码或者是另一个JSP页面。
eg.<%@include file = "validate.jsp"%>(file属性用于指定被包含的文件,其取值是当前JSP页面文件的相对URL路径)
实例:在当前页面中包含另一个JSP文件来显示当前日期
1)date.jsp文件
<%@ page pageEncoding="GB18030" import = "java.util.*"%>
<!DOCTYPE html>
<%
Date now = new Date();
String dateStr;
dateStr = String.format("%tY年%tm月%td日", now, now, now);
%>
<%=dateStr%>
2)index.jsp文件
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030" import = "java.util.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">
<html>
<head>
<title>include指令演示</title>
</head>
<body>
<!-- HTML注释信息 -->
当前日期是:
<%@include file = "date.jsp" %>
<br>
</body>
</html>
3)程序运行结果
注:被include指令包含的JSP页面中不要使用<html>和<body>标签,它们是HTML的结构标签,被包含进其他JSP页面会破坏页面格式。另外还要注意源文件和被包含文件中的变量和方法的名称不要冲突,因为它们最终会生成一个文件,重名将导致错误发生。
taglib指令
该指令用于加载用户自定义标签。使用该指令加载后的标签可以直接在JSP页面中使用。其语法格式如下:
<%@taglib prefix = "fix" uri = "tagUriotDir"%>
prefix属性:用于设置加载自定义标签的前缀
uri属性:用于指定自定义标签的描述符文件位置