java jsp eq_10分钟带你了解jsp和jstl

一、JSP介绍

JSP:Java Server Page , Java Web 服务器端的动态资源。

它相比 html 而言,html 只能为用户提供静态数据,而 Jsp 技术允许在页 面中嵌套 java 代码,为用户提供动态数据。

相比 servlet 而言,servlet 很难对数据进行排版,而 jsp 除了可以用 java 代码产生动态数 据的同时,也很容易对数据进行排版。

在长期的软件实践中,人们逐渐把 servlet 作为 web 应用 中的控制器组件来使用, 而把 JSP 技术作为数据显示模板来使用。

其实 Jsp 就是一个 Servlet,当我们第一次访问 Jsp 的时候,Jsp 引擎都会 将这个 Jsp 翻译 成一个 Servlet,这个文件存放在 Tomcat 中的 work 目录中。

二、基础语法

1、注释:显式注释

客户端可以看到的注释

1)、继承HTML风格的注释 第三方隐式注释

客户端无法看到的注释

2)、JSP自己的注释

3)、继承Java风格注释 // 单行注释 /*多行注释*/

2、Scriptlet

Scriptlet即为脚本小程序,所有嵌入在 HTML 代码中的 Java 程序都必须使用 Scriptlet 标记出来.

共有三种Scriptlet代码:

1)、: java脚本段,生成的代码在servlet的service方法体中,变量是局部变量 --%> 2)、: 声明全局变量、方法、类等,生成的代码在servlet类体中 --%> 3)、: 表达式,输出表达式,可以输出变量名、字面量 生成的代码在servlet的service方法体中

//相当于out.print(); 注意:如果有多个,最终编译会被拼到一起

3、JSP的指令标签

JSP 的指令标签用来控制整个 jsp 的行为,就当前 JSP 页面的某些方面对 JSP 转换器作出指示。

1)、page指令

属性:

language:支持的语言,目前只有java

contentType:响应类型及编码格式

pageEncoding:字符编码

import:导包,只有该属性可以同时设置多次

errorPage:当页面报错时要跳转的页面,一般与isErrorPage属性一起使用,且跳转的页面的isErrorPage属性设置为true

isErrorPage:是否是处理错误的页面,默认是false。一般与errorPage属性一起使用

注:页面的编码以charset的值为准;若charset未设置,则以pageEncoding为准;若两者都未设置,则使用默认编码ISO-8859-1

2)、include静态包含

格式: 相对路径

file属性支持表达式去取值

特点:

只会生成一个源码文件,相当于直接将内容拷贝进来,所以不能有同名变量。

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

3)、include动态包含语法:

page属性支持表达式去取值特点:

生成多个源码文件,相当于方法的调用,可以有同名变量。

耦合度低,比较灵活,效率高。

动态包含可以包含多次

注意:

a、双标签之间不能有任何内容(除非有参数)

Expecting "jsp:param" standard action with "name" and "value" attributes

b、动态包含可以传递参数

获取参数使用:request.getParameter(name)

value属性支持表达式,name属性不支持

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

//right1.jsp

right1

4、九大内置对象

1)、 四大域对象pageContext:

JSP的页面容器

只在一个页面中保存属性,跳转之后无效request:

HttpServletRequest 类型的对象,代表了客户端的请求信息

只在一次请求中保存,服务器跳转后依然有效session

由服务器自动创建的与用户请求相关的对象

在一次会话范围中,无论何种跳转都可以使用,但是新开浏览器无法使用

session 对象内部使用 Map 类来保存数据,即“key/value”application

表示所有用户的共享信息

application 对象可将信息保存在服务器中,因此生命周期为一次服务器关闭前注意:

四种属性范围都有的操作方法:

setAttribute(String name, Object o)

getAttribute(String name, Object o)

removeAttribute(String name, Object o)

2)、 两个输出对象out

out 对象用于在 Web 浏览器内输出信息,并且管理应用服务器上的输出缓冲区

待数据输出完毕后,要及时关闭输出流

response

代表的是对客户端的响应

作用域为只在 JSP 页面内有效

3)、 配置对象config

config 对象的主要作用是取得服务器的配置信息

通过 pageConext 对象 的 getServletConfig() 方法可以获取一个 config 对象

4)、当前页面对象page

page 对象代表 JSP 本身,只有在 JSP 页面内才是合法的。 page 隐含对 象本质上包含当前 Servlet 接口引用的变量,类似于 Java 编程中的 this 指针

设置属性的方法:setAttribute(String name, Object value, int scope)

在 PageContext 类中存在四个表示属性范围的常量,可以直接通过这些常量指定 scope: pageContext.PAGE_SCOPE pageContext.REQUEST_SCOPE pageContext.SESSION_SCOPE pageContext.APPLICATION_SCOPE 在其它页面取值时,需要指定对应的作用域,或者通过 EL 表达式

5)、异常对象exception

exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的 JSP 页面中使用该对象将无法编译 JSP 文件

三、EL表达式

1、语法和使用语法:

${key } key代表的是存在域对象中的键取值范围:

从小范围到大范围取,取到为止,若未取到,则一直向大返回查找;若四个范围都未获取到,返回空字符串。获取指定范围的值:

pageScope、requestScope、sessionScope、applicationScope注意

el表达式一般操作的是域对象,无法操作变量

pageContext, request, session, application;范围依次是,本页面,一次请求, 一次会话,整个应用程序。

而 EL 默认的查找方式为 从小到大查找,找到即可。当域对象全 找完了还未找到则返回空字符串""。

2、EL操作对象

获取对象中的属性:${对象.属性名}

注:属性必须提供get和set方法

3、EL运算

使用 EL 表达式可以用来判断集合中是否有元素${empty list}

1)、List遍历:${list[1]}

获取集合长度${userList.size()}

list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); request.setAttribute("list", list); %> ${empty list}
${list[1] }

2)、访问map:${map["key"]}或${map.key}

${empty map} ${map.aaa }
${map["bbb"]}
${map["ccc-a"]}

3)、做+、-、*、/(也可以使用 div 来表示)、%、== eq

注意:String 也使用==比较

${4 div 2 }

${a==b }

JSTL

一、简介

Java Server Pages Standard Tag Libray(JSTL):JSP 标准标签库,是一个定制标签 类库的集合,用于解决一些常见的问题,例如迭代一个映射或者集合、条件测试、 XML 处理,甚至数据库和访问数据库操作等。

二、使用

1、引入标签库的jar包(每个项目拷贝一次)

jstl.jar和standard.jar

2、在jsp页面通过taglib指令导入指定的类库(每个jsp页面需要单独引用)

前缀可以自定义,程序员习惯设置为指定的前缀名 core核心库:c fmt格式化标签库:fmt

注:jstl标签操作的一般都是域对象

三、标签

1、条件标签

1)、if标签

格式: 无主体内容: 有主体内容: 主体内容 常用属性: test:判断的条件,返回true或false,操作的是域对象的值;必须要设置的属性 var:限域变量名,存在域对象中的变量名,可以通过el表达式获取到该变量名对应的值 scope:限域变量名的域范围,四个范围 page|request|session|application

注:if标签没有对应else,所以如果需要做else判断,需要设置两个完全相反的if条件判断

2)、choose、when和otherwise标签

格式: 满足条件会执行的内容 满足条件会执行的内容 ... 当所有的when条件不成立时,才会执行的内容

注意:

1、choose标签中只能包含when和otherwise标签,而when和otherwise标签中可以嵌套其他标签

报错:Illegal child tag in "c:choose" tag

2、choose和otherwise标签没有属性,而when标签必须设置test属性

3、choose标签中至少有一个when标签,可以没有otherwise标签

4、when标签必须设置在otherwise标签之前

5、otherwise标签只有在所有的when标签都不成立的条件下,才会执行

2、迭代标签:forEach标签

格式: 1)、遍历内容多次,相当于java中 for(int i = 0; i < length; i++) {} ${限域变量名} 2)、迭代集合,相当于java中的 for(String str : strings) {} ${限域变量名}

遍历内容多次

${i }*${j }=${i*j }

遍历集合

${item }

3、格式化动作指令

1) 、formatNumber 标签

格式: 无主体内容: 有主体内容: 要被格式化的值 type属性的默认值是number 注:如果设置了var属性,格式化后的结果会被限域变量名所接收;若未设置var属性,则格式化的结果会直接显示。

2)、formatDate标签

常用属性: value:取值的是日期型 type:格式的类型 date日期格式 默认值 time时间格式 both日期+时间格式 dateStyle:日期格式的具体格式 Long、short、Full等 timeStyle:时间格式的具体格式Long、short、Full等 pattern:具体的格式化格式 y M d H m s 注:如果设置了var属性,格式化后的结果会被限域变量名所接收;若未设置var属性,则格式化的结果会直接显示。

3)、parseNumber标签

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

4)、parseDate标签

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值