Jsp2.0自定义标签(第三天)——EL表达式的使用
1、提出问题:
我们经常会看到这样的jsp页面代码:
浏览器显示:
为什么会在页面输出:Hello World ,${per}究竟是如何找到“Hello World”的呢?
2、分析问题:
要想解决上述疑问,首先要试试自己能不能自定义出上面的标签。
比如我想定义<myout:demo print="${per}"/>拥有打印出EL表达式值的功能。
同前面几章一样,自定义标签我分为几个部分:
第一部分:定义标签的地方(*.tld)。
<?xml version="1.0" encoding="utf-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>myout</short-name>
<!-- 这就是比上面的demo.tld文件多添加了一行 -->
<uri>/demo</uri>
<tag>
<name>demo</name>
<tag-class>com.tag.support.ElTagDemo</tag-class>
<body-content>empty</body-content>
<attribute>
<name>print</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
第二部分:tld文件中的实现类
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class ElTagDemo extends SimpleTagSupport{ private String print; public String getPrint() {
return print;
} public void setPrint(String print) {
this.print = print;
} @Override
public void doTag() throws JspException, IOException {
this.getJspContext().getOut().write(print.toString());
} }
第三部分:前台页面。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="myTag" uri="/demo" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setAttribute("per","Hello World");
%>
<myTag:demo print="${per}"/>
</body>
</html>
浏览器显示:
就这么简单
注意:这里直接把"per"(姑且成为key)在作用域中对应的值“Hello World”(姑且叫value)赋给了属性print,所有在后台直接打印print属性就行了。
但是这与前面第二天的例子不一样,前面是把“arr”字符串赋给了属性items,所以要取出”arr”对应的值还要通过
调用jspContext.getAttribute(items);方法,这里要注意一下。
扩充:如果前台页面变成这样呢?看代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="myTag" uri="/demo" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
UserInfo user = new UserInfo();
user.setName("jack");
user.setAge(11);
request.setAttribute("per",user);
%>
<myTag:demo print="${per}"/>
</body>
</html>
这样在后头自定义标签处理类中就要把print的类型定义为UserInfo
Jsp2.0自定义标签(第三天)——EL表达式的使用的更多相关文章
- Jsp2.0自定义标签(第二天)——自定义循环标签
今天是学习自定义标签的第二天,主要是写一个自定义的循环标签. 先看效果图: 前台页面Jsp代码 <%@ page language="java" contentType=&q ...
- Jsp2.0自定义标签(第一天)——一个简单的例子
今天是学习自定义标签的第一天 Jsp2.0以来,自定义标签的实现比传统标签的实现容易了很多,一般只要extends类SimpleSupport重写doTag()方法即可. 先看最简单的例子,输出一个H ...
- JSP2.0自定义标签
JSP1.0中可以通过继承TagSupport或者BodyTagSupport来实现自定义的tag处理方法. JSP2.0中也支持另外一种更为简单的自定tag的方法,那就是直接讲JSP代码保存成*.t ...
- JSP2的自定义标签和方法
Jsp2的自定义标签 Jsp2 开发标签库的几个步骤: 开发自定义标签处理类. 建立一个*.tld文件,每个tld文件对应一个标签库,每个标签库可对应多个标签. 在jsp文件中使用自定义标签 空标签 ...
- day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)
day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件 ...
- EL表达式和JSTL(三)——EL表达式
在JSP的开发中,为了获取Servlet中存储的数据,通常需要很多的Java代码,这样的做法使的JSP页面非常混乱,为此,JSP2.0中提供了一种EL规范,是一种简单的数据访问语言. 1.初识EL E ...
- JSP2.2自定义标签、EL函数
简介 JSTL是一个JSP标准标签库,可以解决大部分问题,但是如果我们需要一些更特殊的功能,就需要自定义类似JSTL中标签的标签.如果EL表达式无法满足我们的需求,我们也可以自定义EL函数. tld后 ...
- JSP2 的自定义标签
在 JSP 中开发标签库只需如下几个步骤 1.开发自定义标签处理类 2.建立一个 *.tld 文件,每个 *.tld 文件对应一个标签库,每个标签库可包含多个标签 3.在 JSP 文件中使用自定义标签 ...
- freemarker自定义标签(三)-nested指令
freemarker自定义标签 1.nested指令 是可选的,可以在<#macro>和</#macro>之间使用在任何位置和任意次数 2.示例说明 <#macro ta ...
随机推荐
- day20 Django Models 操作,多表,多对多
1 Django models 获取数据的三种方式: 实践: viwes def business(request): v1 = models.Business.objects.all() v2 = ...
- 【Longest Substring Without Repeating Characters】cpp
题目: Given a string, find the length of the longest substring without repeating characters. For examp ...
- linq本质扩展方法+lambda表达式
string[] names = { "aa","bb","cc","dd"}; /* IEnumerable<s ...
- Log4j官方文档翻译(六、日志的级别)
org.apache.log4j.Level 类提供了下面几种日志级别,你也可以通过继承这些类,自定义级别 ALL 所有日志级别都包括 DEBUG 指定信息事件的粒度是DEBUG,在调试应用的时候会有 ...
- arcgis engine10.1和arcObjects的一些问题
1.arcengine10.1只支持vs2010 2.10.1以后没有engine runtimes,改成engine了,以前的engine可以理解为Arcobject,就是我们可以只装AO
- 5-Dalvik垃圾收集机制Cocurrent GC
Dalivik垃圾回收收机制Cocurrent GC简介和学习计划 导语: 在C/C++中,开发者需要手动地管理在堆中分配的内存,但是这往往导致很多问题. 1. 内存分配之后忘记释放,造成内存泄漏. ...
- Java众神之路(2)-标志符
标志符 1.1标志符:用来标志类名.变量名.方法名.类型名.文件名的有效字符序列成为标志符. 1.2命名规则: Java语言规定标志符由字母(a-zA-Z).下划线(_).美元符号($)和数字(0-9 ...
- UVA 11991 vector
Though Rujia Liu usually sets hard problems for contests (for example, regional contests likeXi’an 2 ...
- docker集群之swarm
1.swarm是什么? Swarm是Docker公司自研发的容器集群管理系统,Swarm在早期是作为一个独立服务存在,在Docker Engine v1.12中集成了Swarm的集群管理和编排功能.可 ...
- Treblecross(uva 10561)
题意:一个 1 × n 的棋盘,有 X 和 :,当棋盘上出现三个连续的X 时游戏结束,两人轮流操作,每次能把一个 : 变成 X,问先手必胜方案数以及先手可以放的位置. /* 对于先手,当有一个'X'时 ...