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>标签用于实现请求重定向
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>标签用于实现请求重定向
相关文章推荐
- javaweb-06-jsp九大隐式对象-out对象
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之06.JDBC PreparedStatement
- The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
- [JavaWeb基础] 004.用JSP + SERVLET 进行简单的增加删除修改
- 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
- java web开发(七)JSP
- JavaWeb基础 jsp+servlet分工合作的简单示例
- JavaWeb基础——Jsp
- 10011---JavaWeb基础---JSP概述
- Java Web-w2:JSP和SERVLET区别
- JavaWeb-JSP脚本中的9个内置对象
- JavaWeb从0开始学(一)-----第一个Web应用程序与JSP工作原理
- Java for the web with Servlets, JSP and EJB
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之17.Session
- 【Java.Web】JSP —— 语法基础 —— 其他
- JavaWeb中JSP技术
- 深入分析JavaWeb Item14 -- jsp九大内置对象
- http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed wit
- 精通Java Web整合开发(JSP+AJAX+Struts+Hibernate)(第2版)pdf
- 【Java.Web】JSP —— 标签库taglib —— 第三方标签库 —— JSTL