javaWeb 在jsp中 使用自定义标签输出访问者IP

1.java类,使用简单标签,jsp2.0规范, 继承 SimpleTagSupport

public class ViewIpSimpleTag extends SimpleTagSupport {
    @Override
    public void doTag() throws JspException, IOException {
        PageContext pageContext = (PageContext) this.getJspContext();
        String ip = ((HttpServletRequest) pageContext.getRequest()).getRemoteAddr();

        pageContext.getOut().write(ip);
    }
}

 

1.java类,使用传统标签 jsp1.0, 继承 TagSupport(弃用)

/**
 * jsp 自定义标签的步骤:
 *     1.写一个类实现Tag接口(继承TagSupport类)
 *     2.在WEB-INF文件夹中新建一个tld文件
 *     3.在jsp  页面中导入taglib标签库,然后调用 
 *
 */
public class ViewIp extends TagSupport {
    @Override
    public int doStartTag() throws JspException {
        try {
            HttpServletRequest request = (HttpServletRequest) this.pageContext
                    .getRequest();
            JspWriter out = this.pageContext.getOut();
            String ip = request.getRemoteAddr();
            out.print(ip);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return super.doStartTag();
    }

}

2.tld文件(/webProjectName/WEB-INF/web.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">
    <tlib-version>1.0</tlib-version>
    <short-name>web</short-name>
    <uri>www.bvb.de</uri>

    <tag>
        <name>viewIp</name>
        <tag-class>de.bvb.web.tag.ViewIpSimpleTag</tag-class>
        <body-content>empty</body-content>
    </tag>

</taglib>

 

3.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 3.1导入标签库 prefix和文件名一致,uri和.tld文件夹中的uri一致,uri也可以写为 uri="/WEB-INF/web.tld" -->
<%@ taglib prefix="web" uri="www.bvb.de"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>

        你的ip是:
        <!--3.2 使用自定义标签 -->
        <web:viewIp />

        不使用自定义标签
        <%
        String ip = request.getRemoteAddr();
        out.print(ip);
        %>

    </head>
    <body></body>

 

posted @ 2016-10-18 10:43  MarcoReus  阅读(512)  评论(0编辑  收藏  举报