EL技术

EL 表达式概述

EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本(java代码)的编写。

EL从域中取出数据(EL最重要的作用)

jsp脚本:<%=request.getAttribute(name)%>

①EL表达式替代上面的脚本:${requestScope.name}

②EL最主要的作用是获得四大域中的数据,格式${EL表达式}

③EL获得pageContext域中的值:${pageScope.key};

④EL获得request域中的值:${requestScope.key};

⑤EL获得session域中的值:${sessionScope.key};

⑥EL获得application域中的值:${applicationScope.key};

EL从四个域中获得某个值${key};

---同样是依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找

1)获得普通字符串

2)获得User对象的值

3)获得List<User>的值

<!-- 模拟域中的数据 -->

<%

   pageContext.setAttribute("name", "pageContxt");

   //存储字符串

   request.setAttribute("name", "request");

   //存储一个对象

   Users user=new Users();

   user.setId(1);

   user.setUsername("lisi");

   user.setPwd("123");

   session.setAttribute("user", user);

   //存储一个集合

   List<Users> list=new ArrayList<Users>();

   Users user1=new Users();

   user1.setId(1);

   user1.setUsername("wangwu");

   user1.setPwd("123");

   list.add(user1);

   Users user2=new Users();

   user2.setId(1);

   user2.setUsername("zhaoliu");

   user2.setPwd("123");

   list.add(user2);

   application.setAttribute("List", list);

%>

<hr>

<!-- 使用脚本取出域中的值 -->

<%=request.getAttribute("name") %>

<%Users u=(Users)session.getAttribute("user");

   out.write(u.getUsername());

%>

<hr>

<!-- 使用EL表达式取出域中的值 -->

${requestScope.name}

${sessionScope.user.username}

${applicationScope.List[0].pwd}

<hr>

<!-- 使用el表达式 全域查找(会从最小的找,底层就是findAttribute()) -->

${name }

${user.username}

${List[0].pwd}

EL的内置对象11个

①pageScope,requestScope,sessionScope,applicationScope

---- 获取JSP中域中的数据

②param,paramValues      - 接收参数.

相当于request.getParameter()  request.getParameterValues()

③header,headerValues      - 获取请求头信息

相当于request.getHeader(name)

④initParam     - 获取全局初始化参数

相当于this.getServletContext().getInitParameter(name)

⑤cookie     - WEB开发中cookie

相当于request.getCookies()---cookie.getName()---cookie.getValue()

Form.html

<form action="/WEB02/form.jsp" method="get">

   <input type="text" name="username">

   <input type="text" name="password">

   <input type="submit" value="提交">

</form>
Form.jsp

<!-- 获得表单的参数 -->

<%

   request.getParameter("username");

   //.....

%>

<!-- 使用EL获得参数 -->

   ${param.username }

   ${header["User-Agent"] }

   ${cookie.abc.value }

<!-- 通过el表达式获得request对象 -->

   <%--${requestScope } --%>

   ${pageContext.request }
Cookie.jsp

   <%

      Cookie cookie=new Cookie("abc","zhangsan");

      response.addCookie(cookie);

   %>
Index.jsp

<form action="${pageContext.request.contextPath }/form.jsp" method="get">

   <input type="text" name="username">

   <input type="text" name="password">

   <input type="submit" value="提交">

</form>

pageContext   - WEB开发中的pageContext.

pageContext获得其他八大对象

${pageContext.request.contextPath}

EL执行表达式

例如:

${1+1}

${empty user}

${user==null?true:false}

JSTL技术

JSTL概述

JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。

jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。JSTL标准标准标签库有5个子库,但随着发展,目前常使用的是他的核心库

JSTL下载与导入

JSTL下载:

从Apache的网站下载JSTL的JAR包。进入“http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”网址下载  JSTL的安装包。

jakarta-taglibs-standard-1.1.2.zip,然后将下载好的JSTL安装包    进行解压,此时,在lib目录下可以看到两个JAR文件,分别为jstl.jar和standard.jar。

其中,jstl.jar文件包含JSTL规范中定义的接口和相关类,standard.jar文件包含用于 实现JSTL的.class文件以及JSTL中5个标签库描述符文件(TLD)

将两个jar包导入我们工程的lib中

使用jsp的taglib指令导入核心标签库

JSTL核心库的常用标签

1)<c:if test=””>标签

其中test是返回boolean的条件

<%request.setAttribute("count", 10); %>

<!--jstl标签经常会和el配合使用  -->

<!-- test代表的返回boolean的表达式 -->

<c:if test="${count==10 }">

   xxxx

</c:if>
Index.jsp

<!-- 用户没有登陆 -->

<c:if test="${empty user }">

   <a href="login.jsp">登陆</a>

   <a href="register.jsp">注册</a>

</c:if>

<!-- 用户已经登陆 -->

<c:if test="${!empty user }">

   <span>${user.name }</span>

   <a href="#">退出</a>

</c:if>
Ceshi.jsp

<%

   //模拟用户已经登录成功

   User user=new User();

   user.setId(100);

   user.setName("张三");

   user.setPwd("123");

   session.setAttribute("user", user);

%>

2)<c:forEach>标签

使用方式有两种组合形式:

<!-- 模拟增强for  productList---List<Product>

   for(Product product:productList){

      System.out.print(product.getName());

   }

-->
<!-- items:一个集合或数组(从域中选)   var:代表集合中的某一个元素 -->

<c:forEach items="${productList }" var="pro">

   ${pro.name }

</c:forEach>

<c:forEach items = "${map}" var="entry">
${entry.key }->${entry.value.name }<br>
</c:forEach>

事例:

<!-- 取集合list中的值 -->
<c:forEach items="${userlist}" var="user">
${user.name }...${user.age }<br>
</c:forEach>
<!-- 取集合map中的值 -->
<c:forEach items="${usermap }" var="entry">
${entry.key }...${entry.value }<br>
</c:forEach>
<!-- 嵌套取值 -->
<c:forEach items="${usermap}" var="entry">
${entry.key}...${entry.value}<br>
<c:forEach items="${entry.value}" var="entry1">
${entry1.key}...${entry1.value}<br>
</c:forEach>
</c:forEach>
<!-- 打印三角形 -->
<c:forEach begin="0" end="4" var="i">
<c:forEach begin="0" end="${i }" var="j">
<%System.out.print("*");%>
</c:forEach>
<%System.out.println();%>
</c:forEach>

动态页面技术(EL/JSTL)的更多相关文章

  1. 动态页面技术----EL技术、JSTL技术,javaEE的开发模式

    1 EL技术 1.1 EL 表达式 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写, EL出现的目的是要替代jsp页面中脚本的编写,就是简化java代码. ...

  2. 动态页面技术EL

    1.EL概述: EL表达式可以嵌入再JSP页面内部,减少JSP脚本的编写 EL出现的目的是要替代JSP页面中脚本的编写 EL最重要的作用就是从域中取出数据: 引入: JSP中<%=request ...

  3. 动态页面技术JSP/EL/JSTL

    本节内容: jsp脚本和注释 jsp运行原理 jsp指令(3个) jsp内置/隐式对象(9个) jsp标签(动作) EL技术 JSTL技术 JavaEE的开发模式 动态页面技术:就是在html中嵌入j ...

  4. JavaEE之动态页面技术(JSP/EL/JSTL)

    动态页面技术(JSP/EL/JSTL) JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%= ...

  5. java ->动态页面技术(JSP)

    动态页面技术(JSP/EL/JSTL) JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%= ...

  6. JavaWeb之动态页面技术JSP/EL/JSTL

    一.JSP技术 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> - ...

  7. Java第三阶段学习(十四、JSP动态页面、EL表达式、JSTL标签库)

    一.JSP技术 1.jsp脚本和注释 jap脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部,比如写在doget.dopost 内的代码 2) ...

  8. 动态页面技术----JSP技术

    1995年java诞生,没有jsp,只有Servlet, Servlet开发:Servlet上嵌套html代码,非常繁琐. 1998年,出现jsp,方便写html代码,并且可以在html代码中嵌套ja ...

  9. 动态页面技术(JSP)

    JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ----- ...

随机推荐

  1. Nginx配置upstream实现负载均衡1

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  2. 使用Fiddler模拟Post请求

    做了一个动态的GIF来做演示,应该更加直观些. (完)

  3. Cypress与TestCafe WebUI端到端测试框架简介

    近期接触了Cypress和TestCafe,两个测试框架都基于Node.js,都不再使用Selenium+WebDriver,而且开箱即用,非常轻量级,就冲着不再使用WebDriver这一点,极大地勾 ...

  4. 【PyMuPDF和pdf2image】Python将PDF转成图片

    前言: 在最近的测试中遇到一个与PDF相关的测试需求,其中有一个过程是将PDF转换成图片,然后对图片进行测试. 粗略的试了好几种方式,其中语言尝试了Python和Java,总体而言所找到的Python ...

  5. let import export React入门实例教程 connect provider combineReducers 箭头函数 30分钟掌握ES6/ES2015核心内容 Rest babel

    let与var的区别 http://www.cnblogs.com/snandy/archive/2015/05/10/4485832.html es6 导入导出 http://www.csdn.ne ...

  6. HDU 5963 朋友 题解

    题目 B君在围观一群男生和一群女生玩游戏,具体来说游戏是这样的: 给出一棵n个节点的树,这棵树的每条边有一个权值,这个权值只可能是0或1. 在一局游戏开始时,会确定一个节点作为根.接下来从女生开始,双 ...

  7. 洛谷 P2882 [USACO07MAR]Face The Right Way G

    题目传送门 题目描述 Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a row and many of them are facing ...

  8. 微服务框架Demo.MicroServer运行手册

    一.背景说明: 之前分享过一个微服务开发框架, "享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionle ...

  9. MySQL CodeFirst的配置与注意事项

    mysql+ef的配置相比较mssql+ef来说复杂一些.我的感受就是配置难度在于插件版本造成的各种不兼容问题.另外参考了很多博客,将多个博客里的经验综合才得以实现,因为不是每个人的操作都和那些博客作 ...

  10. Window - 安装 ant

    官方下载地址 https://ant.apache.org/bindownload.cgi 旧版下载地址 https://archive.apache.org/dist/ant/binaries/ 挑 ...