浅谈JSP(二)
一、EL表达式
作用:从作用域(pageContext,request,session,application)中取值,并显示在页面中。
本质:用于替换输出脚本(<%= %>)。
1、从作用域中取基本类型|字符串的值
request.setAttribute("key","value");
${requestScope.key}--------->字符串value将输出在页面中。
ps、EL表达式取命名属性时,若命名属性不存在,则不显示任何内容。而用输出脚本+内置对象取值时,则显示null。
session.setAttribute("key","value");
${sessionScope.key}---------->字符串value将输出在页面中。
application跟pageContext同理。
${key} //这种情况的话,会从pageContext,request,session,application作用域依次查找,一旦发现,则直接将内容输出在页面中。
2、从作用域中取对象的内容进行显示
reqeust.setAttribute("people",people);
${requestScope.people.name};
${requestScope.people.age};
ps、.name和.age的操作,EL表达式会自动调用people对象的getName()和getAge()方法。EL表达式只认方法,不认这个属性是否为这个对象的属性。
3、运算
a、算数运算(+、-、*、/、%)
request.setAttribute("age",10);
${requestScope.age+1}-------->在页面输出11
b、比较运算(>、>=、<、<=、==、!=)
request.setAttribute("age",10);
${requestScope.age>11}--------->在页面输出false
c、逻辑运算(&&、||、!)
${true&&true}------->在页面输出true
d、empty运算
作用是:用于判断这个明明属性是否存在。
${empty requestScopte.name}-------->存在:true,不存在:false
4、EL表达式中的特殊内置对象
a、pageContext(属于jsp的内置对象,在EL表达式中可以直接使用,其他的jsp内置对象均需要通过pageContext来获得)
${pageContext.request.contextPath} //获取动态应用名
b、param(基本没用)
可以在EL表达式中获取用户client提交的数据。
${param.name}
c、cookie
可以再EL表达式中直接获取cookie的内容。
${cookie.JSESSIONID.value}
二、JSTL(java stander tag lib)java标准标签库
作用:与EL表达式一起配合在JSP中显示数据。
1、显示数据的几种方式
a、显示单个数据
b、有条件的显示数据
c、显示多条数据
2、JSTL的开发步骤
准备阶段:<%taglib uri="http://java.sun.con/jsp/core" prefix="c"%>
a、显示单个数据(8中基本类型+String+对象的属性)
EL表达式直接负责
b、有条件的显示数据
<c:if test="EL表达式">
你好。
</c:if>
类似于java代码中的if语句,当test=""中的内容为true时,便签体内的"你好"才会输出到页面中。
<c:choose>
<c:when test="">
你好。
</c:when>
<c:when test="">
再见。
</c:when>
</c:choose>
类似于条件分支,满足哪个分支,输出哪个分支中的内容。
c、显示多个数据(用于显示数组、集合)
<c:forEach var="当前遍历集合中的元素" items="EL表达式(被遍历集合或者数组)">
${当前遍历集合中的元素}
</c:forEach>
ps、遍历Map时,var中定义的是key=value的组合,应用${当前遍历集合中的元素.key}来取key得值,用${当前便立即和中的元素.value}来取value的值。例如:
<c:forEach var="u" items="${requestScope.users}">
${u.key}======${u.value.name}
</c:forEach>
遍历状态:
<c:forEach var="" items="" varStatus="s">
${s.count} //当前遍历的次数
${s.index} //当前遍历的下标
${s.first} //当前是不是第一次遍历 ture|false
${s.last} //当前是不是最后一次遍历 true|false
</c:forEach>
<c:forEach step="" begin="" end="">
</c:forEach>
step步幅、begin遍历开始下标、end遍历结束下标。
d、<c:url>标签
处理url连接,需要把书写的URL内容都放置到这个标签当中。
目的:如果用户禁用cookie的话,这个标签会自动完成url重写。
<c:url context="${pageContext.request.contextPath}" value="/xxxx/action">
浅谈JSP(二)的更多相关文章
- 【sql注入】浅谈JSP安全开发之SQL注入
[sql注入]浅谈JSP安全开发之SQL注入 本文转自:i春秋社区 前言不管是用什么语言编写WEB应用程序,他们都或多或少有一些地方存在漏洞.如果你想知道漏洞的运行原理,和防御方案,那么请看完本篇文章 ...
- Android开发-浅谈架构(二)
写在前面的话 我记得有一期罗胖的<罗辑思维>中他提到 我们在这个碎片化 充满焦虑的时代该怎么学习--用30%的时间 了解70%该领域的知识然后迅速转移芳草鲜美的地方 像游牧民族那样.原话应 ...
- 浅谈Struts2(二)
一.struts2的跳转 1.action跳转JSP a.默认为forward <action name="action1" class="com.liquidxu ...
- 浅谈JSP(一)
一.JSP引言 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计.它是在传统的网页HTML文件(*.htm,*.html)中插入Java ...
- 【安全开发】浅谈JSP安全开发之XSS
前言 大家好,好男人就是我,我就是好男人,我就是-0nise.在各大漏洞举报平台,我们时常会看到XSS漏洞.那么问题来了,为何会出现这种漏洞?出现这种漏洞应该怎么修复?目录 1.XSS ...
- Salesforce Consumer Goods Cloud 浅谈篇二之门店产品促销的配置
本篇参考:https://documentation.b2c.commercecloud.salesforce.com/DOC1/index.jsp?topic=%2Fcom.demandware.d ...
- 浅谈JSP中include指令与include动作标识的区别
JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...
- 浅谈JSP注释
HTML注释 JSP文件是由HTML尿急和嵌入的Java程序片段组成的,所以在HTML中的注释同样可以在JSP文件中使用.注释格式:<!--注释内容--> <!-- 欢迎提示信息! ...
- Qt浅谈之二十七进程间通信之QtDBus
一.简介 DBus的出现,使得Linux进程间通信更加便捷,不仅可以和用户空间应用程序进行通信,而且还可以和内核的程序进行通信,DBus使得Linux变得更加智能,更加具有交互性. DB ...
随机推荐
- Umbraco扩展开发
国内Umbraco方面的资料很少,搜集到一些国外的优秀项目或插件.记录下来,便于日后使用: backoffice:https://github.com/TimGeyssens 后台扩展UI,可以在这里 ...
- 当你还在争夺移动支付的时候,我已经统一了IC卡市场
摘要:虽然说今年移动支付行业的发展很快:苹果.Twitter和Facebook等巨头都开始进军这个市场,再加上PayPal.Coin和Square几个“老玩家”的存在,使得今年的移动支付市场热闹非凡. ...
- Windows 7 with SP1简体中文旗舰版(微软MSDN原版)+ 激活密钥
在Windows 7六个版本中,旗舰版和企业版功能性能完全一样,同属诸版本之中的最高版本.现提供Windows 7 with SP1简体中文旗舰版(微软MSDN最新原版)+ 激活密钥如下: 32位版本 ...
- Windows平台内核级文件访问
1.背景 在windows平台下,应用程序通常使用API函数来进行文件访问,创建,打开,读写文件.从kernel32的CreateFile/ReadFile/WriteFile函数,到本地系统 ...
- VC中利用多线程技术实现线程之间的通信
当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软 ...
- LeetCode第四题,Add Two Numbers
题目原文: You are given two linked lists representing two non-negative numbers. The digits are stored in ...
- MySQL数据处理函数
数据处理函数 有时从数据库表中获取到的数据须要进行一些处理. 如将小写字母替换为对应的大写字母.这个处理过程能够在客户机上进行.也能够在数据库上进行. 数据库上进行会更高效.数据库中有对应的数据处理函 ...
- javascript 获取调用属性的对象
最近碰到一个javascript 的小问题,是和闭包有关的,来自cnode 论坛,很有意思. var o = (function() { var person = { name: 'Vincent', ...
- Ajax或JS动态添加的元素,Jquery效果不起作用
问题: 最近在做一个Ajax分页的功能,遇到一个问题 一开始jquery效果是可用的,但是,ajax执行一次之后,jquery效果就无效了. 解决办法: 可以添加live事件来解决 W3C关于live ...
- SQL 递归 可以用于权限查找。迭代自身没有用递归函数。
昨晚看的书,发现可以用T-SQL 实现自定义递归,其实也就是变相的 foreach 直接上代码 ,不懂得可问: ),col int ) -- id 增量id pid该数据的上级增量id name 名称 ...