上一篇《JSP的学习》讲述了JSP的一些基础知识和底层原理,本篇将来学习JSP所需掌握的语法知识等。

JSP的语法主要包括以下几个部分的内容:

  1)         JSP模板元素

  2)         JSP脚本表达式

  3)         JSP脚本片断

  4)         JSP声明

  5)         JSP注释

  6)         JSP指令

  7)         JSP标签

  8)         JSP九大隐式(内置)对象

  我们学习JSP语法就围绕上述几个语法进行展开。

JSP模板元素:

  JSP模板元素指的是在JSP中的HTML内容,JSP模板元素定义了网页的基本框架,即定义了页面的结构和外观,例如:

     <font color="red" >
<%
Date date = new Date();
out.write(date.toLocaleString());
%>
</font>

其中,包围着Java代码的<font>这个HTML标签就称为JSP的模板元素。

JSP脚本表达式:

  JSP脚本表达式(expression) 用于将Java程序的数据输出到浏览器页面上。

  语法格式:

    <%= 变量或者表达式 %>

例1: 在JSP中写入:

 The current time is : <%= new java.util.Date() %>

  在浏览器中显示的效果如下:

  

例2:在JSP中写入:

     <%
Date date = new Date();
String time = date.toLocaleString();
%>
The current time is :
<%=time %>

  在浏览器中显示的效果如下:

  

  我们知道JSP最终会被翻译转换成Servlet,那么通过在JSP中的脚本表达式<%=  %>会在Servlet中怎么表示呢,我们查看Tomcat的【work】目录下该JSP对应的 .java文件(如果不懂请看上一篇博客《JSP的学习(1)》)。

  

  可以看到在转换后的Servlet中,就是通过JSPWriter类的out对象将time这个变量输出(print方法和writer方法基本相同,只是通过print方法使我们在浏览器查看源码时也是自动对齐的)。所以通过JSP的脚本表达式显示Java程序的数据和Servlet中将数据通过流输出其实就是一码事!

  简单来说就是JSP引擎(JSP引擎是指在Tomcat中将JSP翻译转换成Servlet的那个程序)在翻译脚本表达式时会将程序数据传换成字符串,然后通过在Servlet中调用out.print(…)方法将数据输出给浏览器。

  注意,在JSP脚本表达式中的变量或表达式后面不能有分号“;”。

JSP脚本片断:

  JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码。

  语法格式:

     <%
…… //多行Java代码
%>

  注意:在使用脚本片断时,只能在其中编写Java代码,不能出现模板元素(HTML标签等),因为JSP引擎在翻译JSP代码时,会将JSP脚本片断原封不动的放到Servlet的 _jspService()方法中。同时,脚本片断中的Java代码必须严格按照Java格式,如每行后必须有分号“;”。

  在一个JSP页面中可以有多个脚本片断,同时这些脚本片断之间可以相互访问,犹如所有的脚本片断内容都放置在一对<%  %>中,这点想想转换后的Servlet是什么样子就知道了,例:

     <%
int x = 10;
out.print(x);
%>
<br><br>
<%
   int y = 20;
   out.print(x); //依然能输出 x=10
%>

  在每个脚本片断之间可以插入文本,HTML标签和其他JSP元素。

JSP声明:

  JSP声明是指在经过JSP声明的Java代码会放置在Servlet的_jspService()方法外部。(而上面JSP脚本片断的代码则是放在_jspService()方法内部中)

  JSP声明的语法格式: 注意在第一个“%”后有一个感叹号“!”。

    <%!
     …… //java代码
   %>

  由于经过JSP声明的Java代码会放置在Servlet的_jspService()方法外部,所以可以使用JSP声明定义Servlet的新方法、静态代码块、成员变量等等。因为这些都会在Servlet内,又不会在_jspService()中。

  JSP声明可以一个,也可以多个。JSP的隐式对象(如out,page等)因为是在_jspService()方法中定义并在其范围内才可使用,所以在JSP声明中不能使用这些隐式对象。

  JSP声明并不常用,一般只出现在面试题中……

JSP注释:

  在JSP页面中,JSP注释格式为:

    <%--  注释信息  --%>

  JSP引擎在将JSP页面翻译转换成Servlet程序时,会忽略JSP页面中被注释的内容。

  当然,在JSP中还可以使用HTML注释:<-- 注释信息 --> 。HTML注释与JSP注释在浏览器页面上都看不到注释信息,但是HTML注释会在浏览器查看源码中看到,但是JSP注释不会,因此为了能优化服务器发回浏览器的数据容量,我们还是应该使用JSP注释,这样能减少服务器发送给浏览器不必要的数据。

JSP指令:

  JSP指令是为JSP引擎而设计的,JSP指令不产生任何可见输出,只是告诉在转换成Servlet的过程中如何处理JSP页面中的其余部分。

  JSP指令将在下一篇《JSP的学习(3)——语法知识二之page指令》中详细介绍。

JSP的学习(2)——语法知识一的更多相关文章

  1. JSP的学习(5)——语法知识三之include指令

    本篇继续来对JSP语法中的JSP指令进行学习,在<JSP的学习(3)——语法知识二之page指令>中,已经介绍了JSP指令的书写格式和page指令的详细信息,所以在这一篇中我们会对JSP指 ...

  2. JSP的学习(4)——中文乱码的解决

    本篇将以JSP页面中可能存在的中文乱码问题进行分析和解决. 中文乱码的问题一直是国人在编程过程中的一大头疼问题,这点上在JSP.Servlet或Tomcat上随处可见.比如我们在写一个Servlet时 ...

  3. JSP的学习(6)——九大隐式对象及其out对象

    本篇将介绍JSP中的九大隐式对象,并重点介绍其中的out对象. 我们在之前的博客<JSP的学习(1)——基础知识与底层原理>一文中已经知道,JSP最终要被翻译和转换成Servlet,在转换 ...

  4. Java基础语法知识你真的都会吗?

    第一阶段 JAVA基础知识 第二章 Java基础语法知识 在我们开始讲解程序之前,命名规范是我们不得不提的一个话题,虽说命名本应该是自由的,但是仍然有一定的"潜规则",通过你对命名 ...

  5. JSP的学习(3)——语法知识二之page指令

    本篇接上一篇<JSP的学习(2)——语法知识一>,继续来学习JSP的语法.本文主要从JSP指令中的page指令,对其各个属性进行详细的学习: JSP指令: JSP指令是为JSP引擎而设计的 ...

  6. JSP的学习(1)——基本知识与底层原理

    通过之前的学习,我们已经对Servlet有所了解,现在我们先来学习JSP,当能使用JSP进行友好的页面显示之后,再回去学习Servlet的其他高级特性会将整个学习很好的融入进来. JSP,即Java ...

  7. jsp/servlet相关技术及知识

    JSP页面的内容由两部分组成: 静态部分:标准的HTML标签.静态的页面内容, 动态部分:受Java程序控制的内容,这些都由java语言动态生成 简单的jsp页面代码: <%@ page lan ...

  8. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  9. JSP&Servlet学习手册

    JSP&Servlet学习手册 沙琪玛 书 目录 JSP 指令... 3 书写方式... 3 指令列表... 3 JSP 内置对象... 3 内置对象特点... 3 常用内置对象... 3 o ...

随机推荐

  1. UVa401 Palindromes

    #include <stdio.h>#include <string.h> char mirror(char c){    static const char m[] = &q ...

  2. keytool 生成 Android SSL 使用的 BKS

    我是在Mac(JDK 1.6) 环境下生成的,Windows  也应该通用; 首先要从CA那里申请来签名的证书,我的是crt格式的; 然后使用如下命令,对应的BcProvider 是 bcprov-e ...

  3. ContentType

    常用的 ContentType XML <% response.ContentType ="text/xml" %>  GIF images <% respons ...

  4. javaScript 网页特效 输出语句

    大家好,我是小强老师,今天主要讲解 三个最为常用的输出语句.  alert() 弹出警示框 window.alert(‘继续学习’);  完整的写法 效果如下: 因为alert 属于window 对象 ...

  5. 使用Maven打包项目并上传到Linux服务器

    Maven打包: 项目右键Run as-->Maven build...-->  出来下面的界面,注意红色部分的填写,Goals填写package表示打包,下面的Skip Tests表示打 ...

  6. 转:MySql的commit和rollback

    从功能上划分,SQL 语言可以分为DDL,DML和DCL三大类.1. DDL(Data Definition Language)     数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 ...

  7. mojo 接口返回键值对的json格式

    my $c = shift; use DBI; my %hash=(); my $dbUser='zabbix'; my $user="root"; my $passwd=&quo ...

  8. [置顶] Android开发之XML文件的解析

    Android系统开发之XML文件的解析 我们知道Http在网络传输中的数据组织方式有三种分别为:XML方式.HTML方式.JSON方式.其中XML为可扩展标记语言,如下: <?xml vers ...

  9. 翻转句子中单词的顺序 C语言

    输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开. 为简单起见,标点符号和普通字母一样处理. 比如将"I am a student"转化为&q ...

  10. C语言之基本算法09—各位全是a的数列之和

    /* ================================================================== 题目:数列为a,aa,aaa,--.求a+aa+aaa+-- ...