自定义封装JSTL标签与EL函数表达式
自定义JSTL标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web Container调用那些操作。
JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。 JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。
你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签。
要创建自定义的JSP标签,你首先必须创建处理标签的Java类。所以,让我们创建一个Myjstl类,如下所示:
package com.inba.maya.filter; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.SimpleTagSupport; public class MyJstl extends SimpleTagSupport { private String userName; public void setUserName(String userName) { this.userName = userName; } @Override public void doTag() throws JspException, IOException { Object obj=this.getJspContext().getAttribute(userName,PageContext.SESSION_SCOPE); if(obj == null){ this.getJspContext().getOut().write("登录 | 注册"); }else{ this.getJspContext().getOut().write("欢迎你"+obj.toString()); } } }
配置tld文件,在WEB-INF\下建立tld文件
接下来,我们就可以在JSP文件中使用user标签:
自定义EL函数表达式
配置tlid文件
创建类:
package com.inba.maya.util; public class MyElUtil { //EL方法的封装 public static String transer(String txt, String cssClass){ txt=txt.replaceAll("&", "&") .replaceAll("<", "<") .replaceAll(">", ">") .replaceAll("\n","</p><p>") .replaceAll("\'", "'") .replaceAll("\"", """); txt="<p class="+cssClass+">"+txt+"</p>"; return txt; } }
使用EL标签