JSP基础语法知识必知必会

简介: JSP基础语法知识必知必会

1 JSP简介

什么是Java Server Pages?


JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。


JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。


JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。


JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。


2 常见动态网站开发技术对比-ASP

目前比较流行的动态网页技术有JSP、ASP、PHP等,下面分别简要介绍这些技术的特点。


1 ASP技术


ASP技术是基于.NET平台的一种动态网页技术。它有非常强大的后台处理能力,但却有一些安全性、稳定性、跨平台性的问题。它的原理为:通过服务器端的解释器将用户请求的ASP文件进行处理,然后将生成的HTML页面传输到客户端显示。解释器可以调用功能强大的COM组件去进行非常多的工作。因此,ASP的功能被无限放大了。


ASP的优势


容易学。ASP的内嵌代码是Basic语言,这种语言很容易掌握,并且学的人很多。Microsoft开发的语言有很多联机手册,并且市面上也有很多的相关书籍,方便开发人员的学习和深入。


容易安装。装好Windows系统后,只要安装了IIS,就可以使用ASP语言了,不用像Java一样花很大功夫去配置。


效率高。在访问量比较低的情况下,ASP处理的效率相当高。


ASP的弱势


虽然使用COM组件极大地扩展了ASP的功能,但是Windows系统的缺陷可能会导致使用ASP技术建立的网站更容易受到攻击,以至于瘫痪。


编译的时间长。


无法实现跨操作系统的使用。


无法使用它建立大型的网站,因为ASP技术不能实现完全的集群和负载均衡。


3 常见动态网站开发技术对比-PHP

PHP语言是HTML内嵌式的语言,这一点类似于ASP。不过,它的语法混合了C、Java、Perl等语言的特点。PHP语言的用途也非常广,它支持众多的数据库,如Microsoft SQL Server、MySQL、Sybase、Oracle等。它与HTML可以有很好的兼容:在PHP脚本中可以直接加入HTML标签,在HTML标签中也可以加入PHP脚本。从而它可以实现更强的页面控制。


PHP的优势


PHP可以跨平台,并且具有更好的数据库交互能力。PHP在UNIX/Linux平台下运行的性能很好。


由于PHP可以与Apache,以及其他的一些平台以静态编译的方式结合起来。所以它可以很大程度地优化CPU和内存的使用。


PHP有很好的安全性。


4 常见动态网站开发技术对比-JSP

JSP技术在基于java的平台上广泛地使用,是进行Java web开发的一种核心组件。JSP页面由HTML代码和嵌入在其中的Java脚本组成。当浏览器用户请求某个JSP页面时,Web服务器在服务器端对所请求的JSP文件进行编译处理,执行其中的Java脚本,并把生成的HTML页面返回到浏览器端显示。Servlet技术是JSP技术的基础,实际开发中往往是二者联合使用。由于基于Java平台,JSP有Java技术面向对象、平台无关、安全等特点。


JSP的优势


一次编写,到处运行。这一点JSP比PHP技术更有优势,在不同的系统平台上运行,代码不用做任何修改。


被多平台支持。JSP几乎可以在任何的平台上进行开发,并且可以在任何的平台上部署和运行。这一点是ASP和PHP所无法企及的。


后台强大的功能。由于JSP后台有Java语言和Servlet的支持,在后台可以进行复杂的、功能强大的业务逻辑处理。并且可以实现多台服务器端集群和负载均衡,从而更加适应企业级的应用。


有很多优秀的IDE帮助开发,如Eclipse、IntelliJ IDEA等。


JSP的弱势


正式由于跨平台和服务器集群等一些优点,同时带来了其产品过于复杂的缺点。


编译后的Class文件运行时,内存的使用率比较低。


PHP的弱势


数据库接口不规范。虽然PHP支持众多的数据库,但是对每种数据库接口的开发都不同。同样的数据库操作在不同的数据库中都要用不同的语言来实现,从而极大地加重了开发者的负担。


使用起来复杂。由于实现某些功能,一般是靠某种拓展模块来实现的。而每种拓展木块都有不同的外部应用库来实现,这样在编译时相当复杂。


缺少企业级应用的支持。由于开发大型Web应用的接口的数量有限而导致的。


5 JSP页面元素

jsp由这些页面元素组成:

1. 静态内容

就是html,css,javascript等内容

2. 指令

以<%@开始 %> 结尾,比如<%@page import="java.util.*"%>

3. 表达式 <%=%>

用于输出一段html

4. Scriptlet

在<%%> 之间,可以写任何java 代码

5. 声明

在<%!%> 之间可以声明字段或者方法。但是不建议这么做。

6. 动作

<jsp:include page="Filename" > 在jsp页面中包含另一个页面。在包含的章节有详细的讲解

7. 注释 <%-- -- %>

不同于 html的注释 <!-- --> 通过jsp的注释,浏览器也看不到相应的代码,相当于在servlet中注释掉了


6 JSP page 指令

page 指令可以定义下面这些大小写敏感的属性(大致按照使用的频率列出):import、contentType、pageEncoding、session、isELIgnored(只限 JSP 2.0)、buffer、autoFlush、info、errorPage、isErrorPage、isThreadSafe、language 和 extends。



7 import 属性

定义JSP网页使用那些Java API。 和一般的Java import意义一样,用于引入要使用的类,只是用逗号“,”隔开包或者类列表。默认省略,即不引入其他类或者包。例如,import="java.io.*,java.util.Date"。默认情况下,servlet 导入 java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.*,也许还包括一些服务器特有的包。编写 JSP 代码时,绝不要依靠任何自动导入的服务器特有类。这样做会使得代码不可移植。


使用 import 属性时,可以采用下面两种形式:


1、<%@ page import="package.class" %>


2、<%@ page import="package.class1, ..., package.classN" %>


import 是 page 的属性中惟一允许在同一文档中多次出现的属性。尽管 page 指令可以出现在文档中的任何地方,但一般不是将 import 语句放在文档顶部附近,就是放在相应的包首次使用之前。


8 contentType 和 pageEncoding 属性

contentType 属性设置 Content-Type 响应报头,标明即将发送到客户程序的文档的 MIME 类型。


使用 contentType 属性时,可以采用下面两种形式:


1、<%@ page contentType="MIME-TYPE" %>


2、<%@ page contentType="MIME-Type; charset=Character-Set" %>


不同于常规 servlet (默认的 MIME 类型为 text/plain),JSP 页面的默认 MIME 类型是 text/html (默认字符集为 ISO-8859-1)。


如果只想更改字符集,使用 pageEncoding 属性更为简单。例如,中文JSP页面可以使用下面的语句:


<%@ page pageEncoding="GBK" %>


9 session 属性

session 属性控制页面是否参与 HTTP 会话。使用这个属性时,可以采用下面两种形式:


1、<%@ page session="true" %>  //默认值


2、<%@ page session="false" %>


true 值(默认)表示,如果存在已有会话,则预定义变量 session (类型为HttpSession)应该绑定到现有的会话;否则,创建新的会话并将其绑定到 session。false 值表示不自动创建会话,在 JSP 页面转换成 servlet 时,对变量 session 的访问会导致错误。对于高流量的网站,使用 session="false" 可以节省大量的服务器内存。但要注意,session="false" 并不禁用会话跟踪,它只是阻止 JSP 页面为那些尚不拥有会话的用户创建新的会话。由于会话是针对用户,不是针对贞面,所以,关闭某个页面的会话跟踪没有任何益处,除非有可能在同一客户会话中访问到的相关页面都关闭会话跟踪。


10 buffer和autoFlush属性

buffer 属性指定 out 变量(类型为 JspWriter )使用的缓冲区的大小。使用这个属性时,可以采用下面两种形式:


1、<%@ page buffer="sizekb" %>


2、<%@ page buffer="none" %>


服务器实际使用的缓冲区可能比指定的更大,但不会小于指定的大小。例如,<%@ page buffer="32kb" %> 表示应该对文档的内容进行缓存,除非累积至少为32KB、页面完成或明确地对输出执行清空(例如使用 response. flushBuffer),否则不将文档发送给客户。


默认的缓冲区大小与服务器相关,但至少8KB。如果要将缓冲功能关闭,应该十分小心:这样做要求设置报头或状态代码的 JSP 元素都要出现在文件的顶部,位于任何 HTML 内容之前。另一方面,有时输出内容的每一行都需要较长的生成时间,此时禁用缓冲或使用小缓冲区会更有效率;这样,用户能够在每一行生成之后立即看到它们,而不是等待更长的时间看到成组的行。


autoFlush 属性控制当缓冲区充满之后,是应该自动清空输出缓冲区(默认),还是在缓冲区溢出后抛出一个异常(autoFlush="false")。使用这个属性时,可以采用下面两种形式:


1、<%@ page autoFlush="true" %> //默认值


2、<%@ page autoFlush="false" %>


在 buffer="none" 时,false 值是不合法的。如果客户程序是常规的 Web 浏览器,那么 autoFlush="false" 的使用极为罕见。但是,如果客户程序是定制应用程序,可能希望确保应用程序要么接收到完整的消息,要么根本没有消息。false 值还可以用来捕获产生过多数据的数据库查询,但是,一般说来,将这些逻辑放在数据访问代码中(而非表示代码)要更好一些。


11 HTML中的注释

JSP 文件是由 HTML 标记和嵌入的 Java 程序段组成的,所以在 HTML 中的注释同样可以在 JSP 文件中使用。注释格式如下:


<!--注释内容-->


使用该方法注释的内容在客户端浏览器中是看不到的,但可以通过查看 HTML 源代码看到这些注释内容。


12 JSP注释

在 JSP 页面中可以使用多种注释,如 HTML 中的注释、JAVA中的注释和在严格意义上说属于 JSP 页面自己的注释——带有 JSP 表达式和隐藏的注释。在 JSP 规范中,它们都属于 JSP 中的注释,并且它们的语法规则和运行的效果有所不同。接下来我们将介绍 JSP 中的各种注释。


13 隐藏注释

前面已经介绍了如何使用 HTML 中的注释,这种注释虽然在客户端浏览页面时不会看见,但它却存在于源代码中,可通过在客户端查看源代码看到被注释的内容。所以严格来说,这种注释并不安全。下面介绍一种隐藏注释,注释格式如下:


<%--注释内容--%>


用该方法注释的内容,不仅在客户端浏览时看不到,而且即使在客户端查看 HTML 源代码,也不会看到,所以安全性较高。


14 脚本程序中的注释

脚本程序中包含的是一段 Java 代码,所以在脚本程序中的注释与在 Java 中的注释是相同的。

脚本程序中包括下面 3 种注释方法。


1、单行注释


//我是注释


符号“//”后面的所有内容为注释的内容,服务器对该内容不进行任何操作。因为脚本程序在客户端通过查看源代码是不可见的,所以在脚本程序中通该方法注释的内容也是不可见的,并且后面将要提到的通过多行注释和提示文档进行注释的内容都是不可见的。


2、多行注释


多行注释是通过“/*”与“*/”符号进行标记的,它们必须成对出现,在它们之间输入的注释内容可以换行。注释格式如下:


/*

* 我是注释

* 我也是注释

*/


与单行注释一样,在“/*”与“*/”之间注释的所有内容,即使是 JSP 表达式或其他脚本程序,服务器都不会做任何处理,并且多行注释的开始标记和结束标记可以不在同一个脚本程序中同时出现。


3、文档注释


该种注释会被 Javadoc 文档工具在生成文档时读取,文档是对代码结构和功能的描述。注释格式如下:


/**


* 我是注释1


* 我是注释2


*/


该注释方法与上面介绍的多行注释很相似,但它是以“/**”符号作为注释的开始标记,而不是“/*”。与多行注释一样,对于被注释的所有内容,服务器都不会做任何处理。


15 JSP脚本

脚本可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。


脚本的语法格式:


<% 代码片段 %>


比如:

<% out.println("hello world"); %>

这些代码,通过jsp引擎转换成servlet后,这些代码会放在service方法当中


16 JSP声明

一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。


JSP声明的语法格式:


<%! 声明内容 %>


在jsp文件转换为Java后,写在声明中的语句会放在service方法外面,所以在声明中不能写执行语句,只能写声明语句或者方法,用的很少


17 JSP表达式

一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。


由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。


表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。


JSP表达式的语法格式:


<%= 表达式 %>

目录
相关文章
|
1天前
|
XML Java 数据格式
JSP 教程 之 JSP 语法 8
JSP教程介绍了基础语法,包括使用XML结构的JSP行为标签,如&lt;jsp:include&gt;(包含资源)、&lt;jsp:useBean&gt;(初始化JavaBean)、&lt;jsp:setProperty&gt;(设置Bean值)、&lt;jsp:getProperty&gt;(获取Bean值)、&lt;jsp:forward&gt;(请求转发)、&lt;jsp:plugin&gt;(嵌入Applet和Bean)、&lt;jsp:element&gt;、&lt;jsp:attribute&gt;。
6 0
|
1天前
|
缓存 Java
JSP 教程 之 JSP 语法 7
JSP语法讲解包括指令:`&lt;%@ page %&gt;`定义页面属性,如语言和错误处理;`&lt;%@ include %&gt;`用于合并其他文件;`&lt;%@ taglib %&gt;`引入自定义标签库。这些指令影响整个页面。
8 0
|
1天前
|
Java
JSP 教程 之 JSP 语法 6
JSP教程简述基础语法,包括注释和输出日期。注释类型有隐藏的JSP注释(&lt;%-- --%&gt;)和HTML注释。示例显示当前日期如&quot;2024-05-18 08:40:07&quot;。语法亮点:JSP表达式&lt;%= %&gt;用于输出,静态代码使用&lt;% %&gt;和&lt;%常量 %\&gt;。属性值内单引号(&#39;)和双引号(&quot;)需转义。
6 1
|
2天前
|
Java
JSP 教程 之 JSP 语法 5
**JSP语法简述**:学习JSP基础,包括注释和表达式。注释用于文档说明和隐藏代码,如`&lt;%-- --%&gt;`。示例展示动态日期:`&lt;%= new java.util.Date().toLocaleString()%&gt;`,在2024年5月18日显示为&quot;2024-05-18 08:40:07&quot;。
6 1
|
2天前
|
XML Java 数据格式
JSP 教程 之 JSP 语法 4
JSP教程介绍了基础语法,包括JSP表达式,它将脚本语言表达式转化为String并插入文本。表达式不需以分号结束,适用于HTML标签内。示例显示了如何显示当前日期:`&lt;%= (new java.util.Date()).toLocaleString()%&gt;`,运行结果如&quot;今天的日期是: 2024-05-18 08:40:07&quot;。
6 1
|
2天前
|
XML Java 数据格式
JSP 教程 之 JSP 语法 3
**JSP语法简述:**了解JSP声明,用于声明变量和方法,如`&lt;%! int i = 0; %&gt;`, 先声明后使用。也可用XML格式 `&lt;jsp:declaration&gt;...&lt;/jsp:declaration&gt;`。
10 4
|
3天前
|
Java
JSP 教程 之 JSP 语法 2
JSP教程简述基础语法,包括解决中文编码问题。在JSP文件头部添加`&lt;%@ page ... charset=UTF-8 %&gt;`和`&lt;meta charset=&quot;utf-8&quot;&gt;`确保中文显示正常。示例代码展示如何输出&quot;Hello World!&quot;及访问者的IP地址。
10 4
|
3天前
|
XML Java 应用服务中间件
JSP 教程 之 JSP 语法 1
JSP教程介绍了基础语法,包括脚本程序的使用,允许插入Java代码。示例展示了一个简单的&quot;Hello World&quot;页面,显示用户IP。要运行,需确保Apache Tomcat已安装并配置好,将代码保存为hello.jsp,放在指定目录下,通过http://localhost:8080/hello.jsp访问。
16 4
|
5天前
|
存储 Java
JSP原理以及基本语法
JSP原理以及基本语法
|
7月前
|
缓存 JavaScript 前端开发
JSP基础语法
JSP基础语法
32 0

相关课程

更多