一、jsp概述
1、JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP实际上就是Servlet。
JSP其实就是在HTML页面中嵌入Java代码。
代码
html:静态内容
servlet:服务器端的小应用程序。适合编写java逻辑代码,如果编写网页内容--苦逼。
jsp:适合编写输出动态内容,但不适合编写java逻辑。
2、JSP与Servlet的关系是什么?
是JSP的前身,本质上是一样的。
页面在运行时由Web容器先转换成Servlet类, 然后编译,再运行编译好的.class文件,最终转换成HTML代码发送给客户端浏览器。Servlet:控制器。重点编写java代码逻辑 (获取表单数据、处理业务逻辑、分发转向)
JSP:代码显示模板。重点在于显示数据
二、jsp原理(*)
三、jsp语法
、JSP模版元素
网页的静态内容。如:html标签和文本。
2、JSP的脚本
2.1、小脚本 <% java代码 %>
2.1、表达式 <%= 2+3 %> 等价于out.print(2+3);
、JSP注释
JSP注释:<%-- 被注释的内容 --%> 特点:安全,省流量
网页注释:<!-- 网页注释 --> 特点:不安全,费流量
、3指令
5、6动作
6、9内置对象
四、Jsp的三个指令
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
在JSP 2.0规范中共定义了三个指令:
page指令
Include指令
taglib指令
语法:
<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”。。。%>
或者:
<%@ 指令名称 属性1=“属性值1”%>
<%@ 指令名称 属性2=“属性值2”%>
如:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page language="java" %>
<%@ page import="java.util.*" %>
1、page:
作用:用于定义JSP页面的各种属性
属性:
1.1、 import 和java代码中的import是一样的
<%@ page import="java.util.Date,java.util.List"%>
或者:
<%@ page import="java.util.Date"%>
<%@ page import="java.util.List"%>
JSP会自动导入以下的包:
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
1.2、 session: 是否会自动创建session对象。默认值是true;
1.3、 buffer: JSP中有javax.servlet.jsp.JspWriter输出字符流。设置。输出数据的缓存大小,默认是8kb.
1.4 errorPage: 如果页面中有错误,则跳转到指定的资源。
errorPage="/uri" 如果写“/”则代表当前应用的目录下,绝对路径。
如果不写“/”则代表相对路径。
、 isErrorPage: 是否创建throwable对象。默认是false;
1.6、 contextType: 等同于response.setContextType("text/html;charset=utf-8");
1.7、 pageEncoding: 告诉JSP引擎要翻译的文件使用的编码。
1.8、 isELIgnored: 是否支持EL表达式。 默认是false
<%@ page pageEncoding="gbk" %>
、include:
静态包含:把其它资源包含到当前页面中。
<%@ include file="/include/header.jsp" %>
动态包含:
<jsp:include page="/include/header.jsp"></jsp:include>
两者的区别:翻译的时间段不同
前者:在翻译时就把两个文件合并
后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。
原则:能用静的就不用动的。
、taglib
作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
五、jsp的6个动作
使用标签的形式来表示一段java代码。
如:
1)<jsp:include > 动态包含
2)<jsp:forward> 请求转发
3)<jsp:param> 设置请求参数
4)<jsp:useBean> 创建一个对象
5)<jsp:setProperty> 给指定的对象属性赋值
6)<jsp:getProperty> 取出指定对象的属性值
六、JSP的9个内置对象
指在JSP的<%=%> 和<% %>中可以直接使用的对象
在JSP中为了简化用户的开发,提供了九个内置对象,这些内置对象将由容器为用户进行实例化,而用户直接使用即可,而不用像在java中那样,必须通过关键字new进行实例化对象之后才可以使用。
对象名
类型
说明
request
javax.servlet.http.HttpServletRequest
response
javax.servlet.http.HttpServletResponse
session
javax.servlet.http.HttpSession
由session="true"开关
application
javax.servlet.ServletContext
exception
java.lang.Throwable
由isErrorPage="false"开关
page
java.lang.Object当前对象this
当前servlet实例
config
javax.servlet.ServletConfig
out
javax.servlet.jsp.JspWriter
字符输出流,相当于 printWriter对象
pageContext
javax.servlet.jsp.PageContext
/div>
p>
/p>
p>pageContext(重要)
/p>
p>1、本身也是一个域对象:它可以操作其它三个域对象(request session application)的数据
/p>
p>void setAttribute(String name,Object o);
/p>
p>Object getAttribute(String name);
/p>
p>void removeAttribute(String name);
/p>
p>操作其它域对象的方法
/p>
p>void setAttribute(String name,Object o,int Scope);
/p>
p>Object getAttribute(String name,int Scope);
/p>
p>void removeAttribute(String name,int Scope);
/p>
p>scpoe的值:
/p>
p>PageContext.PAGE_SCOPE
/p>
p>PageContext.REQUEST_SCOPE
/p>
p>PageContext.SESSION_SCOPE
/p>
p>PageContext.APPLICATION_SCOPE
/p>
p>
/p>
p>findAttribute(String name); 自动从page request session application依次查找,找到了就取值,结束查找。
/p>
p>
/p>
p>
/p>
p>2、它可以创建其它的8个隐式对象
/p>
p>在普通类中可以通过PageContext获取其他JSP隐式对象。自定义标签时就使用。
/p>
p>
/p>
p>3、提供了的简易方法
/p>
p>pageContext.forward("2.jsp");
/p>
p> pageContext.include("2.jsp");
/p>
p>七、四大域对象
/p>
p>存放的数据在当前页面有效。开发时使用较少。
/p>
p>ServletRequest: request 存放的数据在一次请求(转发)内有效。使用非常多。
/p>
p>HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息,购物车功能。
/p>
p>ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。
/p>
p>八、EL表达式语言
/p>
p>1、
EL概述与基本语法/p>
p>
表达式语言(Expression Language)是JSP2.0中新增的功能。使用表达式语言(EL)可以在JSP页面进行方便地输出内容。EL语法为:${表达式}
/p>
p>EL表达式:expression language 表达式语言
/p>
p>要简化jsp中java代码开发。
/p>
p>它不是一种开发语言,是jsp中
获取数据的一种规范
/p>
p>
/p>
p>2、
EL具体功能/p>
p>1) 获取数据
/p>
p>EL表达式只能获取存在4个作用域中的数据
/p>
p>${u} 原理: pageContext.findAttribute("u");
/p>
p>url?name=tom ${param.name}
/p>
p>EL获取对于null这样的数据,在页面中表现为空字符串
/p>
p>${u.name} == u.getName()方法
/p>
p>点(.) 运算符相当于调了getter方法,点后页面跟的是属性名。
/p>
p>
/p>
p>属性导航
/p>
p>
/p>
p>运算符:点能做的,它也能做; 它能做的,点不一定能做
/p>
p>${student.name}== ${student['name']} == ${student["name"]}
/p>
p>
/p>
p>2) 运算
/p>
p>算数运算符
/p>
p> + - * /(div) %(mod)
/p>
p>参数相加
/p>
p>
/p>
p>关系运算符
/p>
p> < (lt) > (gt) == (eq) !=(ne) >=(ge) <=(le)
/p>
p>
/p>
p>逻辑运算符
/p>
p> &&(and) ||(or) !(not)
/p>
p>运算符
/p>
p>表达式} 判断是否为null或空字符串””
/p>
p>
/p>
p>5. 三目运算符
/p>
p>返回true或false的表达式 ? "为true时输出的内容":"为false时输出的内容"}
/p>
p>
/p>
p>6. 括号运算符
/p>
p>用来改变运算顺序的
/p>
p>
/p>
p>3) 使用EL访问不同的属性范围
/p>
p>${pageScope.属性名}
/p>
p>属性名}
/p>
p>属性名}
/p>
p>属性名}
/p>
p>注意:
/p>
p>如果使用 "${属性名}" 的方式访问属性范围,
/p>
p>则属性范围的访问顺序是pageContext、request、session、application。
/p>
p>
/p>
p>4) 使用EL访问JSP内置对象
/p>
p>使用EL的pageContext内置对象访问JSP的内置对象。
/p>
p>对应的jsp内置对象}
/p>
p>例如:
/p>
p>获取上下文路径:
/p>
p>特殊:
/p>
p> ${pageContext.servletContext.contextPath}
/p>
p>
/p>
p>访问session的ID:
/p>
p> ${pageContext.session.id}
/p>
p>5) EL访问参数(访问客户端发送的参数、全局参数、 一组参数)
/p>
p>用途一:
/p>
p>使用EL的param内置对象访问客户端发送的参数
/p>
p>参数名}
/p>
p>
/p>
p>用途二:
/p>
p>使用EL的initParam内置对象访问上下文参数(全局参数)
/p>
p>在web.xml中配置上下文参数:
/p>
p> <context-param>
/p>
p> <param-name>admin</param-name>
/p>
p> <param-value>Obama</param-value>
/p>
p> </context-param>
/p>
p>用途三:
/p>
p>使用EL的paramValues访问一组参数
/p>
p>${paramValues.参数名[0]} 获取提交来的第一个参数值
/p>
p>${paramValues.参数名[n]} 获取提交来的第(n+1)个参数值
/p>
p>6) 访问cookie
/p>
p>举个例子:
/p>
p>通过EL的cookie内置对象访问JSESSIONID名称的 cookie的语法:
/p>
p> ${cookie["JSESSIONID"].name}
/p>
p> ${cookie["JSESSIONID"].value}
/p>
p>7) 访问header
/p>
p>使用EL的header内置对象访问请求header信息
/p>
p>比如:
/p>

p> ${header["cookie"]}
/p>
p>3、
EL的11个隐式对象/p>
div class="data-table" data-width="" style="outline: none; border-collapse: collapse; width: 100%;">
/colgroup>
tbody>
EL隐式对象引用名称
类型
JSP内置对象名称
说明
pageContext
javax.servlet.jsp.PageContext
pageContext
一样的
pageScope
java.util.Map<String,Object>
没有对应的
pageContext范围中存放的数据,页面范围
requestScope
java.util.Map<String,Object>
没有对应的
请求范围数据
sessionScope
java.util.Map<String,Object>
没有对应的
会话范围数据
applicationScope
java.util.Map<String,Object>
没有对应的
应用范围数据
param
java.util.Map<String,String>
没有对应的
一个请求参数
paramValues
java.util.Map<String,String[]>
没有对应的
重名请求参数
header
java.util.Map<String,String>
没有对应的
一个请求消息头
headerValues
java.util.Map<String,String[]>
没有对应的
重名请求消息头
initParam
java.util.Map<String,String>
没有对应的
web.xml中全局参数
cookie
java.util.Map<String,Cookie>
没有对应的
key:cookie对象的name值
/tbody>
br>
br>
br>
br>
br>
br>
br>
br>
strong>JSTL概述与作用:
/strong>
strong>
/strong>JSTL(JavaServerPages Standard Tag Library)JSP标准标签库
strong>引入JSTL的步骤:
/strong>
strong>
/strong>第一步:将jstl-xx.jar导入/WEB-INF/lib文件夹下。
strong>使用JSTL
/strong>
strong>
/strong>JSP页面使用taglib指令引入xxx.tld文件
strong>常用标签
/strong>
strong>
/strong>1.输出标签
strong>
/strong>设置对象的属性值
strong>
/strong>
br>
em>JSP其实就是在HTML页面中嵌入Java代码。
/em>
em>代码
/em>
br>
colgroup>
col>
col>
col>
tr style="height: 30px;">
对象名
类型
说明
/tr>
tr style="height: 30px;">
request
javax.servlet.http.HttpServletRequest
/tr>
tr style="height: 30px;">
response
javax.servlet.http.HttpServletResponse
/tr>
tr style="height: 30px;">
session
javax.servlet.http.HttpSession
由session="true"开关
/tr>
tr style="height: 30px;">
application
javax.servlet.ServletContext
/tr>
tr style="height: 30px;">
exception
java.lang.Throwable
由isErrorPage="false"开关
/tr>
tr style="height: 30px;">
page
java.lang.Object当前对象this
当前servlet实例
/tr>
tr style="height: 30px;">
config
javax.servlet.ServletConfig
/tr>
tr style="height: 30px;">
out
javax.servlet.jsp.JspWriter
字符输出流,相当于 printWriter对象
/tr>
tr style="height: 30px;">
pageContext
javax.servlet.jsp.PageContext
/tr>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
EL隐式对象引用名称
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
类型
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
JSP内置对象名称
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
说明
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
pageContext
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
javax.servlet.jsp.PageContext
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
pageContext
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
一样的
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
pageScope
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
java.util.Map<String,Object>
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
没有对应的
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
pageContext范围中存放的数据,页面范围
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
requestScope
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
java.util.Map<String,Object>
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
没有对应的
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
请求范围数据
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
sessionScope
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
java.util.Map<String,Object>
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
没有对应的
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
会话范围数据
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
applicationScope
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
java.util.Map<String,Object>
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
没有对应的
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
应用范围数据
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
param
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
java.util.Map<String,String>
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
没有对应的
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
一个请求参数
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
paramValues
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
java.util.Map<String,String[]>
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
没有对应的
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
重名请求参数
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
header
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
java.util.Map<String,String>
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
没有对应的
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
一个请求消息头
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
headerValues
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
java.util.Map<String,String[]>
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
没有对应的
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
重名请求消息头
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
initParam
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
java.util.Map<String,String>
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
没有对应的
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
web.xml中全局参数
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
cookie
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
java.util.Map<String,Cookie>
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
没有对应的
/td>
td style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
key:cookie对象的name值
/td>
九、JSTL
1、JSTL概述与作用:
JSTL(JavaServerPages Standard Tag Library)JSP标准标签库
使用JSTL实现JSP页面中逻辑处理。如判断、循环等。
2、引入JSTL的步骤:
第一步:将jstl-xx.jar导入/WEB-INF/lib文件夹下。
第二步:将jstl-xx.jar解压后的META-INF文件夹下的xxx.tld文件拷贝到/WEB-INF/的某目录下
第三步:在JSP页面使用taglib指令引入xxx.tld文件。
3、使用JSTL
JSP页面使用taglib指令引入xxx.tld文件
指向xxx.tld文件的路径" prefix="JSTL标签前缀"%>
注意:uri中指向xxx.tld文件的路径有两种写法:
第一种:直接指向xxx.tld文件的路径
第二种:在web.xml中配置taglib的uri
<jsp-config>
<taglib>
<taglib-uri>http://www.xxx.com</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
</jsp-config>
4、常用标签
1.输出标签
输出的内容,支持EL" default=" 默认值,支持EL"/>
2.设置标签
设置属性范围的属性值
属性名" value="属性值,支持EL" scope="属性范围"/>
设置对象的属性值
“${perObj}” property=“对象的属性名” value=“支持EL"/>
3.捕获异常标签
保存异常信息的属性名">
有可能发生异常的代码
</c:catch>
4.判断标签
判断表达式,支持EL">
判断结果为true,执行此处
</c:if>
5.forEach标签(遍历list集合或Map集合)
当前正在遍历的对象,作为属性用(msg)" items="要遍历的集合,支持EL">
${msg}
</c:forEach>
6.choose标签
<c:choose>
<c:when test="${param.score>=90}">
优秀</h3>
</c:when>
<c:when test="${param.score>=80}">
良好</h3>
</c:when>
<c:otherwise>
不及格,要加油!</h3>
</c:otherwise>
</c:choose>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/70.html