JSP

什么是JSP?

JSP是(Java Server Page)的缩写,是基于Java语言的一种Web应用开发技术,通俗一点说,它是一种实现普通静态HTML和动态HTML混合编码技术。利用这一技术可以搭建一个安全,跨平台的,动态的网站。

JSP运行原理

JSP是服务器端技术,在服务器端,JSP引擎解析JSP代码,然后将结果以HTML或XML页面形式发送到客户端,在客户端的用户是看不到JSP代码的。具体的原理解释如下:第一次请求JSP页面,JSP页面将先转换成为一个Java文件,编译后该Java文件生成对应的class文件,将其加载在内存,然后执行class文件完成响应;再次请求就直接加载class文件完成响应,每次请求都会启动一个线程来负责。当第一次加载JSP页面时,因为要将JSP转换为Servlet类,所以响应速度较慢;当再次请求时,JSP容器就会直接执行第一次请求产生的Servlet,而不会再重新转换JSP文件,所以其执行速度叫快。

JSP运行原理如下图所示:

Paste_Image.png

JSP语法

1.JSP的主要特点

把内容的生成和显示分离
生成可用的组件
应用标记简化页面的开发
具有Java的特点

2.JSP页面的组成

JSP代码放在特定的标签中,然后嵌入到HTML代码中。开始标签,结束标签和元素内容三部分统称为JSP元素,这是JSP页面组成的主要部分。
JSP元素可分成如下三种不同的类型。

脚本元素:规范JSP网页所使用的Java代码,包括:HTML注释,隐藏注释,声明,表达式和脚本段。
指令元素:是针对JSP引擎的,并不会直接产生任何看得见的输出。包括:include指令,page指令和taglib指令。
动作元素:利用XML语法格式的标记来控制Servlet引擎的行为。
3.JSP注释

注释增加了程序的可读性与可维护性,应该养成写注释的好习惯。JSP文件的注释有两种:HTML注释和隐藏注释。
HTML注释:发送到客户端,但不会在浏览器上显示,在客户端可通过查看源文件看到。
隐藏注释:写在JSP代码中,不发送到客户端。

4.JSP变量和方法的声明

在JSP程序中需要对用到的变量和方法进行声明,声明的基本语法如下:
<%声明;[声明;]%>
例如下面的代码:

<%! int i=6;%>
<%! int a,b,c;double d=6.0;%>
<%Date d=new Date();%>

需要注意的事项如下:
声明必须以";"结尾。
可以一次声明多个变量和方法,必须以","分开,以";"结尾。
声明的范围通常是JSP页面,但如果页面中使用include指令包含其他页面,范围应扩展到被包含的页面。
可以直接使用在<%@ page%>指令中包含进来已经声明了的变量和方法,不需要重新进行声明。
一个声明仅在一个页面中有效。如果想在每个页面都用到一些声明,最好把它们写成单独的文件,然后用<%@include%>或<jsp:include>动作包含进来。

5.JSP的表达式

JSP表达式是由变量,常量组成的算式,他将JSP生成的数值嵌入到HTML网页,用来直接输出Java代码的值。
表达式的基本语法规则如下:
<%=表达式%>
需要注意的事项如下:
不能用一个分号";"来作为表达式的结束符。
"<%="是一个完整的标记,中间不能有空格。
表达式元素包含在任何Java语言规范中有效的表达式。
表达式可以成为其他JSP元素的属性值。一个表达式可以由一个或多个表达式组成,按从左到右的顺序求值。

JSP指令

JSP指令是一些特殊的JSP语句,它是为JSP引擎而设计的,它们并不直接产生任何可见输出,只是告诉引擎如何处理其余的JSP页面,这些指令被括在"<%@ %>"标记中,常见的指令有以下三种:
page指令。
include指令。
taglib指令。

1.page指令

page指令称为页面指令,几乎在所有的JSP页面顶部都会看到page指令。
(1)page指令的语法规则如下:

<%@ page language="脚本语言"
                     extends="继承的父类名称"
                     import="导入的java包或类的名称"
                     session="true/false"
                     buffer="none/8k/自定义缓冲区大小"
                     autoflush="true/false"
                     isThreadSafe="true/false"
                     info="页面信息"
                     errorPage="发生错误是所转向的页面相对地址"
                     isErrorPage="true/false"
                     contentType="MIME类型和字符集"      
%>

(2)page指令的常用属性如下:
import:用来导入将要用到的一个或多个包/类。基本语法规则如下:

<%@ page import="java.util.Date"%>
<%@ page import="java.util.*"%>

errorPage:这个属性为一个URL路径指向的JSP网页,在指向JSP网页中处理初始JSP网页上产生的错误;通常在指向JSP网页上都会设置isErrorPage=true。

isErrorPage:这个属性的默认值为false;isErrorPage用来指定的JSP网页是否是另一个JSP网页的错误处理页,通常与errorPage配合使用。

contentType:用来指定JSP网页输出到客户端时所用的MIME类型和字符集。默认MIME类型是text/html,默认的字符集是ISO-8859-1。如果想输出简体中文,字符集需设置为gb2312。

需要注意的事项如下:
在一个页面中可以使用多个<%@page%>指令,分别描述不同的属性。
每个属性只能描述一次,但是import指令可以多次使用。
<%@page%>指令区分大小写。

(3)page指令用法。该例子包括两个JSP页面文件:true.jsp和error.jsp。
true.jsp为主页面,在本页面中,通过page指令指定当前发生错误时转向的错误处理页面。error.jsp为错误处理页面,在该页面显示相关信息提示用户访问出错。

true.jsp代码如下:

<%@ page contentType="text/html"; charset=gb2312 errorPage="errorPageDirec.jsp"%>
   <html><head><title>page指令示例</title></head>
       <body>
           <%
               int a = 10;
               int b = a / 0;
               out.println(b);
           %>
       </body>
   </html>

false.jsp代码如下:

<%@ page contentType="text/html"; charset=gb2312 isErrorPage="true"%>
   <html><head><title>错误处理页面</title></head>
       <body>
           您访问的页面出错啦!
      </body>
   </html>
2.include指令

有时候我们需要在JSP网页中插入其他的文件,插入文件有两种方式:include指令和jsp:include动作。
include指令成为文件加载指令,可以将其他的文件插入JSP网页,被插入的文件可以用是JSP文件,HTML文件或者其他文本文件,但是必须保证插入后形成的新文件符合JSP页面的语法规则。
include指令形式如下:
<% include file="相对地址"%>

下面用实例来说明include指令的使用,该实例包括两个文件:time.html文件和include.jsp文件。

time.html文件如下:
<%=(new Date()).toLocaleString()%>

include.jsp代码如下:

<%@ page contentType="text/html; charset=gb2312 import="java.util.*"%>
   <html>
       <head>
           <title>include指令示例</title>
       </head>
       <body>
            <center>
               现在的日期和时间是:
               <hr>
               <%@ include file="time.html"%>
            </center>
       </body>
   </html>
3.taglib指令

taglib指令用来定义一个标记库以及标记的前缀,其语法规则如下:
<%@ taglib uri="URLToLibrary" prefix="标记前缀"%>

未完待续。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容

  • 1.学习内容 JSP技术入门和常用指令 JSP的内置对象&标签介绍 EL表达式&EL的内置对象 2.JSP技术入门...
    WendyVIV阅读 2,136评论 1 18
  • 1.什么是JSP (1)jsp全称是Java Server Pages,它和Servlet技术一样都是sun公司定...
    yjaal阅读 3,655评论 5 99
  • 前面讲了servlet入门实践现在开始介绍jsp入门实践,开发环境的搭建请参考我前面的tomcat的文章,jsp入...
    伊豚wall阅读 3,370评论 2 56
  • 什么是jsp? 很久之前,我们的网页都是静态的,就是我们所看到的页面在编写好之后总是唯一的。后来有人便提出动态页面...
    ezsync小智阅读 1,511评论 0 13
  • 一、jsp定义及作用 JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网...
    yzw12138阅读 1,232评论 0 0