JSP入门
JSP简介
所谓JSP就是在网页文件中嵌入Java代码或JSP定义的一些标记。JSP是建立在Servlet上的,在执行时JSP容器会先将JSP文件转换成Servlet文件以及class 文件,然后再执行。所以说JSP实际上也是Servlet。JSP容器也是Servlet容器。
JSP语法
JSP页面由元素和模板数据组成,模板数据不必理会,这些内容将直接发到客户端,JSP容器不会处理,例如HTML内容。
JSP元素分为指令元素、脚本元素和动作元素三种。
指令元素
指令元素用于为转换阶段提供整个JSP页面的相关信息,不会产生任何的输出到当前的输出流中。指令元素有三种分别是:page、include和taglib。语法形式如下所示:
<%@ directive (attr="value")* %>
XML语法格式
<jsp:directive.page attr1="value1" attrl="value2".. />
page指令
page指令的作用范围是整个JSP页面,无论放到哪里都可以,好的习惯应该放到JSP页面的顶部。page指令有13个属性:
- language="scriptingLanguage"
用于指定脚本元素使用的脚本语言,默认java,就目前来说也仅支持java
- extends="className"
用于指定JSP页面转换后的Servlet类从哪一个类继承,通常不需要使用,JSP容器会自动提供。需要注意的是该值时完整的限定类名
- import="importList"
用于指定脚本环境中可以使用的Java类。例如:
<%@ page import="java.util.Vector, java.io.*" %>
//或者
<%@ page import="java.util.Vector" %>
<%@ page import="java.io.*" %>page指令中只有import属性可以重复设置。默认导入列表是:java.lang.*,java.servlet.*,java.servlet.jsp.*和javax.servlet.http.*。
- session="true|false"
用于指定JSP页面中是否可以使用session对象,默认true
- buffer="none|sizekb"
用于指定out对象的缓冲区大小,若设为none,表示没有缓冲区,所有输出通过ServletResponse的PrintWriter对象写出。单位为kb,默认8kb。
- autoFlush="true|false"
用于指定当缓冲区满的时候,缓存是否自动刷新,若设为false,当缓冲区满时会抛出一个异常。默认true
- isThreadSafe="true|false"
用于指定对JSP页面的访问是否是线程安全的。默认true。此属性不推荐使用
- info="info_text"
用于指定页面的相关信息,该信息可以通过Servlet接口的getServletInfo()方法得到。
- errorPage="error_url"
用于指定当JSP页面发生异常时,将转向哪一个错误处理页面。需要注意的是,若一个页面通过使用该属性定义了错误页面,那么在web.xml文件中定义的任何错误页面将不会被访问。
- isErrorPage="true|false"
用于指定当前JSP页面是否是另一个JSP页面的错误处理页面,默认false。
- contentType="ctinfo"
指定用于响应的JSP页面的MIME类型和字符编码。例如:
<%@ page contentType="text/htmll charset=gb2312" %>
- pageEncoding="peinfo"
用于设置JSP页面使用的字符编码,若设置了该属性,则使用该属性指定的字符集,若无,则使用contentType属性指定的字符集,如果两个都没有指定,则使用字符集"ISO-8859-1"
- isELIgnored="true|false"
用于定义在JSP页面中是否执行或忽略EL表达式。默认值依赖于web.xml文件。
include指令
include指令用于在JSP页面中静态的包含一个文件,该文件可以使JPS文件,HTML文件、文本文件或者一段Java代码。需要注意的是包含的文件最好不要包含<html><body>等标签,这会影响到原JSP文件中同样的标签。源文件与被包含文件可以彼此访问定义的变量和方法,因此包含时需要格外小心。include指令语法如下:
<%@ include file="relativeURLsper" %>
xml语法格式
<jsp:directive.include file="relativeURLspec" />
示例:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030" %>
<%@ page contentType="text/html; charset=gb2312" %>
<html>
<head>
<title>My JSP 'MyJsp.jsp' starting page</title> </head>
<body>
现在时间是:
<%@ include file="date.jsp" %>
</body>
</html>
date.jsp
<%
out.println(new java.util.Date().toLocaleString());
%>
taglib指令
taglib指令允许页面使用用户定制的标签。语法格式如下:
<%@ taglib (uri="tagLibraryURL" | tagdir="tagDir") prefix="tagPrefix" %>
xml语法格式
<jsp:directive.taglib (uri="tagLibraryURL" | tagdir="tagDir") prefix="tagPrefix" />
- uri
该属性唯一的标识和前缀相关的标签库描述符,可以是绝对或者相对的URI。这个URI用于定位标签库描述符的位置
- tagdir
该属性指示前缀将被用于标识安装在/WEB-INF/tags/目录或者子目录下的标签文件
- prefix
定义一个prefix:tagname形式的字符串前缀,用于区分多个自定义标签。
脚本元素
脚本元素包含三个部分:声明、表达式和脚本段
声明
声明脚本元素用于声明在JSP页面的脚本语言中使用的变量和方法。声明必须是完整的声明语句,遵照java语言的语法。声明不会再当前输出流中产生任何输出。
声明语法:
<%! declaration(s) %>
xml语法格式的声明
<jsp:declaration>declaration(s)</jsp:declaration>
声明示例:
<%! int i; %>
<%! int j =0; %>
<%! public String f(int i) {if (i<3) return "3" ;} %>
可以再一个声明中声明多个变量和方法,也可以使用多个声明。在声明变量的时候要注意不要忘记变量后面的分号,声明只在当前JSP页面有效。另外,使用声明声明的变量,在JSP容器转化JSP页面为Servlet类时,将作为该类的实例变量(类成员变量)或者类变量(类静态成员变量),在多用户并发访问时,这将导致线程安全的问题。
脚本段
脚本段是在请求处理期间要执行的java代码段。脚本段可以产生输出,并将输出发送到客户端,也可以是流程控制语句。语法如下:
<% scriptlet %>
xml语法格式
<jsp:scriplet> scriplet</jsp:scriplet>
在脚本段中声明的变量为局部变量,在后面的脚本段中可以使用该变量。脚本段中的变量时线程安全的。
表达式
表达式脚本元素是Java语言中完整的表达式,在请求处理时计算这些表达式,计算的结果将被转成字符串,插入到当前的输出流中。语法如下:
<%= expression %>
xml语法格式
<jsp:expression> expression</jsp:expression>
要注意,在书写表达式时,一定不要再表达式后面添加任何的标点符号。
动作元素请见下一个博文。
JSP入门的更多相关文章
- Jsp入门学习笔记
#Jsp入门 一.JSP基础语法 1.JSP指令: page inlcude taglib 2.JSP注释: a.html注释: <!-- abcdefghijklmn --> b.jsp ...
- JSP入门:介绍什么是JSP和Servlet(转)
转自:http://developer.51cto.com/art/200907/134506.htm JSP入门:什么是jsp? JSP(Java Server Pages)是由Sun Micros ...
- JSP入门必读
JSP基础知识:转自老师上课梳理的笔记,希望对大家有所帮助.有什么不妥当的地方还望大家批评指正. 特别适用于JSP入门的人员使用.1.JSP [1] 简介1.1 HTML HTML擅长显示一个静 ...
- 九、JSP入门(1)
JSP入门 1 JSP概述 1.1 什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源.它与html页面的作用是相同的,显示数据和获取数据. 1.2 JSP的 ...
- day11(jsp入门&Cookie&HttpSession&一次性图片校验码)
day11 JSP入门 1 JSP概述 1.1 什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源.它与html页面的作用是相同的,显示数据和获取数据. ...
- JSP入门之自定义标签
第二部分简单讲解:主要讲解el表达式,核心标签库.本章主要讲解:自定义标签库:404页面,505页面,错误页面配置方法 全部代码下载:链接 1.JSP自定义标签: 自定义标签是用户定义的JSP语言元素 ...
- Jsp入门实战上
前面讲了servlet入门实践现在开始介绍jsp入门实践,开发环境的搭建请参考我前面的tomcat的文章,jsp入门教程分为上下两部分,第一部分简单讲解:jsp语法的规范,以及三大编译指令,七个动作指 ...
- Cookie&&Session&&jsp入门
会话技术 会话:一次会话中包含多次请求和响应. 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Coo ...
- jsp 入门 cookie session
Java Server Page ==> 服务器端的动态页面资源.用来做显示的功能. JSP构成 ==> HTML 脚本代码 标签构成. JSP 原理 ==> 实际上就是 servl ...
随机推荐
- css3实现3D立体翻转效果
1.在IE下无法显示翻转效果,火狐和谷歌可以 /*样式css*/ .nav-menu li { display: inline; } .nav-menu li a { color: #fff; dis ...
- MMORPG大型游戏设计与开发(服务器 AI 概述)
游戏世界中我们拥有许多对象,常见的就是角色自身以及怪物和NPC,我们可以见到怪物和NPC拥有许多的行为,比如说怪物常常见到敌对的玩家就会攻击一样,又如一些NPC来游戏世界中走来走去,又有些怪物和NPC ...
- UrlEncode 和 HtmlEncode
UrlEncode 是将指定的字符串按URL编码规则,包括转义字符进行编码.
- RFID考试背诵
简答题: 简述RFID标准多元化的原因: 由不同的技术因素.利益因素导致: 工作频率分布在低频至微波的多个频段中,频率不同,技术差异大. 作用距离的差异导致标准不同:因为应答器分为有源.无源两种工作方 ...
- 3357: [Usaco2004]等差数列
3357: [Usaco2004]等差数列 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 321 Solved: 153[Submit][Statu ...
- 【转】【MySql】MySql优化要点
如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL的出现暂时解决了这一危机 ...
- Python-07-面向对象(进阶篇)
1.面向对象高级语法部分 1.1 静态方法 通过 @staticmethod 装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里 ...
- mysqli_fetch_assoc php的新的库函数
注释:mysql_fetch_assoc() 函数 定义和用法mysql_fetch_assoc() 函数从结果集中取得一行作为关联数组. 返回根据从结果集取得的行生成的关联数组,如果没有更多行,则返 ...
- PyCharm3.0默认快捷键(翻译的)
PyCharm3.0默认快捷键(翻译的) PyCharm Default Keymap 1.编辑(Editing) Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt ...
- Stack Overflow: The Architecture - 2016 Edition
To get an idea of what all of this stuff “does,” let me start off with an update on the average day ...