您的位置:首页 > 编程语言 > Java开发

06_javaweb之jsp和标签库

2013-12-09 22:35 197 查看
一、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映射

<servlet>

<servlet-name>3.jsp</servlet-name>

<jsp-file>/3.jsp</jsp-file>

</servlet>

<servlet-mapping>

<servlet-name>3.jsp</servlet-name>

<url-pattern>/jsp/*</url-pattern>

</servlet-mapping>

2).四大作用域使用场景

如果一个数据只在当前jsp页面中使用,存入page域

如果一个数据,在Servlet中处理好后,请求转发到其他servlet或jsp中使用此数据,放入

request域

如果一个数据,当前使用,过段时间之后还要使用,则放入session域中

如果一个数据,当前使用,过一会儿其他人也要使用,则放入application域

二、标签:

1.jsp标签:sun提供,jsp中的原生标签,不需要导入任何标签库就可以直接使用

<jsp:forward>标签:实现请求转发

<jsp:include>标签:实现页面包含

<jsp:param>标签:在请求转发或包含时,带一些请求参数过去

2.el表达式:用来替代jsp页面中的jsp脚本表达式

${el表达式}

1).获取数据

获取常量:数字、字符串、布尔

获取变量:获取域中的数据

获取数组中的数据

获取集合中的数据

获取Map中的数据

获取javabean的属性

注:只能用来获取集合数组中的数据,不能用来遍历

只能用来获取数据不能用来设置数据

2).执行运算

算数运算:在执行算数运算过程中会将非数字转换为数字进行计算,如果不能转换,会抛出异常

逻辑运算

比较运算

三元表达式

empty:可以用来判断对象是否为null,或字符串是否为空字符串,或集合数据是否为空,或域总

是否没有任何属性

3).获取常用开发对象(内置对象:不需要定义直接在EL中使用)

pageContext---可以间接的获取其他八大

pageScope

requestScope

sessionScope

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

param 所有请求参数组成的Map<String,String>

paramValues 所有请求参数组成的Map<String,String[]>

header 所有请求头组成的Map<String,String>

headerValues 所有请求头组成的Map<String,String[]>

cookie 所有cookie信息组成的Map<String,Cookie>

initParam 所有web应用初始化信息组成的Map<String,String>

4).调用java方法

调用的方法必须是静态的方法

操作过程:

1'.编写一个类,其中应该包含要使用el调用的静态方法

2'.编写一个tld文件,描述该方法的调用,在创建tld文件时应选用2.0版本的jsp配置,指定名称

空间uri和缩写prefix

3'.在tld文件中配置方法信息

<function>

<!--el在调用时所使用的方法名-->

<name>encodeURL</name>

<!-- 静态方法所在的类全路径名 -->

<function-class>cn.itheima.util.EncodeURL</function-class>

<!-- 对该方法的描述:返回值类型 方法名(参数类型)-->

<function-signature>

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

</function-signature>

</function>

4'.在jsp中使用<%@ taglib uri="" prefix="ppp"%>引入tld文件

5'.在jsp中使用${ppp:encodeURL("xxxx")}调用

3.JSTL标签库

<c:out>标签用于输出一段文本内容到pageContext对象当前保存的out对象中

<c:if test="">标签可以构造简单的if-then结构的条件表达式

<c:forEach>标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体

中的内容

<c:forTokens>标签用来浏览一字符串中所有的成员,其成员是由定义符分隔

<c:set>标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或

JavaBean类型的属性对象的属性。

<c:remove>标签用于删除各种Web域中的属性

<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:

<c:catch [var="varName"]>nested actions</c:catch>

<c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使

用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条

件判断结构。

<c:param>标签在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以

嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数。

<c:import> 标签,实现include操作

<c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以

参数形式附加在URL地址后面

<c:redirect>标签用于实现请求重定向
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: