|
使用自定义标签移除jsp页面java代码:
1.编写一个实现tag接口的java类(标签处理器类),并覆盖它的dostarttag方法,然后在该方法中写jsp页面中需移除的java代码
public class ViewIPTag extends TagSupport {//setPageContext
@Override
public int doStartTag() throws JspException {
HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();
JspWriter out = this.pageContext.getOut();
String ip = request.getRemoteAddr();
try {
out.write(ip);
} catch (IOException e) {
throw new RuntimeException(e);
}
return super.doStartTag();
}
}
2.在web-inf目录中新建一个tld文件,在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">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<uri>/itcast</uri>
<tag>
<name>viewIP</name>
<tag-class>cn.itcast.web.tag.ViewIPTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
3.在jsp页面中导入并使用自定义标签。
自定义标签功能扩展:
1.用自定义标签如何控制jsp页面某一部分内容是否执行:
编写一个java类,实现tag接口,控制doStartTag方法的返回值,如果返回EVLAL_BODY_INCLUDE,则标签体会执行,如果返回SKIP_BODY,则标签体不会执行
2.用自定义标签如何控制jsp页面是否执行
编写一个java类,实现tag接口,控制doEndTag方法的返回值,如果返回EVLAL_PAGE,则标签余下的jsp会执行,如果返回SKIP_PAGE,则余下jsp不会执行
3.用自定义标签如何控制标签重复执行
编写一个java类,实现IterationTag接口,首先控制doStartTag方法的返回值,让它返回EVAL_BODY_INCLUDE,让标签体执行,然后控制doAfterBody方法,如果该方法返回EVAL_BODY_AGAIN,则标签就会重复执行,如果返回SKIP_BODY,则标签体不会再执行。
4.用自定义标签如何修改标签体
编写一个java类,实现BodyTag接口,首先控制doStartTag方法的返回值,让它返回EVAL_BODY_BUFFERED,则服务器会创建一个BODYCOntent对象封装标签体,并调用setBodyContent方法,把代表标签体的BODYCOntent对象传递给标签处理器类,开发人员在doendtag方法中,拿到BODYCOntent对象就拿到标签体,从而可以对标签体作出修改后再输出。 |
|