jsp浸染
jsp全称java server pages(java做事器页面),实质是一个servlet.它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(.jsp).
jsp浸染:将内容的天生和显示进行分离
用JSP技能,Web页面开拓职员可以利用HTML或者XML标识来设计和格式化终极页面,并利用JSP标识或者小脚本来天生页面上的动态内容
jsp事理
jsp脚本
有三个基本的脚本元素,浸染是使JAVA代码可以直接插入到HTML代码中
声明标签
格式:<%! int a = 1; %>
浸染:声明的变量在类的成员位置上
脚本片断
格式:<% int a = 1; out.println(a); %>
浸染:内容会天生在_jspService()方法中
脚本表达式
浸染:它就相称于是out.println()将内容直接输出到页面中,把稳表达式不能以分号结尾
jsp注释
在jsp页面中可以利用三种注释
可以利用html中注释
<!-- html的注释 -->
可以对jsp脚本内容利用java注释
//单行注释 / 多行注释 / /文档注释/
可以利用jsp注释(推举)
<%-- jsp注释 --%>
2. jsp指令大略先容
jsp指令先容
当我们创建一个jsp页面时,在页面第一行有一段代码如下:
<%@ page language=\公众java\公众 import=\"大众java.util.\"大众 pageEncoding=\公众utf-8\"大众%>
这个便是指令,对付指令它有以下浸染
a. 用于指示JSP实行某些步骤
b. 用于指示JSP表现特定行为
jsp指令格式
格式:
<%@指令名 attr1=”” attr2=””%>
把稳:
个中attr1和attr2表示指令中的属性,常日我们将JSP指令写在JSP文件的的最上方,但是这不是必须的。
jsp指令分类
JSP中有三大指令,分别因此下三个:
page
include
taglib
个中这三个指令中,page是最繁芜的,我们会详细讲解(导入类,编码的设置等等);include指令表示静态包含,我们之前学习的要求包含属于动态包含;taglib指令是用来导入标签库,后面会学习一些标签库,在这里只做大略先容。
3. jsp指令-page
重点属性:
import
浸染:在jsp页面上导包操作.
这个属性可以有多个.
pageEncoding
浸染:指定当前jsp页面的编码。这个编码是给做事器看的,做事器须要知道当前页面的编码,否则做事器无法精确的把jsp翻译成Java文件。
contentType
在jsp文件中有如下指令:
<%@page language=\"大众java\"大众 import=\"大众java.util.\"大众 contentType=\"大众text/html; charset=utf-8\公众%>
个中contentType属性的浸染等同于response.setContentType(“text/html;charset=utf-8”)的浸染。response的setContentType()方法这里我们就不再多说,当我们在jsp文件中供应了contentType属性,那么jsp对应的java文件中就会存在response.setContentType(“text/html;charset=utf-8”)这句代码。contentType属性的默认值是“text/html; charset=ISO-8859-1”,但是我们知道iso-8859-1并不支持中文,以是我们须要将charset的值修正为“utf-8“。
pageEncoding与contentType的差异与联系
pageEncoding与contentType都是page指令的属性,它们都是用来设置编码,有如下联系:
如果这两个属性只供应了个中一个,那么没有供应的那个属性的编码值便是供应的这个属性的编码值,例如:在jsp页面中设置了contentType=”text/html;charset=utf-8”,那么没有设置的pageEncoding的值就为utf-8,反之亦然;
如果两个属性都没有供应,那么两者的默认编码便是ISO-8859-1。
根据对这两个属性的讲解,它们有如下差异:
pageEncoding是设置当前页面的编码,该编码是给做事器看的,可以让做事器精确的将jsp文件翻译成Java文件;
contentType有两个浸染:一是设置相应字符流的编码,二是设置Content-Type相应头,即关照浏览器利用什么编码办法解码相应信息。
理解属性:
language
代表在jsp脚本中可以写的措辞, 只有一个值 java
extends
它用于设置jsp翻译后的java类的父类. 哀求必须是HttpServlet或其子类.
session
面上是否禁用session。可取值为true/false 如果值为false,在页面上不能利用session。
isELIgnored
用是否忽略el表达式.可取值为true/false 如果值为true,那么页面上的el表达式就不会被解析.
autoFlush与buffer
用于设置jsp中out流的默认缓冲区大小以及是否自动刷新.
errorPage
设置缺点页面,当jsp中如果涌现了非常,会自动跳转到指定的缺点页面
isErrorPage
指示当前页面是一个缺点页面,这时就可以利用一个内置工具 exception,
通过这个内置工具就可以获取非常信息.
4. jsp指令-include和taglib
include
include指令浸染
include指令的浸染是在JSP页面中静态包含一个文件,同时由JSP解析包含的文件内容
include指令格式
<%@ include file=“filename” %>
include指令功能剖析
包含的是目标文件的源码;包含过来,一起翻译
main.jsp中的代码
<%
String s = “abc”;
%>
<%include file=“part.jsp” %>
part.jsp中的代码
<%=s %> 没有定义变量s
只管part.jsp本身会有缺点但是运行main.jsp就可以精确引入part.jsp
taglib
taglib指令浸染
浸染:是用于导入标签库.
taglib指令格式
<%@taglib prefix=\公众\公众 uri=\公众\"大众 %>
uri 标签文件的URI地址
prefix 标签组的命名空间前缀
5. jsp内置工具
jsp九个内置工具及其类型
内置工具类型requestHttpServletRequestresponseHttpServletResponsesessionHttpSessionapplicationServletContextconfigServletConfigpagethis(Servlet)pageContextPageContextexceptionThrowableoutJspWriter
jsp九个内置工具的创建过程
我们可以创建一个demo1.jsp页面,启动做事器,在浏览器中访问 demo1.jsp页面,在tomcat下的work目录中查找到它翻译后的demo1_jsp.java文件,在java文件中我们可以查找到每一个内置工具的创建。
request,response这两个工具是_jspService的参数
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
java.lang.Throwable exception = org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);
if (exception != null) {
response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
把稳:exception工具只有在jsp页面上设置了page指令的isErrorPage才会有exception工具。
jsp中的四个域工具
jsp有四个域工具,分别是:
application:域范围是全体运用;
session:域范围是全体会话,把稳一个会话中只有一个用户,如果要统计站点的访问次数,利用的域是ServletContext,由于这个时候统计的是多个用户,而非一个用户;
request:域范围是全体要求链;
pageContext:域范围是一个jsp页面,在一个页面中存数据再取数据没有任何意义,以是这里所说的域指的是在当前jsp页面和当前jsp页面中利用的标签之间共享数据。
6. jsp内置工具-pageContext的浸染
获取其他内置工具
可以通过pageContext工具获取jsp中其他的内置工具. PageContext类中定义了如下八个方法:getPage()、getRequest()、getResponse()、getServletConfig()、getServletContext()、getException()、getSession()等方法,个中getOut()放是在其父类中定义的,有了这些方法,pageContext工具自然能够获取其他八个内置工具了。
操作四个域工具
pageContext也是一个域工具,以是他有以下方法:
void setAttribute(String name,Object value)
Object getAttribute(String name);
Void removeAttribute(String name);
我们还可以利用以下方法操作其他域中的工具:
Object getAttribute(String name, int scope):
该方法的第一个参数是域属性的名称,第二个参数指定是从那个域中取出域属性;
在PageContext中已经定义了如下几个静态常量作为scope的可选值:
int APPLICATION_SCOPE:表示从application域中获取数据;
int PAGE_SCOPE:表示从pageContext域中获取数据;
int REQUEST_SCOPE:表示从request域中获取数据;
int SESSION_SCOPE:表示从session域中获取数据。
void setAttribute(String name,Object value,int scope):
该方法的第一个参数指的是域属性的名称,第二参数指的是域属性的值,第三个参数指定域属性保存的域,scope的取值同上;
void removeAttribute(String name,int scope):
该方法的第一个参数指的是域属性的名称,第二个参数指的是将指定域属性从哪个域中移出,scope的取值同上;
便捷查询域中数据
PageContext类的父类中定义了如下方法:
Object findAttribute(String name):该方法是从jsp的四个域pageContext、request、session、application依次查找指定名称的域属性,如果找到就停滞,这解释如果这四个域中存在同名的属性,那么返回的数据是从page范围中获取的。即表示谁的域范围越小,谁的优先级越高。
7. jsp动作标签
jsp标签先容
JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中供应业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以掩护。
常用的jsp标签
jsp:forward
<jsp:forward>标签是用来做要求转发,它与RequestDispatcher接口的forward()方法一样,唯一不同的是它是在jsp页面中利用。
jsp:include
<jsp:include>标签的浸染利用来包含其他jsp页面,之前学习的include指令属于静态包含,而include动作标签是动态包含,它和RequestDispatcher接口的include()方法一样,是运行级别的包含
jsp:param
<jsp:param>标签作为<jsp:forward>标签和<jsp:include>标签的子标签,用来给转发或包含的页面通报数据。
静态包含与动态包含的差异
include标签与inclue指令差异:
1.include指令是静态包含,包含文件中包含了被包含文件的内容.
include标签是动态包含,它包含的是被包含文件实行后的结果.
2.include指令不能带参数
include标签是可以带参数的
二.EL1. EL表达式先容
EL表达式的先容
EL是Expression Language的缩写,它是jsp内置的表达式措辞,从jsp2.0开始,就不让再利用java脚本,而是利用el表达式或动态标签来代替java脚本。EL表达式的格式如下:
${表达式}
EL表达式代替的是java脚本中的<%= …%>,也便是说EL表达式也是向浏览器端输出数据。例如${1+2}会向浏览器端输出3。
EL表达式的浸染
为了使JSP写起来更加大略,更加安全,可以通过EL表达式来更换我们jsp页面上的脚本
EL紧张浸染:
u获取数据:
EL表达式紧张用于更换JSP页面中的脚本表达式,以从各种类型的web域 中检索java工具、获取数据。(某个web域 中的工具,访问javabean的属性、访问list凑集、访问map凑集、访问数组)
u实行运算:
利用EL表达式可以在JSP页面中实行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些大略的逻辑运算。${user==null}
u获取web开拓常用工具
EL 表达式定义了一些隐式工具,利用这些隐式工具,web开拓职员可以很轻松得到对web常用工具的引用,从而得到这些工具中的数据。
u调用Java方法
EL表达式许可用户开拓自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
EL表达式利用时把稳事变
EL表达式是JSP 2.0(JavaEE1.4)规范中的一门技能 。因此,若想精确解析EL表达式,需利用支持Servlet2.4/JSP2.0技能的WEB做事器。
把稳:有些Tomcat做事器如不能利用EL表达式
(1)升级成tomcat6
(2)在JSP中加入<%@ page isELIgnored=\"大众false\"大众 %>
以下为jsp,servlet,javaee,jdk版本之间的对应关系
jspjavaeeservlettomcatjdkJsp2.0javaee1.4servlet2.4tomcat5.xjdk1.4Jsp.2.0/2.1javaee5.0servlet2.5tomcat6.0jdk1.5Jsp2.1javaee6.0servlet3.0tomcat7.xjdk1.62. EL表达式获取数据
EL表达式之域查找
1.pageContext--------------------${pageScope.xxx}
2.request--------------------------${requestScope.xxx}
3.session--------------------------${sessionScope.xxx}
4.application---------------------${applicationScope.xxx}
通过el获取时,如果没有查找到,会返回\"大众\公众.除了上面的获取办法外还有一种,例如
${requestScope[“xxx”]}
关于.与[]差异
[]与.在利用办法上是一样的.但是如果名称中包含了\公众.\"大众等分外字符,就必须利用[]来获取. 例如
request.setAttribute(\"大众login.message\公众, \"大众登录失落败\"大众);
${requestScope.login.message}<br>缺点的
${requestScope[\"大众login.message\"大众] }精确的
如果没有写范围,会默认从page,request,session.application依次查找
EL表达式获取繁芜数据
Ø获取数组中数据
例如:${数组名称[索引] }
Ø获取List中数据
例如:${凑集名称[索引]}
获取Map中数据
例如:${凑集名称.key名称}
EL表达式之javabean导航
如果在域中保存的是javaBean工具,那么也可以利用EL表达式来访问javaBean的属性,由于EL表达式只做读操作,以是javaBean一定要为属性供应get方法,而对set方法没有哀求。利用EL表达式获取javaBean属性便是javaBean导航。
3. EL表达式实行运算
常见的运算符
empty我们在开拓中检讨工具是否为null或“空”或判断容器size是否为0
把稳事变:
EL表达式支持三元运算符
EL表达式不可以嵌套
${a+${b}}这种是不许可的。
EL中的加号问题
EL表达式中加号两边必须是数字或者字符串形式的数字
4. EL表达式内置工具
EL表达式的11个内置工具先容
EL表达式的11个内置工具。11个内置工具如下所示:
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
headerValues
initParam
cookie
pageContext
个中,pageScope,requestScope,sessionScope,applicationScope是域干系的内置工具,这里我们就不再多说。这11个内置工具中,有10个内置工具的类型是Map类型,只有pageContext的类型不是Map类型,它的类型是PageContext。
关于pageContext内置工具的先容
EL表达式的11个内置工具中,有10个内置工具的类型是Map类型,只有pageContext的类型是PageContext。它的利用类似于我们jsp的内置工具pageContext,. 通过pageContext工具可以获取其他内置工具的任意的属性值。
常用操作:${pageContext.request.contextPath}
关于要求参数干系内置工具的先容
要求参数干系的内置工具是:
param:该内置工具的类型是Map<String,String>,可以用来获取值为单值的要求参数,个中key指的是要求参数的名称,value指的是要求参数的值,利用param获取要求参数与request.getParameter()方法一样。
paramValues:该内置工具的类型是Map<String,String[]>,可以用来获取值为多值的要求参数,个中key是参数名,value是多个参数值组成的字符串数组。
把稳,在利用EL获取参数时,如果参数不存在,返回的是空字符串,而不是null。这一点与利用request.getParameter()方法是不同的。
关于要求头干系内置工具的先容
与要求头干系的内置工具是:
header:该内置工具的类型是Map<String,String>,用来获取值为单值的要求头信息,个中key代表的是要求头名称,value代表的是要求头的值;
headerValues:该内置工具的类型是Map<String,String[]>,用来获取值为多值的要求头信息,key代表的是要求头名称,value代表的是要求头的多个值。
关于全局初始化参数的内置工具的先容
我们再学习Servlet时,讲过在web.xml文件中配置全局初始化参数,并且全局初始化参数可以利用ServletContext工具获取,现在在EL表达式中内置了一个与初始化参数干系的工具:
initParam:该内置工具的类型是Map<String,String>,用来获取web.xml文件中<context-param>标签的参数值,个中key代表的是参数名,value代表的是参数值。
关于cookie干系内置工具的先容
EL表达式也内置一个名为cookie的工具,该内置工具与cookie干系,如下:
cookie:该内置工具的类型为Map<String,Cookie>,个中key是Cookie的名字,value是Cookie工具本身。
5. EL函数利用
EL函数库先容
EL函数库是由第三方对EL的扩展,我们现在学习的EL函数库是有JSTL供应的,JSTL我们会在后面的课程中详解。EL函数库便是定义了一些有返回值的静态方法,然后通过EL表达式来调用它们
在jsp页面中利用taglib指令导入EL函数库,就可以在页面中利用函数库中的方法。其余,导入的函数库可以利用的条件是,我们的项目中有干系的jar包
EL函数库利用
要利用EL函数库,首先要在jsp文件的上面利用taglib指令导入函数库:
l <%@ taglib prefix=”fn” uri=”http://java.sun.com/jsp/jstl/functions”%>
个中,uri的值并不是一个网络路径,只是在定义函数库时,拟定的一个位置。
下面我们来理解EL函数库中的干系方法,详细如下:
String toUpperCase(String input):把字符串参数转换成大写,并返回;
String toLowerCase(String input):把字符串参数转换成小写,并返回;
int indexOf(String input, String substring):返回input中substring涌现的索引位置;
boolean contains(String input, String substring):查看input中是否包含substring,包 含返回true,否则返回false;
boolean containsIgnoreCase(String input, String substring):在忽略大小写的情形下,查看input中是否包含substring,包含返回true,否则返回false;
boolean startsWith(String input, String substring):判断input是否因此substring为前缀,如果是就返回true,否则就返回false;
boolean endsWith(String input, String substring):判断input是否因此substring为后缀,如果是就返回true,否则就返回false;
String substring(String input, int beginIndex, int endIndex):以beginIndex为开始值,endIndex为结束值,在input上截取子串;
String substringAfter(String input, String substring):获取input中,substring所在位置后面的字符串;
substringBefore(String input, String substring):获取input中,substring所在位置前面的字符串;
String escapeXml(String input):把input中“<”、“>“、”&“、”'“、“\公众”进行转义;
String trim(String input):去除input中的前后空格;
String replace(String input, String substringBefore, String substringAfter):将input中的substringBefore更换成substringAfter;
String[] split(String input, String delimiters):以delimiters为标识分割input,返回一个字符串数组;
int length(Object obj):可以获取字符串、数组、各种凑集的长度!
String join(String array[], String separator):将array数组中的元素以separator连接起来,返回一个字符串。
示例代码
<!-- 导入函数库 -->
<%@ page language=\"大众java\"大众 contentType=\公众text/html; charset=UTF-8\"大众
pageEncoding=\公众UTF-8\公众 import=\公众java.util.\"大众%>
<%@ taglib prefix=\公众fn\"大众 uri=\"大众http://java.sun.com/jsp/jstl/functions\"大众 %>
<!-- 以下为body内容,头部自行添加 -->
<body>
<%
String[] strs = {\公众a\公众, \"大众b\"大众,\"大众c\"大众};//定义一个字符数组
List list = new ArrayList();//定义一个list凑集
list.add(\"大众a\"大众);//向凑集中添加一个字符
pageContext.setAttribute(\公众arr\公众, strs);//将字符数据以arr的名字保存在page域中
pageContext.setAttribute(\公众list\"大众, list);//将list凑集以list的名字保存在page域中
%>
${fn:length(arr) }<br/><!--返回arr的长度-->
${fn:length(list) }<br/><!--返回list的长度-->
${fn:toLowerCase(\公众Hello\"大众) }<br/> <!-- 将Hello变成小写 -->
${fn:toUpperCase(\"大众Hello\"大众) }<br/> <!-- 将Hello变成大写 -->
${fn:contains(\"大众abc\公众, \"大众a\公众)}<br/><!-- 判断abc中是否包含a -->
${fn:containsIgnoreCase(\"大众abc\公众, \"大众Ab\"大众)}<br/><!-- 在忽略大小写的情形下,判断abc中是否包含Ab -->
${fn:contains(arr, \公众a\公众)}<br/><!-- 判断arr数组中是否包含a -->
${fn:containsIgnoreCase(list, \"大众A\"大众)}<br/><!-- 在忽略大小写的情形下,判断list凑集中是否包含A -->
${fn:endsWith(\公众Hello.java\"大众, \"大众.java\公众)}<br/><!-- 判断Hello.java是否以.java结束 -->
${fn:startsWith(\公众Hello.java\"大众, \"大众Hell\"大众)}<br/><!-- 判断Hello.java是否以Hell开始 -->
${fn:indexOf(\"大众Hello-World\"大众, \"大众-\"大众)}<br/><!-- 返回“-”在Hello-World中涌现的位置 -->
${fn:join(arr, \"大众-\公众)}<br/><!-- 将arr数组中的元素以“-”连接,并返回 -->
${fn:replace(\"大众Hello-World\"大众, \"大众-\"大众, \"大众+\"大众)}<br/><!-- 将Hello-World中的“-”更换成“+” -->
${fn:join(fn:split(\"大众a;b;c;\公众, \"大众;\公众), \"大众-\公众)}<br/><!--终极是将数组的元素以“-”连接,并返回 -->
${fn:substring(\公众0123456789\"大众, 6, 9)}<br/><!-- 返回0123456789中索引值为6到索引值为9之间的元素 -->
${fn:substring(\"大众0123456789\公众, 5, -1)}<br/><!-- 返回0123456789中索引值为6到结束的元素 -->
${fn:substringAfter(\"大众Hello-World\"大众, \公众-\公众)}<br/><!-- 返回Hello-World中“-”后面的字符串 -->
${fn:substringBefore(\"大众Hello-World\公众, \"大众-\"大众)}<br/><!-- 返回Hello-World中“-”前面的字符串 -->
${fn:trim(\"大众 a b c \"大众)}<br/><!-- 去掉 a b c 前后的空格 -->
${fn:escapeXml(\公众<html></html>\"大众)}<br/> <!-- 将“<html></html>”中的“<”,“>”转义,即原样输出 -->
</body>
三.JSTL1. JSTL标签先容
jstl标签库先容
JSTL(JSP Standard Tag Library,jsp标准标签库)是Apache对EL表达式的扩展,也便是说JSTL依赖EL表达式。JSTL是标签措辞,利用起来非常方便。但是它不是jsp内置的标签,以是用的时候须要我们自己导包,以及指定标签库。
如果你利用Myeclipse开拓javaweb,那么把项目发布到Tomcat时,你会创造,Myeclipse会在当前工程的lib目录下存放jstl的jar包,如果没有利用Myeclipse开拓,那么就须要自己导入这个jstl的jar包:jstl-1.2.jar。
jstl标签库功能先容
Jstl标签库一共包含了四大标签库:
lcore:核心标签库,这是我们学习的重点;
lfmt:格式化标签库,用的很少;
lsql:数据库标签库,这个标签库已经由时,本文档不再对其进行先容;
lxml:xml标签库,这个标签库已经由时,本文档不再对其进行先容。
其余Jstl标签库中还包含了jstl函数。
如何利用jstl标签库
除了jsp动作标签外,利用其他第三方的标签都须要做以下两件事:
导入jar包;
在利用标签的jsp页面中利用taglib指令导入标签库。
例如:
在jsp页面导入jstl的核心标签库:
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”%>
个中:
l prefix=\"大众c\"大众:指定标签库的前缀,这个前缀可以赋任意的值,但大家都会在利用core标签库时指定前缀为c;
l uri=\公众http://java.sun.com/jsp/jstl/core\公众:指定标签库的uri,它不一定是真实存在的网址,但它可以让JSP找到标签库的描述文件。
jstl核心标签库标签先容
JSTL core标签库中 12个标签
1、c:out 输出内容到浏览器端
2、c:set 设置值到四种数据范围,设置四个范围中java工具的一个属性值
3、c:remove 用来删除四个数据范围的数据
4、c:catch 捕获程序非常
5、c:if 取代页面中if条件语句,记住没有c:else
<c:if test=\"大众${m>5}\"大众 > </c:if>
6、c:choose c:when c:otherwise 一起利用 ,取代if elseif else 构造 、switch-case 构造
7、c:forEach 取代页面中for循环
8、c:forTokens 切割字符串
9、c:import 效果和include类似
10、c:url 完成URL重写 (禁用cookie的session追踪 ) ---- 结合c:param完成 中文URL编码
11、c:redirect 完成要求重定向
12、c:param 设置参数 一样平常和c:url,c:redirect或者c:import一起利用.
重点: c:if c:foreach c:set
2. JSTL核心标签
c:set
格式1:设置域中属性的值
<c:set var=’域中属性名称’ value=’属性的值’ [scope=’page(默认)|request|session|application’]></c:set>
例如:
<c:set var=\公众password\"大众 value=\公众tom\"大众 scope=\"大众request\"大众></c:set>
格式2:设置域中工具属性的值
<c:set property=’工具的属性’ value=’属性的值’ target=’域中工具’></c:set>
例如:
<c:set property=\公众id\"大众 value=\公众10\"大众 target=\公众${user }\公众></c:set>
c:if
浸染:页面上的逻辑判断
格式:
<c:if test=\"大众判断的内容(一样平常是el表达式)\"大众 var=\"大众给前面表达式的结果起个名称\公众 [scope=\公众page|request|session|application\"大众] />
把稳:
scope 用来表达式结果存放的域
若指定了标签的scope属性,则必须指定var属性
例如:
<c:if test=\"大众${3>4 }\公众 var=\"大众flag\"大众>
三大于四
</c:if>
<c:if test=\公众${3<=4}\"大众 var='flag1'>
三不大于四
</c:if>
c:choose与c:when c:otherwise
浸染:用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起利用。利用<c:choose>,<c:when>和<c:otherwise>三个标签,可以布局类似 “if-else if-else” 的繁芜条件判断构造。
格式:
<c:choose>
<c:when test=”el表达式”>
语句
</c:when>
<c:otherwise>
语句
</c:otherwise>
</c:choose>
例如:
<c:set var=\公众day\"大众 value=\"大众17\"大众/>
<c:choose>
<c:when test=\公众${day ==1 }\"大众>
周1
</c:when>
<c:when test=\"大众${day ==2 }\"大众>
周2
</c:when>
<c:when test=\"大众${day ==3 }\"大众>
周3
</c:when>
<c:when test=\"大众${day ==4 }\公众>
周4
</c:when>
<c:when test=\公众${day ==5 }\"大众>
周5
</c:when>
<c:when test=\"大众${day ==6 }\公众>
周6
</c:when>
<c:when test=\公众${day ==7 }\公众>
周7
</c:when>
<c:otherwise>
你估计来自火星
</c:otherwise>
</c:choose>
c:forEach
begin属性
设置循环变量从几开始
end属性
设置循环变量到几结束;
step属性
设置循环变量的步长
var属性
定义一个变量,用于吸收循环或把数组或凑集中遍历的每一个元素赋值给var指定的变量
varStatus属性
varStatus属性便是用来记录循环状态的,它可以创建一个循环变量vs,该循环变量有如下属性:
lcount:用来记录循环元素的个数;
lindex:用来记录所循环元素的下标;
lfirst:判断当前循环的元素是否是第一个元素;
llast:判断当前循环的元素是否是末了一个元素;
lcurrent:代表当前循环的元素。
items:属性
指定要循环的变量,可以是一个数组也可以是一个凑集,默认是支持EL表达式
c:out
格式:
<c:out value=’要输出的值’ default=’默认值’ escapeXml=’是否不解析为xml’></c:out>
例如:
在域中有 username=”<a href='#'>jack</a>”
<c:out value=\"大众${username }\公众 default=\"大众ok\"大众 escapeXml=\"大众false\"大众 ></c:out>
显示的效果为 超链接的jack
c:remove
浸染:移除域中的属性
格式:
<c:remove var=’属性的名称’ [scope=’page|request|session|application’]></c:remove>
例如:
<c:set var=\"大众password\"大众 value=\公众123\公众 scope='request'></c:set>
<c:remove var=\"大众password\公众 scope=’request’></c:remove>
把稳:
scope不写的时候,会把所有域中的同名的属性删除掉.
c:catch
浸染:
用于捕获嵌套在标签体中的内容抛出的非常
格式:
<c:catch var='非常工具名称'>
...
</c:catch>
例如:
<c:catch var=\公众e\"大众>
<%
int i=0;
int j=1;
double k=j/i;
%>
</c:catch>
<c:out value=\"大众${e }\"大众></c:out> 将非常输出
<c:out value=\"大众${e.message }\"大众></c:out> 将非常信息输出
c:forTokens
浸染:用指定的分隔符切分指定内容
格式:
<c:forTokens items=’指定的内容或者el表达式’ delims=’分隔符[分隔符]’ var=’给分割出来的工具起个名字’>
</c:forTokens>
例如:
<c:set var=\公众arr\"大众 value=\"大众12,23,34|45,56\"大众></c:set>
<c:forTokens items=\"大众${arr }\"大众 delims=\"大众|,\"大众 var='a'>
${a }-
</c:forTokens>
c:import
浸染:用于在JSP页面中导入一个URL地址指向的资源内容,其浸染有点类似<jsp:include>这个JSP标准标签
最基本的利用
<c:import url=\"大众if.jsp\"大众></c:import>
c:url
浸染:用于在JSP页面中布局一个URL地址
格式:
<c:url value=’路径’ [context=’工程名’] [var=’给当前路径起个名称’] [scope=’page|request|session|application’]></c:url>
例如:
<c:url value=\"大众/jstl/if.jsp\"大众 var=\"大众ifurl\公众 context=\公众/day11\"大众 scope=\"大众request\"大众/>
c:redirect
浸染:紧张运用于重定向
例如:
<c:redirect url=\"大众/jstl/if.jsp\公众 context='/day11'></c:redirect>
c:param
浸染:在地址栏后面设置参数,一样平常和c:import ,c:url,c:redirect一起利用
例如:
<c:url value=\公众/jstl/if.jsp\"大众 var=\公众ifurl\"大众 context=\"大众/day11\"大众 scope=\"大众request\公众>
<c:param name=\"大众username\"大众 value=\公众sansan\"大众></c:param>
<c:param name=\"大众password\公众 value=\"大众123\"大众></c:param>
</c:url>
修正jsp的默认编码