与JSP的初次邂逅……
JSP是可以内嵌在网页中,由服务器端来执行与解释的程序,是一种动态网页技术标准。
在传统的HTML文件(*.htm或*.html)中加入Java程序片段和JSP标记,就构成了JSP网页(*.jsp)。
一、JSP和客户端的交互是通过HTTP协议实现的,一般情况下,JSP的执行过程大致由如下几步构成:
(1)客户端发出Request(请求)。
(2)JSP Container 将JSP转译成 Servlet 的源代码。
(3)将产生的 Servlet 的源代码经过编译后,加载到内存执行。
(4)把结果 Response (响应)至客户端。
二、JSP页面的组成元素
JSP(Java Server Pages),使用“<%”和 "%>"作为程序的区段范围的标记符号。
| JSP指令元素和脚本元素 | 说明 |
| 编译器指令:<%@ 编译器指令%> | 描述页面的基本信息 |
| 声明:<%! 声明 %> | 插入到Servlet 类中,但置于所存在的方法之外 |
| 表达式:<%= 表达式 %> | 包含变量或常量,当页面被请求时,会被计算,用来赋值和插入输出 |
| 程序代码:<% 程序代码 %> | 包含一个代码片段,当页面被请求时会被执行,插入到Servlet的service方法中 |
| 注释:<%-- 注释 --%> | 允许内嵌文档注释 |
1.编译器指令
1)page指令
主要功能是设定整个JSP网页的属性和相关功能。
基本语法如下:
<%@ page attribute1=”value1” attribute2="value2" ...%>
| 属性 | 说明 |
| language="scriptingLanguage" | 指定JSP Container 要用什么语言来编译JSP网页,默认值为Java |
| extends="className" | 指定此JSP网页产生的Servlet是继承哪个父类 |
| import="importList" | 指定此JSP网页可以使用哪些Java API |
| session="true|false" | 指定此JSP网页是否可以使用session对象,默认值为true |
| buffer="none|size in kb" | 指定输出流是否有缓冲区,默认值为8KB的缓冲区 |
| autoFlash="true|false" | 指定输出流的缓冲区是否要自动清除,默认值为true |
| isThreadSafe="true|false" | 用于告诉JSP Container 此JSP网页是否能处理超过一个以上的请求,默认值为true |
| info="text" | 表示此JSP网页的相关信息 |
| errorPage="error_url" | 表示如果发生异常错误,网页会被重新指向的URL |
| isErrorPage="true|false" | 表示此JSP网页是否为处理异常错误的网页 |
| contentType="ctinfo" | 表示MIME类型和JSP网页的编码方式 |
| pageEncoding="ctinfo" | 表示JSP网页的编码方式 |
2)include指令
主要功能是在JSP编译时插入一个包含文本或代码的文件。包含的文件可以是JSP网页、HTML网页、文本文件或一段Java程序。
基本语法如下:
<%@ include file = "relativeURLspec" %>
relativeURLspec表示此file的路径。
3)taglib指令
主要功能是用户自定义新的标签。
基本语法如下:
<%@ taglib uri = "tagLibraryURI" prefix="tagPrefix" %>
其中uri ="tagLibraryURI" 用于说明tagLibrary的存放位置,而prefix="tagPrefix"表示自定义标签的标识符,主要用来区分多个自定义标签。
2.声明
声明合法的变量和方法。以<%! 为起始,以%> 为结尾,语法如下:
<%! delaration; [delaration;] + ... %>
例如: <%! int a,b,c; %>
注意!!!
(1)每一个声明仅在一个页面中有效,如果需要每个页面都用到一些声明,最好写成一个单独的JSP网页,然后用<%@include %>等元素包含进来。
(2)用<%! %>声明的为全局变量。
3.表达式
基本语法如下:
<%= expression %>
这个表达式元素能够包含任何Java语法,有时候也作为其他JSP元素的属性值。表达式在执行后会被自动转化为字符串,然后被直接包括在输出页面之内显示出来。
4.程序代码
通常主要的程序就是写在这里啦!
基本语法如下:
<% code fragment %>
包括多个语句、方法、变量、表达式。
5.注释
客户端显示的注释: <!--comment [<%=expression %>] -->
开发程序员专用的注释: <%-- comment --> 或 </** this is a comment **/>
开发程序员专用的注释在客户端浏览器上看不出来,并且在JSP编译时会被忽略。通常程序员可以用它来调试(Debug)程序。
学习ing,持续更新中……
与JSP的初次邂逅……的更多相关文章
- CMS3.0——初次邂逅express
前言: 刚接手cms3.0的工作,似乎对一切都那么的不熟悉,于是在开始新需求之前,先做一个简单的登录系统. 项目目录: 1.使用webstroms建expreess项目,非常方便简单,建好的项目目录就 ...
- Java Web1
Java Web应用的核心技术是Java Server Page和Servlet.此外,开发一个完整的Java Web应该涉及一下几种概念及技术. 1.Servlet组件 Servlet响 ...
- Java眼中的XML--文件读取--1 应用DOM方式解析XML
初次邂逅XML: 需要解析的XML文件: 这里有两个book子节点. 1.如何进行XML文件解析前的准备工作,另外解析先获取book节点. 这个我后来看懂了: 这个Node的ELEMENT_NODE= ...
- Java眼中的XML--------文件读取
XML 的初次邂逅 初次邂逅XML 如何进行XML文件解析前的准备工作 在Java程序中如何获取xml文件的内容 在Java程序中读取xml文件的过程也成为----解析xml文件 解析的目的:获取节 ...
- Java Web入门必知
Java Web应用的核心技术是Java Server Page和Servlet.此外,开发一个完整的Java Web应该涉及一下几种概念及技术. 1.Servlet组件 Serv ...
- Java——关于static关键字的那些事总结
前言: 先说说今天为啥要谈这个东西,虽然学Java已经有两年了,但是今天,本着温故而知新的态度,仔细的第三次翻看了<Head Firt Java>这本书,虽然这本书介绍的很多东西都特别基础 ...
- [转] C++ try catch() throw 异常处理
原文地址 其它很多程序员一样,本书的主人公阿愚也是在初学C++时,在C++的sample代码中与异常处理的编程方法初次邂逅的,如下: // Normal program statements . ...
- 《Machine Learning in Action》—— 剖析支持向量机,单手狂撕线性SVM
<Machine Learning in Action>-- 剖析支持向量机,单手狂撕线性SVM 前面在写NumPy文章的结尾处也有提到,本来是打算按照<机器学习实战 / Machi ...
- “知疫”疫情防控可视化平台——NABCD分析
"知疫"疫情防控可视化平台 项目 内容 这个作业属于那个课程 2021春季学期软件工程(罗杰.任健) 这个作业的要求在哪里 初次邂逅,需求分析 1 NABCD分析 NEED 目前多 ...
随机推荐
- C#开发微信门户及应用(45)--微信扫码登录
在前面随笔<C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理>介绍了基于微信开放平台接口实现的微信扫码直接登录的过程.本篇介绍对扫码登录的一些改进和处理,以便更方便应用在实 ...
- JS基础之对象
JS中一切皆为对象,这是一句常说的话.了解JS对象,从这句话开始吧.JS中的基本数据类型如number,bool,字符串,数组,null,undefined等等都是对象. 对象的本质: 带有属性和方法 ...
- ABP 初探 之基于EasyUI的CURD
结束了天天加班的项目,项目虽然结束,但还是有点小问题,只能在后期优化当中完成了,本次做项目采用了,MVC.Webapi.Entityframework,在园了里看到了有关ABP的介绍,同样ABP也是最 ...
- Lind.DDD.Domain领域模型介绍
回到目录 Lind.DDD.Domain位于Lind.DDD核心项目中,它主要面向领域实体而设计,由一个IEntity的标识接口,EntityBase基类和N个Entity实体类组成,其中IEntit ...
- 咱小谈CLR
1.什么是CLR CLR(Common Language Runtime)公共语言远行时,是一个可由多种编程语言使用的“远行时”.CLR的核心功能(比如内存管理.程序集加载.安全性.异常处理和线程同步 ...
- Css动画总结
transform: transition: animation:
- CSS3动画属性Transform解读
无论你是前端还是设计师,相信你在网页二维空间上的操作早已经得心应手,JS处理时间线的动画也早已经 烂熟于胸.从今天开始,我跟大家分享一些“新”的东西,网页的第三个维度,以及纯CSS实现的动画.限于篇幅 ...
- 修改NavigationBarItem的字体大小和颜色的使用方法
//创建一个左边按钮 UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"<" st ...
- iOS中延时执行的几种方式的比较和汇总
本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...
- Atitit.报名模块的管理
Atitit.报名模块的管理 1.1. 统计报名数据1 1.2. 存储1 1.3. 报名1 1.4. 查看报名数据3 1.1. 统计报名数据 select count(*) as nums from ...