[DRP]-ELB表达式

E L(Expression Language) 目的:为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。

index 页面:目的,连接servelet类加载数据,然后转发页面。

 <a href="servlet/JstlElServlet">测试EL表达式</a><br>

JstlElServlet 类:

package com.bjpowernode.jstl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 测试el表达式
 * @author Administrator
 *
 */
public class JstlElServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //普通字符串
        request.setAttribute("hello", "Hello World");

        //结构

        Group group = new Group();
        group.setName("动力节点603班");

        User user = new User();
        user.setUsername("张三");
        user.setAge(23);
        user.setGroup(group);
        request.setAttribute("user", user);

        //map
        Map map = new HashMap();
        map.put("k1", "v1");
        map.put("k2", "v2");
        request.setAttribute("map", map);

        //字符串数组
        String[] strArray = new String[]{"a", "b", "c"};
        request.setAttribute("str_array", strArray);

        //对象数组
        User[] users = new User[10];
        for (int i=0; i<users.length; i++) {
            users[i] = new User();
            users[i].setUsername("张三_" + i);
        }
        request.setAttribute("users", users);

        //list
        List userList = new ArrayList();
        for (int i=0; i<10; i++) {
            User usr = new User();
            usr.setUsername("李四_" + i);
            userList.add(usr);
        }
        request.setAttribute("userList", userList);

        //empty
        request.setAttribute("v2", "");
        request.setAttribute("v3", new ArrayList());
        request.setAttribute("v4", "12345");
        request.setAttribute("v5", null);

        request.getRequestDispatcher("/jstl_el.jsp").forward(request, response);
    }

}

Group类:

package com.bjpowernode.jstl;

public class Group {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

user类:

package com.bjpowernode.jstl;

public class User {

    private String username;
    private int age;

    private Group group;

    public Group getGroup() {
        return group;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setGroup(Group group) {
        this.group = group;
    }

}

jstl_el.jsp页面:

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
    <h1>测试EL表达式</h1>
    <hr>
    <li>普通字符串</li><br>
    hello(jsp脚本):<%=request.getAttribute("hello") %><br>
    hello(el表达式,语法:$和{}):${hello }<br>
    hello(el表达式,el的内置对象pageScope,requestScope,sessionScope,applicationScope)<br>
    如果不指定范围,它的搜索顺序为pageScope~applicationScope):${requestScope.hello }<br>
    hello(el表达式,指定范围从session取得):${sessionScope.hello }<br>
    <p>
    <li>结构,采用.进行导航,或称为存取器</li><br>
    姓名:${user.username }<br>
    年龄:${user.age }<br>
    所属组:${user.group.name }<br>
    <p>
    <li>map</li><br>
    map.k1:${map.k1 }<br>
    map.k2:${map.k2 }<br>
    <p>
    <li>字符串数组,采用[]下标</li><br>
    strArray[1]:${str_array[1] }<br>
    <p>
    <li>对象数组,采用[]下标</li><br>
    users[5].username:${users[5].username }<br>
    <p>
    <li>list,采用[]下标</li><br>
    userList[6].username:${userList[6].username }<br>
    <p>
    <li>el表达式对运算符的支持</li><br>
    1+1=${1+1 }<br>
    10/5=${10/5 }<br>
    10 div 5=${10 div 5 }<br>
    10 % 3=${10 % 3 }<br>
    10 mod 3 = ${ 10 mod 3 }<br>

    <!--
        ==/eq
        !=/ne
        </lt
        >/gt
        &&/and
        ||/or
        !/not
        //div
        %/mod
     -->
    <p>
    <li>测试empty</li><br>
    v1:${empty v1}<br>
    v2:${empty v2}<br>
    v3:${empty v3}<br>
    v4:${empty v4}<br>
    v5:${empty v5}<br>

</body>
</html>

感觉和session 、cookie 的作用差不多,但是EL表达式只是后台先前台页面传值。数据不能共享!

让自己越来越优秀!

时间: 2024-08-07 21:18:49

[DRP]-ELB表达式的相关文章

ELb表达式

主要用于servlet的4个作用域取值:pageScope.requestScope.sessionScope.applicationScope 取值顺序依次从小到大.取值方式如:操作javabean属性:${user.uname} 跨作用域查找 ${pageScope.ccc }---${requestScope.ccc }--- ${sessionScope.ccc }---${applicationScope.ccc } param 和 paramValues 用来获取表单中提交的信息.前

【JSTL】--JSTL表达式:c:forEach--drp215

JstlCoreServlet: /** * */ package com.bjpowrnode.jstl; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletR

DRP视频总结

这个视频是一遍做项目一遍看的,因为时间管理并没有应用的很好,因此,这个在时隔几个月之后才将这个视频看完,对自己也是无语了.好了,废话不多说了,下面是我对DRP做的一个整理. 从图中,我觉得我整理并不好,在全局上,并不是一个完整的项目,只是对项目中比较重点介绍的知识点进行总结的,比如:数据库设计.Orcal的介绍,Html语言的介绍.servlet,jsp介绍.MVC框架的介绍等等.当然,里面还是有很多的东西,很重要的没有放进去. 作为一个项目来讲,我们第一开始首先要考虑的就是这个项目用到的框架,

.NET深入解析LINQ框架(六:LINQ执行表达式)

阅读目录: 1.LINQ执行表达式 在看本篇文章之前我假设您已经具备我之前分析的一些原理知识,因为这章所要讲的内容是建立在之前的一系列知识点之上的,为了保证您的阅读顺利建议您先阅读本人的LINQ系列文章的前几篇或者您已经具备比较深入的LINQ原理知识体系,防止耽误您的宝贵时间. 到目前为止我们对LINQ的执行原理已经很清楚了,从它的前期构想到它真正为我们所用都有足够的证据,但是似乎问题并没有我们想的那么简单,问题总是在我们使用中频频出现尤其是新技术的使用,当然有问题才能有进步. 一:LINQ执行

Lambda表达式实战视频教程

视频教程地址: https://my.oschina.net/u/3217554/blog/1507456 1:Lambda表达式及函数式接口介绍 2:Lambda表达式详解 3:方法的引用(一) 4:方法的引用(二) 5:Stream API(一) 6:Stream API(二) 7:Lambda表达式.方法的引用.Stream API实战

lambda表达式封装对数据库的查询

前言: 1.为什么要封装lambda表达式数据库查询,原因有一下几点: 1.1.在以往的开发中进行数据库表查询时,其实所需要的字段就是其中几个,但是在开发中,开发者往往习惯select * 进行查询,当数据多和用户量多时,查询的效率会降低. 1.2.在写查询where条件的时候,总是用string.format去拼接字符串,开发效率低. 1.3.代码不够优雅,代码中嵌套和多sql语句,如果是表字段发生改变时编译器检查不出来,代码出错的概率大. 1.4.本着 write less  do more

坑爹的EL 表达式。

先说结论: Property 'OrgName0' not found on type EL表达式只与相关类的get方法的有关,就算你没定义变量,get 方法直接返回一个变量,或者常量都可以.这条没问题. EL表达式的大小写规则:当get方法后的字符如果前两个都是大写时,EL表达式需要大写.除此之外均为小写. package com.dobs.codedeploy.domain; public class Image { private String imageName;private Stri

Spring AOP中pointcut expression表达式解析 及匹配多个条件

Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的. Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合. args() @args() execution() this() target() @target() within() @within() @annotation 其中 execution 是用的最多的,其格式为: execution(modifiers-pat

Lambda表达式

import org.junit.Test; import java.util.Comparator; import java.util.function.Consumer; /** * 一.Lambda 表达式基础语法:Java8中引入一个新的操作符"->"该操作符称为箭头操作符或Lambda操作符 * 箭头操作符将Lambda表达式拆分为两部分: * 左侧: Lambda表达式的参数列表 * 右侧: Lambda表达式中所需要执行的功能,即Lambda体 * * 语法格式一: