JavaWeb_servlet核心技术(3)EL和JSTL核心技术

EL和JSTL核心技术

EL(Expression Language表达式语言)表达式提供了在JSP中简化表达式的写法,可以方便地访问各种数据并输出

主要功能

  • 依次访问pageContext(当前页面中)、request(当前请求中有效)、session(当前会发中有效)和application(服务器中有效)作用域对象存储的数据。
  • 获取请求参数值。
  • 访问Bean对象的属性。
  • 访问集合中的数据。
  • 输出简单的运算结果。

访问内置对象的数据

访问方式

  • <%=request.getAttribute(“ varName”)%>
  • 用EL实现就是: ${ varName }
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
//pageContext.setAttribute("name1","pageContext对象中的值");
request.setAttribute("name2","request对象中的属性值:guanyu");//设置属性值

session.setAttribute("name3","session对象中的属性值:liubei");
application.setAttribute("name4","application对象中的属性值:zhaoyun");
%>
<%--使用JSP中原始方式获取数据和打印--%>
<%= "name2的数值为"+request.getAttribute("name2")%><br/>
<%= "name3的数值为"+session.getAttribute("name3")%><br/>

<%--使用EL表达式实现获取数据和打印--%>
name2的数值为:${ name2 }<br/>
name3的数值为:${ name3 }<br/>
name4的数值为:${ name4 }<br/>
</body>
</html>

在这里插入图片描述

访问请求参数的数据

就是前台页面那边传过来的数据

  • 在EL之前使用下列方式访问请求参数的数据
request.getParameter(name);
request.getParameterValues(name);

在EL中使用下列方式访问请求参数的数据

  • param:接收的参数只有一个值。
  • paramValues:接受的参数有多个值
<!-- 获取指定参数的数值 --> 
${param.name} 
<!-- 获取指定参数中指定下标的数值 --> 
${paramValues.hobby[0]}

用一下

写param.jsp为el_param.jsp传参

  • 用name传递参数,这个参数只有一个值
  • hobby有多个值
    param.jsp如下
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现一个简单页面负责向JSP页面传递参数</title>
</head>
<body>
<form action="el_param.jsp" method="post">
    姓名:<input type="text" name="name"/><br/>
    爱好:<input type="checkbox" name="hobby" value="唱歌"/>唱歌<br/>
         <input type="checkbox" name="hobby" value="跳舞"/>跳舞<br/>
         <input type="checkbox" name="hobby" value="学习"/>学习<br/>
    <input type="submit" value="提交"><br/>
</form>
</body>
</html>

el_param.jsp如下

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现请求参数数值的获取</title>
</head>
<body>
<%
    request.setCharacterEncoding("utf-8");//解决乱码
%>
<%--使用JSP语法中原始方式获取请求参数值--%>
<%--<%="姓名是:"+request.getParameter("name")%><br/>
<%="爱好是:"+ Arrays.toString(request.getParameterValues("hobby"))%><br/>--%>

<%--使用el表达式中的方式获取请求参数值--%>
姓名是:${param.name}<br/>
爱好是:${paramValues.hobby[0]}<br/>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

el表达式访问Bean对象的属性

插曲:
遇到pageContext不能setAttribute,在pom.xml中引入依赖包坐标即可

<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
</dependency>

就是访问成员变量值

访问方式

方式一: $ { 对象名 . 属性名 },例如:${user.name}
方式二: $ { 对象名 [“属性名”] },例如:${user[“name”]}

区别

当要存取的属性名中包含一些特殊字符,如: . 或 ,等并非字母或数字的符号,就一定要使用 [ ]而
不是.的方式
使用[]的方式可以动态取值,具体方式如下:

<% request.setAttribute(“prop”,“age”); %><!-- 相当于表达式中写一个变量 --> ${ user[prop] }

在com.example.task_web目录下创建Person类
在这里插入图片描述用el_bean.jsp文件实现Bean对象中属性的额获取和打印

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现Bean对象中属性的额获取和打印</title>
</head>
<body>
<%
    Person person = new Person();
    person.setName("zhangfei");
    person.setAge(18);
    pageContext.setAttribute("person",person);
%>
<%--使用el表达式实现属性的获取和打印--%>
获取到的姓名是:${person.name}<br/>
获取到的年龄是:${person.age}<br/>

<%--另一种写法--%>
${person["name"]}<br/>
${person["age"]}<br/>
</body>
</html>

在这里插入图片描述

EL表达式访问集合中的数据

<!-- student为ArrayList类型的对象 --> 
${student[0].name}

EL表达式常用的内置对象

在这里插入图片描述

常用的运算符和关系运算符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值