自定义标签:

package cn.hv.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport; public class BodyTag extends BodyTagSupport { private String model;
private int pc ; public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
return model.equals("yyt") ? super.EVAL_BODY_INCLUDE : super.SKIP_BODY;
} public int doAfterBody() throws JspException {
if(pc > 0 ){
pc--;
return super.EVAL_BODY_AGAIN;
}
return super.SKIP_BODY;
} public String getModel() {
return model;
} public void setModel(String model) {
this.model = model;
} public int getPc() {
return pc;
} public void setPc(int pc) {
this.pc = pc;
} }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>c</short-name>
<tag>
<name>enable</name>
<tag-class>cn.hv.tag.BodyTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>model</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>pc</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
<jsp-config>
<taglib>
<taglib-uri>/web-html</taglib-uri>
<taglib-location>
/WEB-INF/web-html.tld
</taglib-location>
</taglib>
</jsp-config>

以上就是自定义标签:

web.xml :配置自定义的标签文件

EVAL_BODY_INCLUDE:显示标签体内

EVAL_BODY_AGAIN:循环

SKIP_BODY:不执行body体里面的内容

SKIP_PAGE:

本质:就是控制组件化,但是在我目前的项目中使用的较少,我们都是结合数据库表设计权限系统,前台基于JS做菜单以及按钮,页签的权限控制

===========================================================================================

场景:

  1.<c:permission menus=${lists} val=><li></li></c:permission>

  2.<% if %>html代码<% else %>html代码<%}%> 一般都是基于这种控制html输出

  3.JS创建组件,完全前台控制

===========================================================================================

最新文章

  1. hadoop错误之ClassNotFoundException
  2. WPF 复制和粘贴
  3. Redis基础知识之—— 5个必须了解的事情【★★★★★】
  4. 重构6-Push Down Field(字段下移)
  5. linux使用getopt解析参数
  6. C++图结构的图结构操作示例
  7. C# 热水器
  8. Linux下给mysql创建用户分配权限
  9. CCF-出现次数最多的数
  10. struts2-请求参数校验
  11. T470p VS 2017 上运行 VS 2015 + Qt 5.6.2 + GLSL 400
  12. Python第一天:你必须要知道的Python擅长领域以及各种重点学习框架(包含Python在世界上的应用)
  13. Java中String和byte[]间的转换浅析
  14. mongodb集群配置副本集
  15. freemarker特殊字符转义
  16. gitlab ssh clone问题解决
  17. 批量下载,多文件压缩打包zip下载
  18. 怎么查看mysql的数据库编码格式
  19. 【java编程】java对象copy
  20. Kubenertes资源分配之Request和Limit解析

热门文章

  1. shell 交互式选择(select)
  2. [Kafka] - Kafka Java Consumer实现(二)
  3. baseCss/resetCss(转)
  4. Linux下启动关闭weblogic
  5. @Query 注解实现查询(二十四)
  6. oracle用户 密码永不过期
  7. C primer plus 5 读书笔记2
  8. Android Studio 编译报错:Process &#39;command &#39;D:\SDK\AS\sdk\build-tools\23.0.0\aapt.exe&#39;&#39; finished with non-zero exit value 1
  9. Beta阶段第2周/共2周 Scrum立会报告+燃尽图 10
  10. zend 2.2 db select 使用例子