【Mark学Java】EL&JSTL

   日期:2020-05-05     浏览:103    评论:0    
核心提示:EL&JSTLMVC开发模式EL表达式早期只有Servlet, 只能用response输出标java

EL&JSTL

  • MVC开发模式
  • EL表达式
  • JSTL标签

早期只有Servlet, 只能用response输出标签数据,非常麻烦.后来有了JSP,简化了Servlet开发,如果过度使用JSP,在JSP中写大量的java代码,HTML表,造成难于维护,难于分工协作.再后来,javaweb开发,借鉴MVC开发模式,使得程序的设计更加合理.

MVC开发模式


⭐️M:Model,模型.JavaBean
完成具体的业务操作,如:查询数据库,封装对象
⭐️V:View,视图.JSP
展示数据
⭐️C:Controller,控制器.Servlet
获取用户的输入;调用模型;将数据将给视图进行展示.

优点:耦合性低,方便维护,利于分工合作
缺点:使得项目架构变得复杂

EL表达式

1.概念:Expression Language 表达式语言
2.作用:替换和简化jsp页面中java代码的编写
3.语法: ${表达式}
4.注意:jsp默认支持el表达式,如果要忽略el表达式.1.设置jsp中page指令中:isEIIgnored="true"忽略当前jsp页面中所有el表达式;2.${表达式},忽略当前这个el表达式
5.使用
⭐️运算符:
算术运算符,+ - * /(div) %(mod)
比较运算符,> < >= <= == !=
逻辑运算符,&&(and) ||(or) !(not)
空运算符,empty用于判断字符串,集合,数组对象是否为null并且长度是否为0,
${empty list} 判断字符串,集合,数组对象是否为null或者长度是否为0

${not empty str} 表示判断字符串,集合,数组对象是否不为null 并且长度>0

⭐️获取值:
el只能从域对象中获取值

${域名城.键名}从指定域中获取指定键的值
域名称 :pageScope–>pageContext
requestScope–> request
sessionScope–> session
application–> application(servletcontext)

举例:在request域中存储了name=张三
获取:&{requestScope.name}

&{键名} 表示依次从最小的域中查找是否有该键对应的值,直到找到为止.

获取对象,List集合,Map集合的值
对象 ${域名称.键名称.属性名}
本质上会去调用对象的getter方法
&{requestScope.u.birstr}

逻辑视图
并没有对应对象,只是为了格式好看

<%
    User user=new User();
    user.setName("张三");
    user.setAge(23);
    user.setAttribute("u",user);
%>
${requestScope.u}
${requestScope.u.name}
${u.age}
public String getBirStr(){
   if(birthday!=null){
     SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     return sdf.format(birthday);
   }else{
     return "";
   }
}

List集合
${域名称.键名[索引]}
${list}
${list[0]},如果下标越界的话,不会提示错误,客户端无显示
${list[2].name},如果list存储的是对象,可以通过.name获取用户属性

Map集合
${域名称.键名.key名称}
${map.gender}

${域名称.键名[“key名称”]}
${map[“gender”]}

隐式对象:
EL表达式中有11个隐式对象
pageContext获取jsp其他八个内置对象
${pageContext.request.contextPath}动态获取虚拟目录

JSTL标签

1.概念: JavaServer Pages Tag Library JSP标准标签库
2.作用:用于简化和替换jsp页面上的java标签
3.使用步骤
1导入jstl相关jar包
2引入标签库:taglib指令 <%@ taglib%>

<%@ page contentType="text/html;charest=UTF-8" language="java"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

3使用标签
4.常用的JSTL标签
if相当于java代码的if语句
<c:if test="" ></c:if>
test 必须属性,接收Boolean表达式,如果表达式为true,则显示标签体内容,如果为false,则不显示标签体内容
一般情况下,test属性值会结合el表达式一起使用

<c:if  test="${number%2 != 0}">
        ${number}为奇数
</c:if>
<c:if  test="${number%2 == 0}">
        ${number}为偶数
</c:if>

注意: c:if标签没有else情况,想要else情况,则可以再定义一个c:if标签
choose相当于java代码的choose语句

foreach相当于java代码的for语句
完成重复操作
begin开始值
end结束值
var临时变量
step步长
varStatus循环状态对象,index容器中元素的索引,从0开始.count循环计数,从1开始
遍历容器
items容器对象
var容器中元素的临时变量
varStatus循环状态对象,index容器中元素的索引,从0开始.count循环计数,从1开始

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <title>test</title>
</head>
<body>
<%
    ArrayList list = new ArrayList();
    list.add(new User("张三",24,new Date()));
    list.add(new User("李四",23,new Date()));
    list.add(new User("王五",21,new Date()));
    request.setAttribute("list",list);
%>
<table border="1" width="500" align="center">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>生日</th>
    </tr>
    <c:forEach items="${list}" var="user" varStatus="s">
        <tr>
            <td>${s.count}</td>
            <td>${user.name}</td>
            <td>${user.age}</td>
            <td>${user.date}</td>
        </tr>
    </c:forEach>
</table>
</body>
</html>
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服