jsp自定义标签
来源:互联网 发布:c语言可视化编程ide 编辑:程序博客网 时间:2024/05/17 06:15
package com.itheima.web.tag;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;public class ViewIPTag extends TagSupport {@Overridepublic int doStartTag() throws JspException {HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();JspWriter out = this.pageContext.getOut();String ip = request.getRemoteAddr(); try {out.print(ip);} catch (IOException e) {throw new RuntimeException();}return super.doStartTag();}}
0,移除jsp中的java代码
- public class ViewIPTag extends TagSupport {
- @Override
- public int doStartTag() throws JspException {
- HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();
- JspWriter out = this.pageContext.getOut();
- String ip = request.getRemoteAddr();
- try {
- out.print(ip);
- } catch (IOException e) {
- throw new RuntimeException();
- }
- return super.doStartTag();
- }
- }
1,控制标签内的文本是否输出
- public class TagDemo extends TagSupport {
- @Override
- public int doStartTag() throws JspException {
- return Tag.EVAL_BODY_INCLUDE;//输出,不输出SKIP_TAGE
- }
- }
2,控制标签后面的文本是否输出
- public class TagDemo2 extends TagSupport {
- @Override
- public int doEndTag() throws JspException {
- return Tag.EVAL_PAGE;
- }
- }
3,控制标签体内的文本循环输出
- public class TagDemo3 extends TagSupport {
- static int num = 0;
- @Override
- public int doStartTag() throws JspException {
- // TODO Auto-generated method stub
- return Tag.EVAL_BODY_INCLUDE;
- }
- @Override
- public int doAfterBody() throws JspException {
- if(++num<5){
- return IterationTag.EVAL_BODY_AGAIN;
- }else{
- return IterationTag.SKIP_BODY;
- }
- }
- }
4,修改标签体内的文件
- public class TagDemo4 extends SimpleTagSupport {
- @Override
- public void doTag() throws JspException, IOException {
- JspFragment jf = this.getJspBody();
- StringWriter writer = new StringWriter();
- jf.invoke(writer);
- String str = writer.getBuffer().toString().toUpperCase();
- this.getJspContext().getOut().write(str);
- }
<itheima:refererDemo site="http://localhost" page="/day11/index.jsp" />
public class refererDemo extends SimpleTagSupport {private String site;private String page;public void setSite(String site) {this.site = site;}public void setPage(String page) {this.page = page;}@Overridepublic void doTag() throws JspException, IOException {PageContext context = (PageContext) this.getJspContext();HttpServletRequest request = (HttpServletRequest) context.getRequest();HttpServletResponse response = (HttpServletResponse) context.getResponse();String referer = request.getHeader("referer");if(referer !=null && referer.startsWith(site)){//request.getRequestDispatcher("/7.jsp");}else{response.sendRedirect(page);}}}
tld文件
- <tag>
- <name>ViewIP</name>
- <tag-class>com.itheima.web.tag.ViewIPTag</tag-class>
- <body-content>empty</body-content>
- </tag>
- <tag>
- <name>TagDemo</name>
- <tag-class>com.itheima.web.tag.TagDemo</tag-class>
- <body-content>JSP</body-content>
- </tag>
- <tag>
- <name>TagDemo3</name>
- <tag-class>com.itheima.web.tag.TagDemo3</tag-class>
- <body-content>JSP</body-content>
- </tag>
- <tag>
- <name>TagDemo4</name>
- <tag-class>com.itheima.web.tag.TagDemo4</tag-class>
- <body-content>scriptless</body-content>
- </tag>
- <tag>
- <name>TagDemo2</name>
- <tag-class>com.itheima.web.tag.TagDemo2</tag-class>
- <body-content>empty</body-content>
- </tag>
- <tag>
<name>refererDemo</name>
<tag-class>com.itheima.web.tag.referer.refererDemo</tag-class>
<body-content>empty</body-content>
<attribute>
<name>site</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>page</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
0 0
- JSP----自定义标签---简单标签
- jsp自定义标签-----嵌套标签
- JSP标签编程----自定义标签
- JSP 自定义标签:简单标签
- JSP标签-JSTL-自定义标签
- JSP自定义标签-Select标签
- jsp 自定义标签---标签文件
- JSP自定义标签
- JSP自定义标签学习心得
- JSP自定义标签试验
- JSP 自定义标签库
- 自定义JSP标签
- 创建JSP自定义标签
- 关于自定义标签 jsp
- 关于自定义标签 jsp
- jsp 自定义分页标签
- JSP自定义标签简介
- JSP自定义标签例子
- Algorithm学习笔记 --- ACM算法分类
- 计算机专业学习浅谈
- Mysql绿色版安装配置说明
- MFC中为窗口添加位图背景,避免屏幕闪烁1
- 网页站点加速守则
- jsp自定义标签
- php 双向队列类
- 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...
- jeecms 整体架构介绍--很好的
- 【An Analysis of the AnserverBot Trojan】
- 自定义UINavigationBar的背景图片
- AT&T Memory Reference Syntax
- (8)CSS链接与链接伪类
- 产生不相同的随机数(低效率版)