`
zhangshixi
  • 浏览: 675575 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Web操作工具类

阅读更多
package com.zhangsx.util.web;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Web相关的工具方法。
 * 提供获取用户的实际IP地址、获取请求中指定名称的Cookie、失效掉指定名称的Cookie。
 * 
 * @version 1.00 2010-1-15
 * @since 1.5
 * @author ZhangShixi
 */
public class WebUtil {

    /**
     * 获取实际用户的ip访问地址。
     * @param request Http请求。
     * @return 客户端ip地址。
     */
    public static String getIpAddress(HttpServletRequest request) {
        if (request == null) {
            return null;
        }
        
        String ips = request.getHeader("x-forwarded-for");
        if (ips == null || ips.isEmpty() || "unknown".equalsIgnoreCase(ips)) {
            ips = request.getHeader("Proxy-Client-IP");
        }
        if (ips == null || ips.isEmpty() || "unknown".equalsIgnoreCase(ips)) {
            ips = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ips == null || ips.isEmpty() || "unknown".equalsIgnoreCase(ips)) {
            ips = request.getRemoteAddr();
        }

        String[] ipArray = ips.split(",");
        String clientIp = null;
        for (String ip : ipArray) {
            if (!"unknown".equalsIgnoreCase(ip)) {
                clientIp = ip;
                break;
            }
        }

        return clientIp;
    }

    /**
     * 获取请求中指定的名称的Cookie。
     * @param request Http请求。
     * @param name cookie名称。
     * @return 如果请求中有相应名称的Cookie,则返回相应的Cookie实例;否则返回null。
     */
    public static Cookie getCookie(HttpServletRequest request, String name) {
        if (request == null || name == null || name.isEmpty()) {
            return null;
        }

        Cookie[] cookies = request.getCookies();
        if (cookies != null && cookies.length > 0) {
            for (Cookie cookie : cookies) {
                if (cookie != null && name.equals(cookie.getName())) {
                    return cookie;
                }
            }
        }
        return null;
    }

    /**
     * 失效掉指定名称的Cookie。
     * @param request 请求。
     * @param response 相应。
     * @param name cookie名称。
     */
    public static void invalidCookie(
            HttpServletRequest request,HttpServletResponse response, String name) {
        if (request == null || response == null || name == null || name.isEmpty()) {
            return;
        }

        Cookie cookie = getCookie(request, name);
        if (cookie != null) {
            cookie.setMaxAge(0);
            cookie.setPath(request.getContextPath());
            response.addCookie(cookie);
        }
    }
}
 
3
3
分享到:
评论

相关推荐

    Spring文件资源操作和Web相关工具类盘点

    通过合理利用这些工具类,开发者可以更加专注于业务逻辑,而不是被基础的 Web 操作所困扰。Spring 的设计哲学就是简化开发,提高生产力,这些工具类正是这一理念的具体体现。在实际开发中,了解并熟练使用这些工具,...

    Java web开发工具类

    Java Web开发工具类主要指的是在构建Web应用程序时使用的各种实用工具和框架,这些工具和框架极大地简化了开发过程,提高了代码的可维护性和可扩展性。Struts2是其中非常著名的MVC(Model-View-Controller)框架,它...

    WebAPi工具类帮助解决API中的各种方法

    WebAPI工具类是开发Web服务时的一个重要辅助组件,它主要负责封装常见的API操作,以简化接口调用和数据处理过程。在WebAPI项目中,我们可能会遇到各种问题,如参数传递、数据序列化与反序列化、错误处理、认证与授权...

    Web开发常用工具类

    在Web开发过程中,工具类(Tools)扮演着重要的角色,它们提供了一系列静态方法,帮助开发者高效地处理常见的任务。以下是一些在标题和描述中提到的工具类的详细说明: 1. **DateUtils**: 这个类通常用于日期和时间...

    Excel POI 工具类

    10. **数据流处理**:除了处理本地文件,工具类也可能支持从网络流或内存中读写Excel,便于在Web应用中处理Excel数据。 通过使用这样的"Excel POI 工具类",开发人员可以避免重复编写相同的代码,提高代码的可维护...

    java写的几种方便web开发工具类源码

    本压缩包"java写的几种方便web开发工具类源码"提供了多种功能,涵盖了数据转换、数据库连接、邮件发送、验证码生成以及编码过滤和加密解密等关键领域,对于Web开发工作极具价值。 首先,让我们深入了解一下其中的几...

    桌面web工具类1

    这些工具类通常包含了对桌面操作系统的交互逻辑,如文件操作、系统通知、桌面快捷方式创建等,以增强Web应用在桌面环境下的用户体验。 描述中提到这部分是“一部分”,暗示还有另外的“2部分在另外一个文档中”。这...

    c# Web常用工具类、asp.net常用类

    标题提到的"C# Web常用工具类、asp.net常用类"指的是开发者们在构建Web应用程序时经常会用到的一些实用类库。这些类库通常包含了处理HTTP请求、响应、数据绑定、用户会话、状态管理等多种功能,极大地提高了开发效率...

    淘淘商城07-工具类

    除了上述的几个主要类别,这个压缩包可能还包含了其他实用工具类,如日期时间处理(DateUtil)、字符串操作(StringUtil)、文件操作(FileUtil)、线程池管理(ThreadPoolUtil)等。这些工具类通常提供了静态方法...

    C# 常用工具类 日志操作(log4net) 配置管理、字符串工具、DateTime工具、图片工具、文件工具、加密工具 等

    这些工具类通常包含对特定任务的封装,如日志记录、配置管理、字符串处理、日期时间操作、图像处理、文件操作以及安全相关的加密算法。下面将详细解释这些工具类的主要功能和应用场景。 1. **日志操作(log4net)**: ...

    javascript后台调用的工具类

    JavaScript 后台调用工具类是一种实用的编程资源,它为开发者提供了在后台环境中使用 JavaScript 进行操作的便利。这个工具类旨在简化JavaScript代码,让开发者能够更高效地进行项目开发,尤其对于不熟悉JavaScript...

    java常用工具类集合(也有转自他人的)

    总结来说,"java常用工具类集合"是一个涵盖了多种实用工具类的资源,包括但不限于字符串处理、集合操作、日期时间、IO操作等多个方面。通过学习和应用这些工具类,开发者能够更高效地编写代码,同时也能从开源社区中...

    common-utils.zip web 通用工具类包

    《web通用工具类包——common-utils.zip详解》 在web开发中,有一款优秀的工具类库可以极大地提高我们的开发效率,这就是"common-utils.zip"。它是一个专为web应用程序设计的通用工具类包,集成了多种实用功能,...

    web开发相关的工具类

    在Web开发领域,工具类是提高开发效率和代码质量的重要组成部分。这些工具类通常封装了常见操作,使得开发者可以快速地处理各种问题,而无需关注底层实现细节。在这个"web开发相关的工具类"中,我们可以看到一些关键...

    php操作数据库的工具类

    标题提到的"php操作数据库的工具类"正是这样的一个资源,它提供了方便的函数来执行SQL查询、处理结果集以及进行事务管理等操作。下面我们将详细探讨这些工具类的一般结构和功能。 1. 连接管理: 工具类首先需要...

    常用Java工具类

    这些工具类通常包含初始化配置、获取和释放连接的方法,帮助开发者更高效地处理数据库操作。 2. **MD5加密工具类**:MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的数据转化为...

    验证码生成工具类

    验证码生成工具类是一种在Web应用中广泛使用的安全机制,它主要用于防止自动化的恶意操作,比如机器人注册、垃圾邮件发送等。这个工具类是用Java语言编写的,因此我们可以深入探讨一下Java验证码生成的相关技术和...

    C# Util 实用工具类

    3. **Time**: 时间处理工具类帮助开发者进行日期和时间的格式化、比较、计算等操作。例如,可以提供方便的时间戳转换、日期格式化函数,以及检查时间间隔的辅助方法。 4. **Compress**: 压缩和解压缩是常见的数据...

    Spring的优秀工具类盘点,第1部分:文件资源操作和Web相关工具类

    Spring不但提供了一个...第1部分将介绍与文件资源操作和Web相关的工具类。在第2部分中将介绍特殊字符转义和方法入参检测工具类。文件资源操作文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特

Global site tag (gtag.js) - Google Analytics