Jsp和Jstl

一.JSP注释

1、显式注释

在客户端可以看到的注释

1、继承HTML风格的注释    <!-- HTML注释 -->

2、隐式注释

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

1、JSP自己的注释    <%-- JSP注释-- % >  <%-- 这是JSP注释 --%>

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

二.scriptlet


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

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

1、java脚本段

语法:<% // java脚本段  %>

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

2、声明

语法:<%! // 声明全局变量  %>

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

3、输出

语法:<%= %>

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

三.page指令

格式:<%@page 属性="属性值" 属性="属性值"  %>

常用属性:

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动态包含

无参:

格式:

有参

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

注:

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

2、的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)

Jsp和Jstl_第1张图片
隐含对象


七.jstl

1.jstl的使用

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

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

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

3、使用标签库

2.if 标签

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

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

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

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、遍历主体内容多次

2、遍历集合、map等

常用属性:

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

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

5.formatNumber 标签

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

标签有如下属性:

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

无主体内容


常用属性:

value:要被格式化的数值

type:被格式化的类型

number数值型

percent百分比类型

currency货币类型

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

6.formatDate 标签

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





 

 

  ${date1 }

7.parseDate 标签

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





8.parseNumber 标签

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



你可能感兴趣的:(Jsp和Jstl)