06_javaweb之jsp和标签库(一)

2014-11-24 07:56:25 · 作者: · 浏览: 7
一、JSP
1.jsp指令:jsp指令不直接产生任何输出,它的作用是指挥jsp翻译引擎如何解析jsp页面中的信息
<%@ 指令 属性名="值" %> 一个指令中可以有多个属性,也可以写多个指令
1).page指令:
[ language="java" ] 当前jsp使用的开发语言
[ extends="package.class" ]当前jsp翻译成servlet后要继承的类,注意此值必须是servlet的子类
[ import="{package.class | package.*},..."]导入需要使用的包
[ session="true | false"] 指定当前页面是否使用session,如果是true,翻译过来的servlet会对
session对象引用,可以直接使用session隐式对象,但是导致了一旦访问jsp就会调用request.
getSession()方法,引起空间的浪费。
[ buffer="none | 8kb | sizekb"] out隐式对象所使用的缓冲区大小
[ autoFlush="true | false"] out隐式对象是否自动刷新缓冲区,默认是true
[ isThreadSafe="true | false"]翻译过来的servlet是否实现SingThreadModel
[ errorPage="relative_url"] 如果页面出错,将要跳转到的页面,除了在jsp中使用此属性指定错误页
面外,也可以在web.xml中配置整个web应用的错误页面;如果两个都设置,优先使用jsp中的
[ isErrorPage="true | false"] 如果设置此属性为true,翻译过来的servlet中将含有Exception隐式
对象,其中封装的是上一个页面抛出的异常对象
[ pageEncoding="characterSet | ISo8859-1"]服务器翻译jsp使用的编码集,为了防止jsp乱码,应该
保证文件的保存和jsp翻译成servlet用的编码以及输出到 浏览器是浏览器打开的编码一致,此
属性可以一并完成这些设置
[ isELIgnored="true | false"] 当前页面是否使用el表达式,设置为false时表示启用el,J2EE4.0之
后默认支持,之前的版本使用el表达式,需要设置此属性为false
2).include指令:实现静态包含
<%@ include file="" %>
动态包含:每个 jsp页面各自翻译成servlet,多个servlet执行后将结果合并后输出
静态包含:多个jsp页面合并后翻译成一个servlet,然后由这个servlet进行输出,静态包含效率高
3).taglib指令:引入标签库
<%@ taglib uri="" prefix="" %>
uri:指定被引入.tld文件的名称空间
prefix:对该名称空间的一个缩写
2.九大隐式对象
在翻译过来的Servlet的service方法中会自动帮我们提前定义出来的变量,可以在jsp页面中直接使用
request、response、session、config、application、exception、out、page、pageContext
1).out:
相当于response.getWriter()获取到的输出流
2).pageContext:代表当前jsp页面的运行环境
1'.作为入口对象可以获取其他八大隐式对象
2'.是一个域对象,作为入口对象操作四大作用域中的数据
生命周期:当jsp页面访问开始时,创建此对象,当这次访问结束,此对象销毁
作用范围:整个jsp页面
作用:在当前jsp页面中共享数据
ServletContext(application域)>Session(session域)>request(request域)>pageContext(page域)
findAttribute方法:查找各个域中的属性,从最小的域开始向最大的域开始搜索,找到则返回值,
找不到则返回null
3'.提供了快捷方式:实现请求转发和请求包含
pageContext.forward("");
pageContext.include("");
3.其他知识点
1).jsp映射

3.jsp
/3.jsp


3.jsp
/jsp/*

2).四大作用域使用场景
如果一个数据只在当前jsp页面中使用,存入page域
如果一个数据,在Servlet中处理好后,请求转发到其他servlet或jsp中使用此数据,放入
request域
如果一个数据,当前使用,过段时间之后还要使用,则放入session域中
如果一个数据,当前使用,过一会儿其他人也要使用,则放入application域
二、标签:
1.jsp标签:sun提供,jsp中的原生标签,不需要导入任何标签库就可以直接使用
标签:实现请求转发
标签:实现页面包含
标签:在请求转发或包含时,带一些请求参数过去
2.el表达式:用来替代jsp页面中的jsp脚本表达式
${el表达式}
1).获取数据
获取常量:数字、字符串、布尔
获取变量:获取域中的数据
获取数组中的数据
获取集合中的数据
获取Map中的数据
获取javabean的属性
注:只能用来获取集合数组中的数据,不能用来遍历
只能用来获取数据不能用来设置数据
2).执行运算
算数运算:在执行算数运算过程中会将非数字转换为数字进行计算,如果不能转换,会抛出异常
逻辑运算
比较运算
三元表达式
empty:可以用来判断对象是否为null,或字符串是否为空字符串,或集合数据是否为空,或域总
是否没有任何属性
3).获取常用开发对象(内置对象:不需要定义直接在EL中使用)
pageContext---可以间接的获取其他八大


pageScope
requestScope
sessionScope
applicationScope 代表四个作用域,本质上是作用域中所有属性的Map


param 所有请求参数组成的Map
paramValues 所有请求参数组成的Map


header 所有请求头组成的Map
headerValues 所有请求头组成的Map


cookie 所有cookie信息组成的Map


initParam 所有web应用初始化信息组成的Map


4).调用java方法
调用的方法必须是静态的方法
操作过程:
1'.编写一个类,其中应该包含要使用el调用的静态方法
2'.编写一个tld文件,描述该方法的调用,在创建tld文件时应选用2.0版本的jsp配置,指定名称
空间uri和缩写prefix
3'.在tld文件中配置方法信息


encodeURL

cn.itheima.util.EncodeURL


java.lang.String EncodURL( java.lang.String )


4'.在jsp中使用<%@ taglib uri="" prefix="ppp"%>引入tld文件
5'.在jsp中使用${ppp:encodeURL("xxxx")}调用
3.JSTL标签库
标签用于输出一段文本内容到pageContext对象当前保存的out对象中
标签可以构造简单的if-then结构的条件表达式
标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体
中的内容