美文网首页
EL&JSTL&MVC

EL&JSTL&MVC

作者: NextGame | 来源:发表于2016-06-12 22:21 被阅读83次

EL&JSTL&MVC

EL表达式


  • 概念

表达式语言

  • 目的

获取作用域中的共享数据

  • 语法

${属性名称} ---> ${msg}

<%
  // 设置不同作用于的共享数据
  pageContext.setAttribute("msg", "pageContextValue");
  request.setAttribute("msg", "requestValue");
  session.setAttribute("msg", "sessionValue");
  application.setAttribute("msg", "applicationValue");
%>

  // 获取不同作用域中,同属性名的属性值
  pageContext:${pageScope.msg}
  request:${requestScope.msg}
  session:${sessionScope.msg}
  application:${applicationScope.msg}
  • EL隐藏对象
类别 标识符 描述
JSP pageContext PageContext处理当前页面
作用域 pageScope 同页面作用域属性名称和值有关的Map类
作用域 requestScope 同请求作用域属性的名称和值有关的Map类
作用域 sessionScope 同会话作用域属性的名称和值有关的Map类
作用域 applicationScope 同应用程序作用域属性的名称和值有关的Map类
  • EL中访问JavaBean属性方式
    • 使用.来访问
    • 使用[]来访问
${对象.属性名}--->对象.getXxx,注意必须提供getter方法
若操作的是Map:${对象.key}
比如:${u.userName} 等价于 ${u["username"]}
  • EL表达式的细节
    • 获取上下文路径

表单中的action属性组成部分:上下文路径 + 资源名称如果我们在页面写死的话,上下文路径改动之后,所有的表单都要修改

EL表达式获取上下文路径的方式

// 方式一
// 使用EL表达式的内置对象pageContext可以动态获取到上下文路径
${pageContext.request.contenPath}
// 方式二Servlet3.0以后,EL表达式支持直接访问
${pageContext.getRequest().getContextPath}

JSTL


使用JSTL来解决JSP中的Java代码

  • 使用步骤
    • 导入jstl.jarstandard.jar
    • 引入标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/cor" prefix="c"%>

  • JavaWeb开发需要的最少的jar包
el-api.jar
jsp-api.jar
servlet-api.jar
jstl.jar
standard.jar

JSTL的逻辑判断标签

  • 单条件的判断

    • <c:if>不包含内容
    • <c: if>包含内容
// 包含内容
<c:if test="checkCondiction" var="varName" scope="page|request|session|application">
    body content
</c :if>

// 不包含内容
<c:if test="checkCondiction" var="varName" scope="page|request|session| application />
  • 示例代码
<%
  Integer age = 18;
  request.setAttribute("age", age);
%>

<!--
  var : 存储条件表达式的结果,在applicationScope作用域中
  scope : 指定将结果存储到哪个作用域中
-->

<c:if test="${age>=18}" var="ret" scope="application">
  成年人-->${applicationScope.ret}
</c:if>
  • 多条件判断:(choose-when-other)相当于Java中的if-elseif-elseif-else

    • 示例代码
<%
  Integer age = 18;
  request.setAttribute("age", age);
%>

<c:choose>
  <c:when test="${age>=18}">
    成年人
  </c:when>
  <c:otherwise>
    未成年人
  </c:otherwise>
</c:choose>
  • 循环遍历标签(foreach)
    • 作用

用来对一个collection集合中的一系列对象进行迭代输出,并且可以指定迭代次数

  • 使用方法
<!--
  items:要迭代的集合,通常是保存在作用域中,所以需要使用EL表达式取值
  var:迭代出的每个元素存储的变量,每个迭代出来的元素都保存在pageScope中
-->
<c:forEach items="collection" var="varName">
    Body content
</c:forEach>

<!--
  需求:在页面中输出一串数字 1,2,3,4,5,6,7,8,9,10
  begin : 开始的数字
  end : 结束的数字
  step : 步长,默认为1
-->
<c:forEach var="varName" [begin="begin"] [end="end"] [step="step"]>
  ${varName}
</c:forEach>

<c:forEach var="pageIndex" step="1" begin="1" end="10">
  ${pageIndex}
</c:forEach>
  • <c:forEach>标签的属性
属性 类型 意义
index number 现在指到成员的索引
count number 总共指到成员的总和
first boolean 现在指到的成员是否为第一个
last boolean 现在指到成员是否为最后一个
  • 示例代码
<%
  List<String> list = new ArrayList<String>();
  list.add("O.z");
  list.add("Will");
  list.add("Tim")
%>

<c:forEach items="${list}" var="item" varStatus="vs">
  ${vs.count} --> ${pageScope.item}<br />
</c:forEach>

<c:forEach begin="1" end="10" var="num" step="2">
  ${num}
</c:forEach>
  • 日期格式化标签
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<%
  request.setAttribute("date", new Date());
%>

<fmt:formateDate value="${date}" pattern="yyyy/MM/dd HH:mm:ss" />

相关文章

  • EL&JSTL&MVC

    EL&JSTL&MVC EL表达式 概念 表达式语言 目的 获取作用域中的共享数据 语法 ${属性名称} --->...

  • JSP中 EL&JSTL

    【JSP的脚本】Ø <%! %> :翻译成Servlet中的成员内容. 定义变量,方法,类. -...

  • Spring MVC书目录

    MVC历史 MVC概念 为什么会出现MVC框架 常用的MVC框架 MVC模型的发展轨迹 简述Spring MVC的...

  • SpringMVC之MVC与Servlet

    一、MVC与Servlet 目录:MVC、Model时代、Servlet 1.MVC MVC是模型(Model)、...

  • iOS-MVC

    本文,包含了关于MVC的如下内容: 一、MVC介绍二、MVC的改进三、MVVM简评 一、MVC的介绍 MVC,全称...

  • 关于MVC MVP MVVM架构模式的总结

    一、MVC 首先关于MVC:MVC是苹果官方推荐的模式结构,MVC即 Model View Controller,...

  • 标签特性

  • spring mvc常见面试题

    什么是spring mvc , 谈谈对spring mvc的理解 spring mvc 是基于java实现的mvc...

  • 四、Spring——Spring MVC

    Spring MVC 1、Spring MVC概述 Spring MVC框架围绕DispatcherServlet...

  • Joomla-book/1.2-Joomla! 中关于MVC的解

    Joomla! 中关于MVC的解释 Introduction to MVC MVC is a software d...

网友评论

      本文标题:EL&JSTL&MVC

      本文链接:https://www.haomeiwen.com/subject/dpxydttx.html