Jsp和Jstl

一.JSP注释

1、显式注释

在客户端可以看到的注释

1、继承HTML风格的注释    &lt;!-- HTML注释 --&gt; <!-- 这是HTML注释 -->

2、隐式注释

在客户端不可以看到的注释

1、JSP自己的注释    &lt;%-- JSP注释-- % &gt;  <%-- 这是JSP注释 --%>

2、继承Java风格的注释 // 单行注释    /*多行注释*/

二.scriptlet


Scriptlet(脚本小程序),所有嵌入在 HTML 代码中的 Java 程序。

在 JSP 中一共有三种 Scriptlet 代码:都必须使用 Scriptlet 标记出来

1、java脚本段

语法:&lt;% // java脚本段  %&gt;

特点:可以定义局部变量,编写java语句;被编译之后会生成在service方法体中

2、声明

语法:&lt;%! // 声明全局变量  %&gt;

特点:可以声明全局变量,方法等;被编译之后生成在servlet类体中

3、输出

语法:&lt;%= %&gt;

特点:可以输出变量、表达式或字面量;被编译之后生成在service方法体中;相当于out.print()输出

三.page指令

格式:&lt;%@page 属性="属性值" 属性="属性值"  %&gt;

常用属性:

language:支持的语言,当前只支持java

contentType:响应类型及编码格式

pageEncoding:编码

import:导包,只有import这个属性可以多次设置,其他属性只能设置一次

isErrorPage:当前页面是否是处理报错的页面,默认是false

errorPage:当页面报错时该跳转到什么页面

注:JSP页面的编码以contentType中的charset的值为准,如果未设置charset值,则以pageEncoding的属性值为准;如果都没有,则默认ISO-8859-1

四.include


1.include 静态包含

格式:<%@include file="文件的路径" %>

特点:相当于将包含的页面中的内容直接直接非复制粘贴;最终只会生成一个java文件;不能有同名变量。

优缺点:运行效率高一点点。耦合性较高,不够灵活。

2.include动态包含

无参:

格式:<jsp:include page="包含的页面路径"></jsp:include>

有参

<jsp:include page="包含的页面路径">

<jsp:param value="参数值" name="参数名"/>

</jsp:include>

特点:相当于方法的调用,会生成多个java文件;可以出现同名变量

注:

1、<jsp:include>双标签中不能包含任何内容,包括换行和空格,除非有参数

2、<jsp:param>的value属性值支持表达式,name属性值不支持

The name attribute of the jsp:param standard action does not accept any expressions

五.九大内置对象

request:用于获取请求信息,比如请求参数及客户端信息。

response:用于响应客户端请求。

out:用于输出响应信息。

session:代表浏览器与服务器的一次会话。HTTP协议是无状态协议,响应结束后,会话终断,不会保存会话信息,session

就是为了保存会话信息产生的。

application:代表应用程序,主要用于保存整个应用层面的信息。

page:代表当前页面。

pageContext:页面上下文,通过该对象可以获取其他对象,比如request/session/application等。

config:用于获取服务器的配置信息,初始化Servlet。

exception:用于获取页面的错误信息。

1.JSP四大域对象

pageContext.setAttribute("uname", "zhangsan");

request.setAttribute("uname", "lisi");

session.setAttribute("uname", "wangwu");

application.setAttribute("uname", "zhaoliu");

2.两个输出对象

out.print("Hello");

response.getWriter().write("Hello!");

3. 配置对象

out.print(config.getServletName());

// 当前jsp本身

//page

// 异常信息对象 (只有jsp页面设置属性isErrorPage="true"才能使用)

out.print(exception.getMessage());

六.EL表达式

语法:${域对象的key值}

注意:

1、el表达式一般操作的是域对象中的值,无法操作局部变量

2、el的取值范围有4个:pageContext、request、session、application,分别代表当前页、一次请求、一次会话、整个应用程序

3、el表达式默认从小范围到大范围取值,如果取到值则显示,未取到则继续往大范围找,找到即止;如果最终未找到,则显示空字符串""

4、获取指定域对象范围的值,可以通过pageScope、requestScope、sessionScope、applicationScope

5、el表达式获取JavaBean中的属性时,属性需要提供get方法(javax.el.PropertyNotFoundException: Property 'uname' not readable on type com.shsxt.po.User)

隐含对象


七.jstl

1.jstl的使用

1、导入jstl标签库所需要的jar包 (jstl.jar、standard.jar)

2、在jsp页面引入指定的库

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

3、使用标签库

<c:标签名  属性名="属性值" ></c:标签名>

2.if 标签

if 标签先对某个条件进行测试,如果该条件运算结果为 true, 则处理它的主体内容.

测试结果保存在一个 Boolean 对象中,并创建一个限域变量来引用 Boolean 对象。

可以利用 var 属性设置限域变量名,利用 scope 属性来指定其作用范围。

if 的语法有两种形式:

没有主体内容

<c:if test="返回boolean类型的条件" var="设置限域变量名的,用来接收返回值的" scope="限域对象的范围"></c:if>

有主体内容

<c:if test="返回boolean类型的条件" var="设置限域变量名的,用来接收返回值的" scope="限域对象的范围">

要执行的代码

</c:if>

常用属性:

test:返回boolean类型的条件,一般操作的都是域对象中的值

var:用来定义接收返回值的变量,但是该变量是存在域对象中的

scope:var设置的变量名所存放的域范围page\request\session\application

注:在jstl中没有else标签,如果出现需要else的情况,可以使用两个if,设置相反的;两个条件来实现

3. choose、when 和 otherwise 标签

1、choose标签中至少包含一个when标签,可以没有otherwise标签 (Illegal "choose" without child "when" tag)

2、choose标签中只能有when标签和otherwise标签(Illegal child tag in "c:choose" tag: "c:if" tag)

3、when标签和otherwise标签可以包含其他标签

4、choose标签和otherwise标签没有属性,when标签必须有test属性

5、otherwise标签必须放在最后一个when标签之后 (Illegal "c:when" after "c:otherwise" tag in "c:choose" tag.)

6、当所有的when标签的条件不成立时,才会执行otherwise标签

4.forEach标签

1、遍历主体内容多次

<c:forEach begin="开始的数" end="结束的数" var="接收当前被循环的成员" step="循环的间隔数"></c:forEach>

2、遍历集合、map等

<c:forEach items="被循环的对象" var="接收当前被循环的成员" varStatus="当前成员的相关信息"></c:forEach>

常用属性:

items:需要被遍历的对象(可以是集合、map等,都是存放在域对象中的数据)

var:限域变量名,用来每次被遍历到的成员

5.formatNumber 标签

formatNumber 标签 该标签用指定的格式或精度来格式化数字.

<fmt:formatNumber>标签有如下属性:

使用该标签时,有两种语法:

无主体内容

<fmt:formatNumber value="要被格式化的数值" type="被格式化的类型"/> <br>

常用属性:

value:要被格式化的数值

type:被格式化的类型

number数值型

percent百分比类型

currency货币类型

var:限域变量名,用来接收格式化好的返回值;如果设置var属性,则值不会再输出,需要使用el表达式输出var设置的值

6.formatDate 标签

使用指定的风格或模式格式化日期和时间,<fmt:formatDate>标签有如下属性:

<fmt:formatDate value="${mydate }"/><br>

<fmt:formatDate value="${mydate }" type="date"/><br>

<fmt:formatDate value="${mydate }" type="time"/><br>

<fmt:formatDate value="${mydate }" type="both"/><br>

  <fmt:formatDate value="${mydate }" type="both" dateStyle="long" timeStyle="full"/><br>

  <fmt:formatDate value="${mydate }" pattern="yyyy/MM/dd HH:mm:ss"/><br>

  <fmt:formatDate value="${mydate }" pattern="HH:mm:ss yyyy/MM/dd" var="date1"/>${date1 }<br>

7.parseDate 标签

此标签为指定区域解析日期和时间的字符串表示法。即解析一个代表着日期或时间的字 符串。两种形式:

<fmt:parseDate value="${date3 }"></fmt:parseDate><br>

<fmt:parseDate value="${date1 }" type="both"></fmt:parseDate><br>

<fmt:parseDate value="${date2 }" pattern="dd-MM-yyyy"></fmt:parseDate><br>

<fmt:parseDate value="${date3 }" pattern="yyyy-MM-dd"></fmt:parseDate><br>

8.parseNumber 标签

利用 parseNumber 标签可以将数字、货币或百分比的字符串表示法解析成指定语言环 境的数字。即解析一个代表着数字,货币或百分比的字符串。两种语法形式:

<fmt:parseNumber value="¥100.00" type="currency"></fmt:parseNumber> <br>

<fmt:parseNumber value="100%" type="percent"></fmt:parseNumber> <br>

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

推荐阅读更多精彩内容

  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    java日记阅读 3,402评论 0 13
  • JSP 基本结构JSP 页面组成:模板文本(HTML,XML,纯文本),JSP 元素;JSP 元素:脚本元素,指令...
    jslancer阅读 829评论 0 11
  • 1.学习内容 JSP技术入门和常用指令 JSP的内置对象&标签介绍 EL表达式&EL的内置对象 2.JSP技术入门...
    WendyVIV阅读 2,116评论 1 18
  • 一、jsp介绍 jsp作用jsp全称java server pages(java服务器页面),本质是一个servl...
    圣贤与无赖阅读 1,238评论 0 14
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,727评论 0 38