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

本文共 6134 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    Node.js卸载超详细步骤(附图文讲解)
    查看>>
    Node.js基于Express框架搭建一个简单的注册登录Web功能
    查看>>
    node.js学习之npm 入门 —8.《怎样创建,发布,升级你的npm,node模块》
    查看>>
    Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
    查看>>
    Node.js安装及环境配置之Windows篇
    查看>>
    Node.js安装和入门 - 2行代码让你能够启动一个Server
    查看>>
    node.js安装方法
    查看>>
    Node.js官网无法正常访问时安装NodeJS的方法
    查看>>
    node.js模块、包
    查看>>
    node.js的express框架用法(一)
    查看>>
    Node.js的交互式解释器(REPL)
    查看>>
    Node.js的循环与异步问题
    查看>>
    Node.js高级编程:用Javascript构建可伸缩应用(1)1.1 介绍和安装-安装Node
    查看>>
    nodejs + socket.io 同时使用http 和 https
    查看>>
    NodeJS @kubernetes/client-node连接到kubernetes集群的方法
    查看>>
    NodeJS API简介
    查看>>
    Nodejs express 获取url参数,post参数的三种方式
    查看>>
    nodejs http小爬虫
    查看>>
    nodejs libararies
    查看>>
    nodejs npm常用命令
    查看>>