总结33 MVC开发理念以及EL表达式的概念与应用

28 篇文章 0 订阅
27 篇文章 0 订阅

MVC的概念

MVC不是一种应用,而是一种开发理念
许多大公司都不允许JSP文件中存在JS代码,和Java代码(也就是JSP的:<% %>),因为这将使得前端和后端都合为一体,开发虽然方便,但是修改的话将会很难处理,阅读性会很差.
这不仅仅是阅读性的问题,当前端工作人员处理前端页面时,也会非常困扰,因为他们很可能仅仅只懂得前端代码
因此,催生出了MVC这种理念,前端页面可以允许少量的后端代码(EL表达式,以及引用JSTL标签资源库),但这些代码仅仅用于将后端发送的数据输出到前端显示

MVC:

  1. M:Model,模型。JavaBean * 完成具体的业务操作,如:查询数据库,封装对象
  2. V:View,视图。JSP * 展示数据
  3. C:Controller,控制器。Servlet * 获取用户的输入 * 调用模型 * 将数据交给视图进行展示
    优缺点:
    1. 优点:
      1. 耦合性低,方便维护,可以利于分工协作
      2. 重用性高
  4. 缺点:
    1. 使得项目架构变得复杂,对开发人员要求高

EL表达式的概念

EL表达式,就是MVC开发理念下催生的一种产物,它能够通过少量的代码,将后端传过来的数据输出到前端.
替换和简化jsp页面中java代码的编写

EL表达式的应用

在这里插入图片描述

应用须知

jsp页面默认支持el表达式的。
如果要忽略el表达式,有两种方案
方案一: 设置jsp中page指令中isELIgnored的属性,将值设置为’true’,则忽略当前jsp页面中所有的el表达式
方案二:在目标表达式添加斜杆’’ ${表达式} :则忽略当前单个的el表达式

EL表达式必须写在<body>标签内

应用

定义格式:${EL表达式}

算数运算符

格式:${变量或常量 算符运算符号 变量或常量}
算数运算符号:
+ 加
- 减去
* 乘以
/ (或div) 除以
% (或mod) 取模
列如:

<h1>算术运算符</h1>
${5+2}<br>
${12/6}<br>
${10%2}<br>

比较运算符

格式:${变量或常量 逻辑运算符号 变量或常量}
逻辑运算符号:
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
列如

<h1>比较运算符</h1>
${5>6}<br>
${10<20}<br>

逻辑运算符

格式:${变量或常量 逻辑运算符号 变量或常量}
逻辑运算符号:
&& (或and)并且
|| (或or) 或者
! (或not) 不为
列如:

<h1>逻辑运算符</h1>
${6>4 && 5<6}<br>
${5>6 || 6<5}<br>

空运算符 empty(重要)

在这里插入图片描述
用途:判断字符串、集合对象、数组的长度,和是否为空
条件:
需要先将要数据作为共享数据进行域共享,才能进行判断

方式一:判断字符串,集合对象,数组的对象是否为null(空),或者长度是否为0,如果是则输出true,不是则输出false
格式:${empty 字符串的共享数据名/集合对象的共享数据名/数组的共享数据名}
列如:

${empty mapparam}

方式二:判断字符串、集合、数组对象是否不为null(空),并且长度大于0,是则输出false,不是则输出true
格式:${not empty 字符串的共享数据名/集合对象的共享数据名/数组的共享数据名}
列如:

${not empty mapparam}

用EL从共享域获取数据

既然EL的目的主要是为了将后端传递的数据输出,那么它必须具备获取共享数据的功能(如request的共享数据,cookie的共享数据.
在这里插入图片描述

获取request共享数据

格式:${requestScope.共享数据名}

获取pageContext共享的数据

格式:${pageScope.共享数据名}

获取session共享的数据

格式:${sessionScope.共享数据名}

获取ServletContext共享的数据

格式:${applicationScope.共享数据名}

搜索符合条件的数据(重要)

输入一个你要获取的共享数据名,依照以上四种共享数据的范围大小顺序,判断每个共享域中是否有该’共享数据名’,如果有,则将其数据输出到页面
格式:${要获取的共享数据名}
在这里插入图片描述

获取对象中的数据

在这里插入图片描述
本质上,是调用对象中的get方法
条件:
一.本方法多用于信息对象中的数据(如uesr,person,phone),也就是说,必须具有get/set方法的对象
二.当然,首先是需要通过四种共享域的方式将信息对象作为共享数据共享,才能获取到
.将对象中的get方法名,去掉’get’,然后将第一个字母变为小写
如:
原始get方法名:getName --> 去掉’get’:Name —> 变为小写:name

方式一(推荐):
格式:${域类型对应的获取方法.对象的共享数据名.对象中的get方法的简化名字}
列如:

${requestScope.person.name}

方式二
格式:${对象的共享数据名.对象中的get方法的简化名字}
列如:

${person.sex}

获取list集合中的数据

在这里插入图片描述
条件:
1.同样是需要先将list集合作为共享数据进行域共享,才能获取
方式一(推荐):
格式:${域类型对应的获取方法.list集合的共享数据名[索引值]}
列如:

${requestScope.listparam[0]}

方式二:
格式:${list集合的共享数据名[索引值]}
列如:

${listparam[0]}

获取Map集合中的数据

在这里插入图片描述
条件:
1.同样是需要先将MAP集合作为共享数据进行域共享,才能获取
方式一(推荐)
格式:${域类型对应的获取方法.map集合的共享数据名.map集合中的键名}
列如:

${requestScope.mapparam.呵呵}<br>

方式二
格式:${map集合的共享数据名.map集合中的键名}
列如:

${mapparam.是吧}<br>

获取隐式的内置对象(重要)

el表达式中有11个隐式对象
那么如何获取呢?通过pageContext获取
获取格式: ${pageContext.欲获取的内置对象名.其内置对象对应的方法}
列如:

${pageContext.request.contextPath}

推荐使用:${pageContext.request.contextPath} 动态地获取配置中的虚拟目录
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值