jsp学习笔记

jsp学习笔记:

显示时间:

显示当前时间与日期

<%
Date dNow = new Date( );
SimpleDateFormat ft =
new SimpleDateFormat (“yyyy-MM-dd HH:mm:ss”);
out.print( “<h2 align=“left”>” + ft.format(dNow) + “”);
%>

在本章中,我们将了解和学习JSP语法。并了解JSP开发涉及的简单语法(即元素)的基本用法。
为了方便演示,使用Eclipse创建一个动态Web项目:jspsyntax,用于运行以下涉及到的示例代码。
JSP的元素
JSP的元素如下所述:

1.小脚本
小脚本(scriptlet)可以将任何数量的小脚本包含在页面中,小脚本是有效的JAVA语言语句,变量或方法声明或表达式。
以下是小脚本的语法 -

<% code fragment %>
HTML
可以将上述语法编写为XML的形式,效果相同,如下所示:

jsp:scriptlet
code fragment
</jsp:scriptlet>
XML
编写的任何文本,HTML标签或JSP元素必须在scriptlet之外。 以下是JSP的简单和第一个例子 -
文件:helloworld.jsp -

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Hello World Hello World!
<% out.println("Your IP address is " + request.getRemoteAddr()); %> HTML 执行上面示例代码,得到以下结果 -

2.JSP声明
声明一个或多个变量或方法,可以在Java代码中编写,之后在JSP文件中使用。 在JSP文件中使用该变量或方法之前,必须先声明变量或方法。
以下是JSP声明的语法 -

<%! declaration; [ declaration; ]+ … %>
Jsp
可以将上述语法编写为XML的形式,效果相同,如下所示:

jsp:declaration
code fragment
</jsp:declaration>
XML
以下是JSP声明的示例 -

<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
HTML
3.JSP表达式
JSP表达式元素包含一个脚本语言表达式,它被评估求值,转换为一个字符串,并插入到表达式显示在JSP文件中的指定输出位置。
因为表达式的值被转换为字符串,所以可以在JSP文件中使用文本行内的表达式,无论是否使用HTML标记HTML。
表达式元素可以包含根据Java语言规范有效的任何表达式,但不能使用分号来结束表达式。
以下是JSP表达式的语法 -

<%= expression %>
HTML
可以将上述语法编写为XML的形式,效果相同,如下所示:

jsp:expression
expression
</jsp:expression>
XML
以下示例显示了JSP表达式 -
文件:express.jsp -

A Comment Test

Today's date: <%= (new java.util.Date()).toLocaleString()%>

HTML 上述代码将产生以下结果 -

Today’s date: 11-Sep-2017 21:24:25
Shell
4.JSP注释
JSP注释标记JSP容器应忽略的文本或语句。当您想要隐藏或注释掉JSP页面的一部分时,JSP注释很有用。
以下是JSP注释的语法 -

<%-- This is JSP comment --%>
HTML
以下示例显示了JSP注释 -

A Comment Test

A Test of Comments

<%-- This comment will not be visible in the page source --%> HTML 上述代码将产生以下结果 -

A Test of Comments
Shell
可以使用少量特殊结构,在各种情况下可以插入特别处理的注释或字符。下面是一个总结 -
编号 语法 说明
1 <%-- comment --%> JSP注释,它会被JSP引擎忽略。
2 HTML注释,它会被浏览器忽略。
3 <% 表示静态的<%字面值。
4 %> 表示静态的%>字面值。
5 ’ 表示静态的单引号’字面值。
6 " 静态的单引号"字面值。
5.JSP指令
JSP指令影响servlet类的整体结构。它通常具有以下形式 -

<%@ directive attribute=“value” %>
HTML
有三种类型的指令标签 -
编号 指令 描述
1 <%@ page … %> 定义页面相关属性,如脚本语言,错误页面和缓冲要求等。
2 <%@ include … %> 在编译阶段包括文件。
3 <%@ taglib … %> 声明页面中使用包含自定义操作的标签库
我们将在另一章专门介绍JSP指令 - JSP指令

6.JSP动作
JSP动作使用XML语法中的结构来控制servlet引擎的行为。可以动态插入文件,重新使用JavaBeans组件,将用户转发到另一个页面,或为Java插件生成HTML。
只有一个用于动作元素语法,因为它符合XML标准 -

<jsp:action_name attribute=“value” />
XML
动作元素基本上是预定义的功能,下表列出了可用的JSP动作 -
编号 动作 描述
1 jsp:include 在请求页面时包含一个文件。
2 jsp:useBean 查找或实例化一个JavaBean。
3 jsp:setProperty 设置JavaBean属性的值。
4 jsp:getProperty 将JavaBean属性的值输出。
5 jsp:forward 将请求者转发到新页面。
6 jsp:plugin 生成针对Java插件创建OBJECT或EMBED标记的特定于浏览器的代码。
7 jsp:element 动态定义XML元素。
8 jsp:attribute 定义动态定义的XML元素属性。
9 jsp:body 定义动态定义的XML元素的正文。
10 jsp:text 用于在JSP页面和文档中编写模板文本。
我们将在单独的章节解释JSP动作 - JSP动作

7.JSP隐式对象
JSP支持九个自动定义的变量,也称为隐式对象。这些变量是 -
编号 对象 描述
1 request 这是与请求相关联的HttpServletRequest对象。
2 response 这是与客户端的响应关联的HttpServletResponse对象。
3 out 这是用于将输出发送到客户端的PrintWriter对象。
4 session 这是与请求相关联的HttpSession对象。
5 application 这是与应用程序上下文相关联的ServletContext对象。
6 config 这是与该页面相关联的ServletConfig对象。
7 pageContext 它封装了使用服务器特定的功能,如更高性能的JspWriter对象。
8 page 这只是一个同义词,用于调用由编译的servlet类定义的方法。
9 Exception 异常对象允许指定的JSP访问异常数据。
我们将在单独的章节讲解JSP隐式对象 - JSP隐式对象。

8.控制流程语句
在JSP编程中使用Java的所有API和构建块,包括决策语句,循环等。如:if,if…else等语句。
9.决策语句
if…else块开始像一个普通的小脚本,但是小脚本在每一行都会被闭合,并且包含小脚本标签在HTML文本中。参考以下示例代码 -
文件:ifelse.jsp -

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

IF...Else示例 <%!int day = 3;%> <% if (day == 1 | day == 7) { %>

今天是周末,不用上班,Oyes ~

<% } else { %>

今天是工作日,乖乖去上班 ~

<% } %> HTML 上述代码将产生以下结果 -

现在看看下面的switch…case块,对于不同选项匹配使用out.println()输出不同结果 -

<%! int day = 3; %>

SWITCH...CASE Example <% switch(day) { case 0: out.println("It\'s Sunday."); break; case 1: out.println("It\'s Monday."); break; case 2: out.println("It\'s Tuesday."); break; case 3: out.println("It\'s Wednesday."); break; case 4: out.println("It\'s Thursday."); break; case 5: out.println("It\'s Friday."); break; default: out.println("It's Saturday."); } %> HTML 上述代码将产生以下结果 -

It’s Saturday.
Shell
10.循环语句
在Java中使用三种基本类型的循环块:for, while 以及 do…while均可在JSP编程中使用。
下面来看看for循环语句的示例 -

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

For循环语句示例 <%!int fontSize;%> <% for (fontSize = 1; fontSize <= 5; fontSize++) { %> JSP教程
<% } %> HTML 上述代码将产生以下结果 -

以上示例可以使用while循环编写,代码如下:

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

While循环语句示例 <%!int fontSize;%> <% while (fontSize <= 5) { %> JSP教程
<% fontSize++; %> <% } %> HTML 上述代码将产生以下结果 -

11.JSP运算符
JSP支持Java支持的所有逻辑和算术运算符。下表列出了所有具有最高优先级的运算符放在表格的顶部,优先级较低的运算符放在底部。
在一个表达式中,将首先评估计算较高优先级的运算符。
分类 运算符 关联性
后缀 () [] . 左到右
一元运算符 ++ – ! ~ 右到左
乘法 * / % 左到右
加法 + -
位移 >> >>> << 左到右
关系 > >= < <= 左到右
等于 == != 左到右
按位与 & 左到右
按位异或 ^ 左到右
按位或 | 左到右
逻辑与 &&
逻辑或 || 左到右
条件 ?: 右到左
分配 = += -= *= /= %= >>= <<= &= ^= 右到左
逗号 , 左到右
12.JSP文字
JSP表达式语言定义了以下文字 -
 布尔 - true和false
 整数 - 与Java中的一样。
 浮点 - 与Java中的一样。
 字符串 - 带单引号和双引号; “被转义为”,‘被转义为’,\被转义为\。
 空 - null
page指令
在本章中,我们将介绍和学习JSP中的指令。这些指令向容器提供指示和说明,告诉容器如何处理JSP处理的请求和响应。

JSP指令影响servlet类的整体结构。它通常具有以下形式 -

<%@ directive attribute = “value” %>
Jsp

指令可以有多个属性,可以将其列为键值对,并以逗号分隔。

@符号和指令名称之间,以及最后一个属性和关闭%>之间的空格是可选的。

JSP中有三种类型的指令标签 -

  1. page指令
    page指令用于向容器提供说明。这些说明涉及当前的JSP页面。可以在JSP页面的任何位置编写page指令。按照惯例,page指令被编码在JSP页面的顶部。

以下是page指令的基本语法 -

<%@ page attribute = “value” %>
HTML

可以使用XML编写上述语法,如下所示:

<jsp:directive.page attribute = “value” />
XML

属性

下表列出了与page指令相关联的属性 -

查看与page指令相关所有上述属性的更多详细信息。请参考:http://www.yiibai.com/jsp/page_directive.html

  1. include指令
    include指令用于在编译阶段包括一个文件。这个指令告诉容器在编译阶段将其他外部文件的内容合并到当前JSP文件中。可在JSP页面的任何位置使用include指令进行编码。

本指令的一般用法形式如下:

<%@ include file = “relative url” >
HTML

include指令中的文件名实际上是一个相对URL。如果只指定一个没有关联路径的文件名,那么JSP编译器会假定该文件与JSP在同一个目录中。
可以使用XML编写上述代码效果相同,如下所示:

<jsp:directive.include file = “relative url” />
HTML

有关include指令的更多详细信息,请查看链接:include指令

  1. taglib指令
    JSP API允许自定义的JSP标签,如:HTML或XML标签,标签库是一组实现自定义行为的用户定义标签。

taglib指令声明JSP页面使用一组自定义标签,标识库的位置,并提供了在JSP页面中标识自定义标签的方法。

taglib指令遵循下面给出的语法 -

<%@ taglib uri=“uri” prefix = “prefixOfTag” >
HTML

这里,uri属性值解析为容器理解的位置,并且prefix属性通知容器什么位置的标记是自定义操作。
可以使用XML编写上述语法,如下所示:

<jsp:directive.taglib uri = “uri” prefix = “prefixOfTag” />
XML

有关taglib指令的更多详细信息,请查看taglib指令。

JSP中的page指令用于向容器提供与当前JSP页面相关的指令。可以在JSP页面的任何位置使用page指令进行编码。 按照惯例,page指令被编码在JSP页面的顶部。
以下是page指令的基本语法 -

<%@ page attribute = “value” %>
HTML
可以使用XML编写上述语法,如下所示:

<jsp:directive.page attribute = “value” />
XML
属性
下表列出了与page指令相关联的属性 -

  1. buffer属性
    buffer属性指定服务器输出响应对象的缓冲特性。
    可以编写指一个none值来指定不使用缓冲,以便servlet输出立即被定向到响应对象,或者可以编写一个以KB为单位的最大缓冲区大小,这将指示servlet在写入响应之前写入缓冲区。
    如要指示servlet将输出直接写入响应输出对象,请使用以下命令 -

<%@ page buffer = “none” %>
HTML
使用以下命令来指示servlet将输出写入大小不小于64KB字节的缓冲区 -

<%@ page buffer = “64kb” %>
HTML
2. autoFlush属性
autoFlush属性指定缓冲区输出是否在缓冲区填充时自动刷新,或者是否引发异常以指示缓冲区溢出。
true(默认值)值表示自动缓冲区刷新,false值表示引发异常。
当servlet的输出缓冲区已满时,以下指令会导致servlet抛出异常,则使用以下语句 -

<%@ page autoFlush = “false” %>
HTML
此指令使servlet在完全输出时刷新输出缓冲区,

<%@ page autoFlush = “true” %>
HTML
通常,buffer和autoFlush属性在page指令中进行编码,如下所示:

<%@ page buffer = “16kb” autoflush = “true” %>
HTML
3. contentType属性
contentType属性设置JSP页面和生成的响应页面的字符编码。 默认内容类型为:text/html,它是HTML页面的标准内容类型。
如果要从JSP输出为XML,请使用以下page指令 -

<%@ page contentType = “text/xml” %>
HTML
以下语句指示向浏览器生成的页面呈现为HTML -

<%@ page contentType = “text/html” %>
HTML
以下指令将内容类型设置为:Microsoft Word文档 -

<%@ page contentType = “application/msword” %>
HTML
还可以指定响应的字符编码。 例如,如果要指定返回浏览器的结果页面使用:UTF-8,则可以使用以下page指令 -
<%@ page contentType = “text/html:charset=UTF-8” %>
HTML
4. errorPage属性
如果希望在当前页面运行时出现错误时,指定一个错误提示页面,那么errorPage属性告诉JSP引擎显示哪个页面。errorPage属性的值是相对URL。
当抛出所有未捕获的异常时,以下指令用于在页面出错时指定显示MyErrorPage.jsp的内容 -

<%@ page errorPage = “MyErrorPage.jsp” %>
HTML
5. isErrorPage属性
isErrorPage属性表示当前的JSP页面可以用作另一个JSP的错误页面。
isErrorPage的值可为true或false。 isErrorPage属性的默认值为false。
例如,handleError.jsp将isErrorPage选项设置为true,因为它应该处理错误 -

<%@ page isErrorPage = “true” %>
HTML
6. extends属性
extends属性指定生成的servlet必须扩展的超类。
例如,以下指令指示JSP转换器生成servlet,以使servlet扩展somePackage.SomeClass -

<%@ page extends = “somePackage.SomeClass” %>
HTML
7. import属性
import属性与Java import语句具有相同的功能,并且类似于Java import语句。import选项的值是要导入的程序包的名称。
例如,要导入java.sql.*,请使用以下page指令 -

<%@ page import = “java.sql.*” %>
HTML
要导入多个包,可以使用逗号分隔,如下所示:

<%@ page import = “java.sql.,java.util.” %>
HTML
默认情况下,容器会自动导入java.lang.,javax.servlet.,javax.servlet.jsp.和javax.servlet.http.
8. info属性
info属性允许提供JSP的描述。以下是一个代码示例 -

<%@ page info = “This JSP Page Written By Maxsu” %>
HTML
9. isThreadSafe属性
isThreadSafe选项将页面标记为线程安全。默认情况下,所有JSP都被认为是线程安全的。 如果将isThreadSafe选项设置为false,则JSP引擎确保一次只有一个线程正在执行JSP。
以下page指令将isThreadSafe选项的值设置为false -

<%@ page isThreadSafe = “false” %>
HTML
10. language属性
language属性指示在JSP页面脚本编写中使用的编程语言。
例如,由于通常我们使用Java作为脚本语言,因此language选项可设置成如下:

<%@ page language = “java” %>
HTML
11. session属性
session属性指示JSP页面是否使用HTTP会话。如果设置值为true,则表示JSP页面可以访问内置session对象,设置值为false表示JSP页面无法访问内置session对象。
以下指令允许JSP页面使用任何内置session对象方法,如:session.getCreationTime()或session.getLastAccessTime() -
<%@ page session = “true” %>
HTML
12. isELIgnored属性
isELIgnored属性能够禁用JSP 2.0中引入的表达式语言(EL)表达式的求值计算。
isELIgnored属性的默认值为true,这意味着表达式${…}按JSP规范进行评估计算。如果属性设置为false,则不会对表达式进行评估求值,而将其视为静态文本内容。
以下指令设定表达式不会被评估计算 -

<%@ page isELIgnored = “false” %>
HTML
13. isScriptingEnabled属性
isScriptingEnabled属性确定脚本元素是否被允许使用。
isScriptingEnabled属性默认值为true,它表示启用脚本,表达式和声明。 如果属性的值设置为false,则如果JSP使用任何脚本,表达式(非EL)或声明,则会引发转换时错误。
如果要限制脚本,表达式(非EL)或声明的使用,可将isScriptingEnabled属性的值可以设置为false -
<%@ page isScriptingEnabled = “false” %>
JSP include 指令
include指令用于在编译阶段包括一个文件。这个指令告诉容器在编译阶段将其他外部文件的内容合并到当前JSP文件中。可在JSP页面的任何位置使用include指令进行编码。

本指令的一般用法形式如下:

<%@ include file = “relative url” >
HTML

include指令中的文件名实际上是一个相对URL。如果只指定一个没有关联路径的文件名,那么JSP编译器会假定该文件与JSP在同一个目录中。
可以使用XML编写上述代码效果相同,如下所示:

<jsp:directive.include file = “relative url” />
HTML

include指令示例
include指令的一个很好的例子是要一个页面中包括多个公共页面的内容,如:比如一个主页中包函公共页眉和页脚。

为了更好的演示,打开Eclipse,创建一个动态Web项目:IncludeDirective,并创建以下三个JSP文件:

 main.jsp - 网站主页
 header.jsp - 顶部菜单和公共内容
 footer.jsp - 显示网站版权,备案号等公共信息

完整的项目结构如下图所示 -

以下是main.jsp的内容 -

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

主页(Main.jsp) <%@ include file="header.jsp"%>
<center>
    <p>这是Main.jsp页面的内容~</p>
    <p>include指令用于在编译阶段包括一个文件。这个指令告诉容器在编译阶段将其他外部文件的内容合并到当前JSP文件中。可在JSP页面的任何位置使用 include指令进行编码。</p>
</center>
<%@ include file="footer.jsp"%>
HTML

以下是header.jsp的内容 -

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

include指令示例

首页 | 页头 | 页尾


HTML

以下是footer.jsp的内容 -

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%!int pageCount = 0;

void addCount() {
    pageCount++;
}%>

<%
addCount();
%>

Copyright © 2018 | 备案号:琼ICP备13001417号-3 | 联系我们:769728683@qq.com | 访问次数:<%=pageCount%>

HTML

现在将上面三个JSP文件保存在根目录下,并尝试访问http://localhost:8080/IncludeDirective/main.jsp。应该会看到以下输出 -

刷新main.jsp,会发现页面匹配计数器不断增加。

可以根据您的应用功能来设计网页; 建议将网站的动态部分保存在单独的文件中,然后将其包含在主文件中。当需要更改网页的一部分时,只需要修改少数几个地方就可以轻松实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值