Jsp标签
来源:互联网 发布:兄弟连培训php学费多少 编辑:程序博客网 时间:2024/05/18 02:32
前面我们即使用MVC模式开发,jsp页面中还是会有很多scriptlet代码,和html标签混合,显得有些难以维护,如果想要编写具有更高可维护性的代码,那么我们就要用到jsp标签了。
怎样使用Jsp标签呢?
首先编写一个继承自javax.servlet.jsp.tagext.TagSupport类的java类,如果没有标签体,那么只需要重写doStartTag()方法即可:
通过TagSupport里的pageContext取得Jsp页面的输出流,此处返回的TagSupport.SKIP_BODY表示不执行标签体。
然后编译他,如果使用javac进行编译的话会出现找不到类的异常,因为javac使用的是Java SE,而TagSupport是属于Java EE的范畴,所以我们需要把%Tomcat%\lib下的jsp-api.jar在classpath中配置上,或者把这个jar包放在jdk的lib文件夹下。
第二步就是定义标签库描述文件TLD(Tag Library Descriptor):
第三步就是在jsp页面中使用它:
其中的prefix是在此页中可以使用的指向,就像JavaBean的id一样,冒号后面就是具体的tag的名字。
在这里把tld文件放在了WEB-INF下,如果放在WEB-INF/tags下,就会出现ClassNotFound异常或者提示tld文件出错,这是因为tags是自定义的文件夹,和classes不一样,Tomcat不会去寻找。这时我们就要配置web.xml:
这时我们jsp引用的时候就写:
之前我们使用的标签还可以添加属性,那么我们自定义的当然也可以,他的原理还是根据反射去实现的,所以我们只需要在继承自TagSupport的类里添加局部变量和相关的getter、setter方法即可:
然后定义它的tld文件:
注意attribute标签里的required表示必须要设置此属性,rtexprvalue为true表示支持表达式输出,false则表示不支持。
如果设置了为TRUE,那么可写成:
或者
当然还有配置路径:
关于TagSupport类:
Tag接口的执行流程是:
IterationTag接口的执行流程是:
可以看得出,这俩接口的主要区别就是,IterationTag接口多了可以重复执行标签体的一步,doAfterBodyTag方法主要是决定是否再一次执行标签体,什么是标签体:
- JSP标签
- jsp标签
- jsp标签
- JSP标签
- JSP标签
- JSP标签
- JSP 标签
- jsp标签
- JSP标签
- Jsp标签
- jsp标签
- jsp标签
- jsp标签
- jsp标签
- jsp标签
- JSP标签
- jsp标签
- jsp标签
- 分布式--案例(下)
- AO二次开发环境搭建
- HTML中常用的js技巧和方法
- nginx启用ssl模块以支持https
- 禁用idea的QL检查
- Jsp标签
- 等待一个消息队列中的消息,OSQPend()
- 开源 java CMS
- android_阿里WEEX js文件与原生代码数据交互
- 51nod 1085 背包问题
- 返回引用的两数相加
- 通配符选择器(理解)
- zookeeper入门系列-理论基础-zab协议
- 每天一个Linux命令(28): 详解/etc/group文件