EL表达式
作用
jsp的核心语法:
jsp表达式 和 jsp脚本。
以后开发jsp的原则:尽量在jsp页面中少写甚至不写java代码。
使用EL表达式替换掉jsp表达式
EL表达式作用:向浏览器输出域对象中的变量值或表达式计算的结果!!!
语法:
${变量或表达式} 语法
1)输出基本数据类型变量
1.1 从四个域获取 ${name}
1.2 指定域获取 ${pageScope.name}
域范围:
pageScoep / requestScope / sessionScope / applicationScope
2)输出对象的属性值 Student
3)输出集合对象 List 和 Map
4)EL表达式计算
"java" import="java.util.*" pageEncoding="utf-8"%>
<html><head> <title>EL语法title> head><body><%String name = "rose";
//放入域中
//pageContext.setAttribute("name",name);pageContext.setAttribute("name",name,PageContext.REQUEST_SCOPE);
%><%=name %><br/><%--1)从四个域自动搜索--%>
EL表达式:${name }<%--
${name } 等价于
pageContext.findAttribute("name")%>
--%>
<%--2) 从指定的域中获取数据--%>
EL表达式:${pageScope.name }
<%--
${pageScope.name } 等价于
pageContext.getAttribute("name",PageContext.PAGE_SCOPE)%>
--%>
body>
html>
输出:
rose
EL表达式:rose EL表达式:
"java" import="java.util.*,com.loaderman.demo.Student" pageEncoding="utf-8"%>
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
EL输出不同类型的数据
1)EL输出对象的属性
--%>
//保存数据
Student student = new Student("eric",20);
//放入域中
pageContext.setAttribute("student",student);
//List
List list = new ArrayList();list.add(new Student("rose",18));list.add(new Student("jack",28));list.add(new Student("lucy",38));//放入域中
pageContext.setAttribute("list",list);//Map
Map map = new HashMap();
map.put("100",new Student("mark",20));
map.put("101",new Student("maxwell",30));
map.put("102",new Student("narci",40));//放入域中
pageContext.setAttribute("map",map);
%>
${student.name} - ${student.age }
${student.name} 等价于 (点相对于调用getXX()方法)
"student")).getName()%>
--%>
List对象 --%>
${list[0].name } - ${list[0].age }
${list[1].name } - ${list[1].age }
${list[2].name } - ${list[2].age }list[0]等价于 (中括号相对于调用get(参数)方法)
((List)pageContext.findAttribute("list")).get(0)
--%>
${map['100'].name } - ${map['100'].age }
${map['101'].name } - ${map['101'].age }
${map['102'].name } - ${map['102'].age }
输出:
eric - 20
rose - 18
jack - 28
lucy - 38
mark - 20
maxwell - 30
narci - 40
"java" import="java.util.*" pageEncoding="utf-8"%>
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
EL表达式计算
1)算术表达式
+ - * /
--%>
${10+5 }
${10*5 }
2)比较运算
> < >= <= == !=
--%>
${10>5 }
${10<5 }
${10!=10 }
3)逻辑运算
&& || !
--%>
${true && false }
${true || false }
${!false }
4)判空
null 或 空字符串: empty
--%>
//String name = "eric";
//String name = null;
String name = "";
pageContext.setAttribute("name",name);
%>
判断null:${name==null }
判断空字符:${name=="" }
判空:${name==null || name=="" }
另一种判空写法:${empty name }
输出:
15
50
true
false
false
false
true
true
判断null:false
判断空字符:true
判空:true 另一种判空写法:true
JSP标签
jsp标签的作用
jsp标签作用:替换jsp脚本。
1)流程判断(if for循环)
2)跳转页面(转发,重定向)
3)。。。。。
Jsp标签分类
1)内置标签(动作标签):不需要在jsp页面导入标签
2)jstl标签:需要在jsp页面中导入标签
3)自定义标签 :开发者自行定义,需要在jsp页面导入标签
动作标签
转发标签:
参数标签:
包含标签:
原理:包含与被包含的页面先各自翻译成java源文件,然后再运行时合并在一起。(先翻译再合并),动态包含
静态包含 vs 动态包含的区别?
1) 语法不同
静态包含语法:
动态包含语法:
2)参数传递不同
静态包含不能向被包含页面传递参数
动态包含可以向被包含页面传递参数
3)原理不同
静态包含: 先合并再翻译
动态包含:先翻译再合并
"java" import="java.util.*" pageEncoding="utf-8"%>
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
动作标签
//request.getRequestDispatcher("/09.action2.jsp?name=eric").forward(request,response);
%>
"/action2.jsp">
--%>
include page="/common/header.jsp">include>
--%>
include file="common/header.jsp" %>
主页的内容
"java" import="java.util.*" pageEncoding="utf-8"%>
<html><head> <title>动作标签title> head><body><%=request.getParameter("name")%><br/><%=request.getParameter("password")%>body>html>
JSTL标签
使用步骤:
1) 导入jstl支持的jar包(标签背后隐藏的java代码) 注意:使用javaee5.0的项目自动导入jstl支持jar包
2)使用taglib指令导入标签库
3)在jsp中使用标签
核心标签库的重点标签:
保存数据:
<c:set>c:set>
获取数据:
<c:out value="">c:out>
单条件判断
<c:if test="">c:if>
多条件判断
<c:choose>c:choose>
<c:when test="">c:when>
<c:otherwise>c:otherwise>
循环数据
<c:forEach>c:forEach>
<c:forTokens items="" delims="">c:forTokens>
重定向
<c:redirect>c:redirect>
"java" import="java.util.*" pageEncoding="utf-8"%>
"com.loaderman.demo.Student" %>
"http://java.sun.com/jsp/jstl/core" prefix="c" %>
"-//W3C//DTD HTML 4.01 Transitional//EN">
核心标签库
set标签 :保存数据(保存到域中)默认保存到page域 --%>
set var="name" value="rose" scope="request">set>
String msg = null;
pageContext.setAttribute("msg",msg);
%>
${msg }
out标签:获取数据(从域中)
default:当value值为null时,使用默认值
escapeXml: 是否对value值进行转义,false,不转义,true,转义(默认)
--%>
out value="${msg}" default="
标题3
" escapeXml="true">out>
if标签 :单条件判断--%>
if test="${!empty msg}">
条件成立if>
set var="score" value="56">set>
"${score>=90 && score<=100}">
优秀"${score>=80 && score<90}">
良好"${score>=70 && score<80}">
一般"${score>=60 && score<70}">
及格
不及格
//List
List list = new ArrayList();
list.add(new Student("rose",18));
list.add(new Student("jack",28));
list.add(new Student("lucy",38));//放入域中
pageContext.setAttribute("list",list);//Map
Map map = new HashMap();
map.put("100",new Student("mark",20));
map.put("101",new Student("maxwell",30));
map.put("102",new Student("narci",40));//放入域中
pageContext.setAttribute("map",map);
%>
begin="" : 从哪个元素开始遍历,从0开始.默认从0开始
end="": 到哪个元素结束。默认到最后一个元素
step="" :步长 (每次加几) ,默认1
items="":需要遍历的数据(集合) var="":每个元素的名称
varStatus="":当前正在遍历元素的状态对象。(count属性:当前位置,从1开始)
--%>"${list}" var="student" varStatus="varSta">
序号:${varSta.count} - 姓名:${student.name } - 年龄:${student.age}"${map}" var="entry">
${entry.key } - 姓名:${entry.value.name } - 年龄:${entry.value.age }
String str = "java-php-net-平面";
pageContext.setAttribute("str",str);
%>"${str}" delims="-" var="s">
${s }
"http://www.baidu.com">--%>
输出:
标题3
不及格
序号:1 - 姓名:rose - 年龄:18
序号:2 - 姓名:jack - 年龄:28
序号:3 - 姓名:lucy - 年龄:38
100 - 姓名:mark - 年龄:20
101 - 姓名:maxwell - 年龄:30
102 - 姓名:narci - 年龄:40
java
php
net
平面
JSTL核心标签库
标签
标签用于输出一段文本到浏览器中。
属性名 | 是否支持EL | 属性类型 | 属 性 描 述 |
value | true | Object | 指定要输出的内容 |
escapeXml | true | Boolean | 指定是否将>、 |
default | true | Object | 指定如果value属性的值为null/””时所输出的默认值 |
标签
标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性。
属性名 | 是否支持EL | 属性类型 | 属 性 描 述 |
value | true | Object | 用于指定属性值 |
var | false | String | 用于指定要设置的Web域属性的名称 |
scope | false | String | 用于指定属性所在的Web域 |
target | true | Object | 用于指定要设置属性的对象,这个对象必须是JavaBean对象或java.util.Map对象 |
property | true | string | 用于指定当前要为对象设置的属性名称 |
标签
标签可以构造简单的“if-then”结构的条件表达式
属性 | 是否支持EL | 属性类型 | 属 性 描 述 |
test | true | boolean | 决定是否处理标签体中的内容的条件表达式 |
var | false | String | 用于指定将test属性的执行结果保存到某个Web域中的某个属性的名称 |
scope | false | String | 指定将test属性的执行结果保存到哪个Web域中 |
标签
标签用于指定多个条件选择的组合边界,它必须与和标签一起使用。
使用,和三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=gb2312" %>
<c:set value="${param.count}" var="count“ />count == 0}">
对不起,没有符合您要求的记录。
c:when>
<c:otherwise>
符合您要求的记录共有${count}条.
c:otherwise>
c:choose>
标签
标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。
属性名 | 是否支持EL | 属性类型 | 属 性 描 述 |
var | false | String | 指定将当前迭代到的元素保存到page这个Web域中的属性名称 |
items | true | 任何支持的类型 | 将要迭代的集合对象 |
varStatus | false | String | 指定将代表当前迭代状态信息的对象保存到page这个Web域中的属性名称 |
begin | true | int | 如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代 |
end | true | int | 参看begin属性的描述 |
step | true | int | 指定迭代的步长,即迭代因子的迭代增量 |
标签
对带有相同符合格式内容进行分割输出,例如varstr="1,2,3,4,5,6";
属性名 | 是否支持EL | 属性类型 | 属 性 描 述 |
Items | true | 任何支持的类型 | 将要迭代的集合对象 |
delims | false | String | 字符串的分割符,可以同时有个分割符(依次写在引号内即可。) |
varStatus | false | String | 指定将代表当前迭代状态信息的对象保存到page这个Web域中的属性名称 |
begin | true | int | 如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代 |
end | true | int | 参看begin属性的描述 |
step | true | int | 指定迭代的步长,即迭代因子的迭代增量 |
var | False | String | 指定将当前迭代到的元素保存到page这个Web域中的属性名称 |
标签
标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以参数形式附加在URL地址后面
属性名 | 是否支持EL | 属性类型 | 属 性 描 述 |
value | true | String | 指定要构造的URL |
var | false | String | 指定将构造出的URL结果保存到Web域中的属性名称 |
scope | false | String | 指定将构造出的URL结果保存到哪个Web域中 |
标签
标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:
nested actions
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=gb2312" %>
<c:catch var="myex“ >
10/0;
%>
异常:myex}" /><br />
异常 myex.getMessage:<c:out value="${myex.message}" /><br />
异常 myex.getCause:<c:out value="${myex.cause}" /><br />
异常 myex.getStackTrace:<c:out value="${myex.stackTrace}" />
标签
标签用于将当前的访问请求转发或重定向到其他资源,它可以根据url属性所指定的地址,执行类似这个JSP标准标签的功能,将访问请求转发到其他资源;或执行response.sendRedirect()方法的功能,将访问请求重定向到其他资源。
属性名 | 是否支持EL | 属性类型 | 属 性 描 述 |
url | true | String | 指定要转发或重定向到的目标资源的URL地址 |
在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。
http://localhost:808/servlet/MyServlet?name=“中国”
示例:<c:param name=“name” value=“中国" />
完
码上加油站
一起来加油
长按扫码关注
记得点个 赞 和 在看 哦!