JSP怎么获取本机的公网IP

JSP怎么获取本机的公网IP,第1张

jsp获得本机的公网ip可以使用jsp中的request对象中的方法获得IP地址,如下:

/ 获得ip地址

    public static String getIpAddr(HttpServletRequest request) {

        String ip = request.getHeader("x-forwarded-for")

        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

            ip = request.getHeader("Proxy-Client-IP")

        }

        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

            ip = request.getHeader("WL-Proxy-Client-IP")

        }

        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

            ip = request.getRemoteAddr()//拿到本地IP地址

        }

        return ip

    }

jsp 网页设置IP地址段访问限制是在应用过滤器实现的,比如:

blacklistedip中配置需要限制的ip地址。

import javax.servlet.*

import java.io.IOException

public class BlackListFilter implements Filter

{

private String blacklistedip

@Override

public void init(final FilterConfig filterConfig) throws ServletException

{

this.blacklistedip = filterConfig.getInitParameter("blacklistedip")

}

@Override

public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain filterChain) throws IOException, ServletException

{

if (!request.getRemoteAddr().equals(this.blacklistedip))

{

filterChain.doFilter(request, response)

}

}

@Override

public void destroy()

{

// nothing

}

}

配置如下:

<filter>

<filter-name>IPFilter</filter-name>

<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

</filter>

<filter-mapping>

<filter-name>IPFilter</filter-name>

<servlet-name>MyServlet123</servlet-name>

</filter-mapping>

假如用代理服务器,request.getRemoteAddr() 只能得到代理服务器地址,以下方法是得到正确所有ip的方法

在jsp声明这个函数

<%!public String getIpAddr(HttpServletRequest request) {

String ip = request.getHeader("x-forwarded-for")

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("Proxy-Client-IP")

}

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("WL-Proxy-Client-IP")

}

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getRemoteAddr()

}

return ip

}%>

嵌入jsp网页中,然后用<%String ip=getIpAddr(request)%>得到访问者ip

ip就是访问者的ip,你保存到数据库或者缓存中,就由你自己了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11568430.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存