jsp浸染

jsp全称java server pages(java做事器页面),实质是一个servlet.它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(.jsp).

jsp浸染:将内容的天生和显示进行分离

jsp用el要导包吗JavaWeb12JSP EL表达式JSTL标签 Angular

用JSP技能,Web页面开拓职员可以利用HTML或者XML标识来设计和格式化终极页面,并利用JSP标识或者小脚本来天生页面上的动态内容

jsp事理

jsp脚本

有三个基本的脚本元素,浸染是使JAVA代码可以直接插入到HTML代码中

声明标签

格式:<%! int a = 1; %>

浸染:声明的变量在类的成员位置上

脚本片断

格式:<% int a = 1; out.println(a); %>

浸染:内容会天生在_jspService()方法中

脚本表达式

格式:<%= \"大众hello \"大众 + a %>

浸染:它就相称于是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标签是可以带参数的

二.EL

1. 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.6

2. 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>

三.JSTL

1. 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的默认编码