JAVA学习JSTL与EL
一、基础
1、EL(Expression Language):为了使jsp写起来更加简单,提供了在Jsp中简化表达式的方法
2、JSTL:(JSP Standard Tag Library)jstl标准标签库,由apache实现
3、JSTL一般要配合EL表达式一起使用,由于在JSTL在赋值时会大量的使用EL,能够说EL是JSTL的一种辅助。
4、在使用时:JSTL须要引入:jstl.jar和Standart.jar到WEB_INF/lib文件夹下,可是仅仅使用EL表达式不须要引用不论什么jar包,仅仅要JSP/SERVLET容器实现了J2EE1.4/Servlet2.4、Jsp2.0规范就能够。
二、为什么
在之前学习jsp的时候也说过是为了将html代码和java代码分离,可是大部分时候假设不进行限制,在jsp中调用java逻辑类是非常难避免的,所以我们有了JSTL来实现表示层与业务逻辑的分离,我们能够通过JSTL实现:与servlet数据的交互,操作xml,格式化数据显示和样式显示,Request中读取数据,循环,自己定义函数等等
三、EL表达式:
1、基本的语法:${}:例:hello:${hello}<br>
2、内置对象:pageScope,requestScope,sessionScope,applicationScope(按默认搜索顺序排列)
3、指定搜索:${requestScope.hello}
4、简单实例:
事实上EL非常easy
首先我们要写的是servlet:servlet的代码例如以下:
- package com.tgb.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 YoungJong
- *
- */
- public class JstlElServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
- // TODO Auto-generated method stub
- //super.doGet(req, resp);
- //普通字符串
- req.setAttribute("hello", "Hello World");
- //结构
- Group group=new Group();
- group.setName("陈丽娜好样的");
- User user=new User();
- user.setUsername("杨政");
- user.setAge(29);
- user.setGroup(group);
- req.setAttribute("user", user);
- //map
- Map map=new HashMap();
- map.put("k1", "v1");
- map.put("k2", "v2");
- req.setAttribute("map", map);
- //数组
- String[] strArray=new String[]{"a","b","c"};
- req.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);
- }
- req.setAttribute("users", users);
- //list
- List userList=new ArrayList();
- for(int i=0;i<10;i++){
- User userl=new User();
- userl.setUsername("李四_"+i);
- userList.add(userl);
- }
- req.setAttribute("userList",userList);
- req.getRequestDispatcher("/jstl_el.jsp").forward(req, resp);
- }
- }
以下是在jsp中获取的方法:
- <body>
- <h1>測试EL表达式</h1>
- <hr>
- <li>普通字符串</li><br>
- hello(jsp脚本):<%=request.getAttribute("hello") %><br>
- hello(el表达式,语法:$和{}):${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]:${userList[6].username }<br>
- <p>
- <li>表达式对运算符的支持</li><br>
- 1+1=${1+1 }<br>
- 10/5=${10/5 }<br>
- 10 % 3=${10 % 3 }<br>
- 10 mod 3=${10 mod 3 }<br>
- </body>
效果截图:
四、JSTL核心库:
尽管EL非常easy,可是他的功能有限,比如:针对返回空值EL没有办法控制,循环输出数组元素,假设结合JSTL就不用再操心这些问题了。
经常使用的JSTL标签有非常多比如:<c:out><c:if><c:choose><c:forEach>等等
这里就不一一介绍,以下介绍一个EL与JSTL的结合带来的便利:
简单实例:首先是Servlet的代码:
- package com.tgb.jstl;
- import java.io.IOException;
- import java.io.PrintWriter;
- 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;
- public class JstlCoreServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- //普通字符串
- request.setAttribute("hello", "Hello World");
- //HTML字符串
- request.setAttribute("welcome", "<font color='red'>欢迎你来到这个世界!</font>");
- //结构
- Group group = new Group();
- group.setName("提高班");
- List users = new ArrayList();
- for (int i=0; i<10; i++) {
- User user = new User();
- user.setUsername("陈丽娜_" + i);
- user.setAge(18 + i);
- user.setGroup(group);
- users.add(user);
- }
- request.setAttribute("users", users);
- //map
- Map map = new HashMap();
- map.put("k1", "v1");
- map.put("k2", "v2");
- request.setAttribute("map", map);
- request.getRequestDispatcher("/jstl_core.jsp").forward(request, response);
- }
- }
JSP页面的代码:
- <%@ page language="java" contentType="text/html; charset=GB18030"
- pageEncoding="GB18030"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <!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>測试JSTL核心库</h1>
- <hr>
- <li>採用c:out标签</li><br>
- hello(使用标签):<c:out value="${hello}"/><br>
- hello(使用EL表达式):${hello }<br>
- hello(使用缺省值):<c:out value="${hello123}" default="没有值"/><br>
- welcome(使用EL表达式):${welcome}<br>
- welcome(使用标签,escapeXml=true):<c:out value="${welcome}" escapeXml="true"/><br>
- welcome(使用标签,escapeXml=false):<c:out value="${welcome}" escapeXml="false"/><br>
- <h3>採用forEach标签</h3>
- <table border="1">
- <tr>
- <td>用户名称</td>
- <td>年龄</td>
- <td>所属组</td>
- </tr>
- <c:choose>
- <c:when test="${empty users}">
- <tr>
- <td colspan="3">没有符合条件的数据</td>
- </tr>
- </c:when>
- <c:otherwise>
- <c:forEach items="${users}" var="user">
- <tr>
- <td>${user.username }</td>
- <td>${user.age }</td>
- <td>${user.group.name }</td>
- </tr>
- </c:forEach>
- </c:otherwise>
- </c:choose>
- </table>
- <p>
- <li>演示循环控制标签:forEach,输出map</li><br>
- <c:forEach items="${map}" var="entry">
- ${entry.key },${entry.value }<br>
- </c:forEach>
- <p>
- </body>
- </html>
当中要注意的是要引入:
<%@ tagliburi="http://java.sun.com/jsp/jstl/core" prefix="c"%>
页面显示截图:
使用JSTL与EL的结合分离了页面与逻辑,使得分层更加明白,代码更加清晰。
JAVA学习JSTL与EL的更多相关文章
- Java学习——JSTL标签与EL表达式之间的微妙关系
原文总结的太好了,忍不住记录.转发. 原文地址:http://blog.csdn.net/u010168160/article/details/49182867 目录(?)[-] 一EL表达式 EL相 ...
- Java Web学习笔记之---EL和JSTL
Java Web学习笔记之---EL和JSTL (一)EL (1)EL作用 Expression Language(表达式语言),目的是代替JSP页面中复杂的代码 (2)EL表达式 ${变量名} ( ...
- Java之旅(三)--- JSTL和EL表情
先给大家看一段JSP的代码.看看有什么感受? <% List<UsEL> usELList = pageModel.getList(); for (ItELator<Us ...
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...
- JavaWeb学习----JSTL标签库
一.JSTL简介: JSTL全名为JavaServer Pages Standard Tag Library,中文名称为JSP标准标签函数库,目前最新的版本为1.2.JSTL是由JCP(Java Co ...
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出. 1,JSTL标签总结: a).JSTL标签有什么用? JSTL是由JCP(Java Commu ...
- java学习路线(好资源大家分享)
对于入门java将近两年的时间,曾经迷惘过,一直想知道java的具体学习路线,看过了许许多多的java经验分享的帖子,评论,以及其他各种培训机构所谓的学习路线,发现没有一个符合我个人需求的学习路线,根 ...
- JSTL与EL常用标签(转)
JSTL与EL EL相关概念 JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段.所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作:它不是编程 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
随机推荐
- AIX下RAC搭建 Oracle10G(四)安装CRS
AIX下RAC搭建系列 AIX下RAC搭建Oracle10G(四)安装CRS 环境 节点 节点1 节点2 小机型号 IBM P-series 630 IBM P-series 630 主机名 AIX2 ...
- TR90眼镜_百度百科
TR90眼镜_百度百科 TR90眼镜
- A Game of Thrones(10) - Jon
Jon climbed the steps slowly, trying not to think that this might be the last time ever. Ghost padde ...
- poj3295 Tautology , 计算表达式的值
给你一个表达式,其包括一些0,1变量和一些逻辑运算法,让你推断其是否为永真式. 计算表达式的经常使用两种方法:1.递归: 2.利用栈. code(递归实现) #include <cstdio&g ...
- NYOJ 284 坦克大战 【BFS】+【优先队列】
坦克大战 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 Many of us had played the game "Battle city" ...
- java与c/c++进行socket通信
比如Server端只接收一个结构Employee,定义如下: struct UserInfo { char UserName[20]; int UserId; }; struct Employ ...
- C#如何在钉钉开发平台
C#如何在钉钉开发平台中创建部门 钉钉是阿里巴巴专为中小企业和团队打造的沟通.协同的多端平台,钉钉开放平台旨在为企业提供更为丰富的办公协同解决方案.通过钉钉开放平台,企业或第三方合作伙伴可以帮助企 ...
- Jersey框架三:Jersey对HTTPS的支持
Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的 ...
- SWT的选择文件和文件夹的函数
org.eclipse.swt.widgets.DirectoryDialog//选择目录org.eclipse.swt.widgets.FileDialog//SWT.OPEN打开文件 SWT.SA ...
- [置顶] ios 时间定时器 NSTimer应用demo
原创文章,转载请注明出处:http://blog.csdn.net/donny_zhang/article/details/9251917 demo功能:ios NSTimer应用demo .ipho ...