博客
关于我
javaweb学习总结(二十三)——jsp自定义标签开发入门
阅读量:354 次
发布时间:2019-03-04

本文共 6007 字,大约阅读时间需要 20 分钟。

???JSP?????????

????????

???JSP??????????????JSP?????Java??????????????????????????????????????????????????

?????????

1. ????????

???????Tag??????????????????????????

package me.gacl.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.PageContext;import javax.servlet.jsp.tagext.Tag;public class ViewIPTag implements Tag {    private PageContext pageContext;    @Override    public int doEndTag() throws JspException {        System.out.println("??doEndTag()??");        return 0;    }    @Override    public int doStartTag() throws JspException {        System.out.println("??doStartTag()??");        HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();        JspWriter out = pageContext.getOut();        String ip = request.getRemoteAddr();        try {            out.write(ip);        } catch (IOException e) {            throw new RuntimeException(e);        }        return 0;    }    @Override    public Tag getParent() {        return null;    }    @Override    public void release() {        System.out.println("??release()??");    }    @Override    public void setPageContext(PageContext pageContext) {        System.out.println("setPageContext(PageContext pageContext)");        this.pageContext = pageContext;    }    @Override    public void setParent(Tag arg0) {    }}

2. ???????

??????????WEB-INF/tld???????

viewIP
me.gacl.web.tag.ViewIPTag
empty

?JSP??????????

?????

?JSP????????????

<%@ page language="java" pageEncoding="UTF-8" %><%@ taglib uri="/gacl" prefix="xdp" %>

????

????????IP??????????

?????????

  • ????JSP??????????????setPageContext??PageContext???????

  • ????????setParent?????????????????

  • ?????????????????????doStartTag???

  • ?????????????????????doEndTag???

  • ??????????????release????????

  • ???JSP????Java??????

    package org.apache.jsp;import javax.servlet.http.*;import javax.servlet.jsp.*;public class jspTag_005fTest1_jsp extends HttpJspBase {    private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();    private static java.util.List _jspx_dependants;    static {        _jspx_dependants = new java.util.ArrayList(1);        _jspx_dependants.add("/WEB-INF/gacl.tld");    }    private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fxdp_005fviewIP_005fnobody;    private javax.el.ExpressionFactory _el_expressionfactory;    private org.apache.AnnotationProcessor _jsp_annotationprocessor;    public Object getDependants() {        return _jspx_dependants;    }    public void _jspInit() {        _005fjspx_005ftagPool_005fxdp_005fviewIP_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());        _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();        _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());    }    public void _jspDestroy() {        _005fjspx_005ftagPool_005fxdp_005fviewIP_005fnobody.release();    }    public void _jspService(HttpServletRequest request, HttpServletResponse response)            throws IOException, ServletException {        PageContext pageContext = null;        HttpSession session = null;        ServletContext application = null;        ServletConfig config = null;        JspWriter out = null;        Object page = this;        JspWriter _jspx_out = null;        PageContext _jspx_page_context = null;        try {            response.setContentType("text/html;charset=UTF-8");            pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);            _jspx_page_context = pageContext;            application = pageContext.getServletContext();            config = pageContext.getServletConfig();            session = pageContext.getSession();            out = pageContext.getOut();            _jspx_out = out;            out.write("
    "); out.write("??????IP"); out.write("
    "); String ip = request.getRemoteAddr(); out.write(ip); if (_jspx_meth_xdp_005fviewIP_005f0(_jspx_page_context)) { return; } } catch (Throwable t) { if (!(t instanceof SkipPageException)) { out = _jspx_out; if (out != null && out.getBufferSize() != 0) { try { out.clearBuffer(); } catch (IOException e) { } } if (_jspx_page_context != null) { _jspx_page_context.handlePageException(t); } } } finally { _jspxFactory.releasePageContext(_jspx_page_context); } } private boolean _jspx_meth_xdp_005fviewIP_005f0(PageContext _jspx_page_context) throws Throwable { PageContext pageContext = _jspx_page_context; JspWriter out = pageContext.getOut(); me.gacl.web.tag.ViewIPTag _jspx_th_xdp_005fviewIP_005f0 = (me.gacl.web.tag.ViewIPTag) _005fjspx_005ftagPool_005fxdp_005fviewIP_005fnobody.get(me.gacl.web.tag.ViewIPTag.class); _jspx_th_xdp_005fviewIP_005f0.setPageContext(pageContext); _jspx_th_xdp_005fviewIP_005f0.setParent(null); int _jspx_eval_xdp_005fviewIP_005f0 = _jspx_th_xdp_005fviewIP_005f0.doStartTag(); if (_jspx_th_xdp_005fviewIP_005f0.doEndTag() == javax.servlet.jsp.tagext.Tag.SKIP_PAGE) { _005fjspx_005ftagPool_005fxdp_005fviewIP_005fnobody.reuse(_jspx_th_xdp_005fviewIP_005f0); return true; } _005fjspx_005ftagPool_005fxdp_005fviewIP_005fnobody.reuse(_jspx_th_xdp_005fviewIP_005f0); return false; }}

    ??

    ???????????????????JSP?????????????????????JSP?????????????????????????????

    转载地址:http://wnkr.baihongyu.com/

    你可能感兴趣的文章
    python基础篇(7):函数进阶知识点
    查看>>
    python基础篇(6):global关键字
    查看>>
    python基础篇(5):None类型
    查看>>
    python基础篇(4):range语句
    查看>>
    python基础篇(3):print()补偿知识点
    查看>>
    python基础篇(2):字符串扩展知识点
    查看>>
    python基础篇(1):type()
    查看>>
    python基础篇(15):闭包
    查看>>
    python基础篇(14):多态
    查看>>
    python基础篇(13):类型注解
    查看>>
    python基础篇(12):继承
    查看>>
    python基础篇(11):封装
    查看>>
    python基础篇(10):自定义包
    查看>>
    python基础篇(10):类、对象与构造方法
    查看>>
    python系列【仅供参考】:python测试javaSDK总结
    查看>>
    python系列【仅供参考】:python斗地主
    查看>>
    Python基础教程(第2版 修订版) pdf
    查看>>
    python基础实践(四)
    查看>>
    Python基础学习笔记(九)常用数据类型转换函数
    查看>>
    Python基础学习参考(五):字符串和编码
    查看>>