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);
}
}
}
分享到:
相关推荐
通过合理利用这些工具类,开发者可以更加专注于业务逻辑,而不是被基础的 Web 操作所困扰。Spring 的设计哲学就是简化开发,提高生产力,这些工具类正是这一理念的具体体现。在实际开发中,了解并熟练使用这些工具,...
Java Web开发工具类主要指的是在构建Web应用程序时使用的各种实用工具和框架,这些工具和框架极大地简化了开发过程,提高了代码的可维护性和可扩展性。Struts2是其中非常著名的MVC(Model-View-Controller)框架,它...
WebAPI工具类是开发Web服务时的一个重要辅助组件,它主要负责封装常见的API操作,以简化接口调用和数据处理过程。在WebAPI项目中,我们可能会遇到各种问题,如参数传递、数据序列化与反序列化、错误处理、认证与授权...
在Web开发过程中,工具类(Tools)扮演着重要的角色,它们提供了一系列静态方法,帮助开发者高效地处理常见的任务。以下是一些在标题和描述中提到的工具类的详细说明: 1. **DateUtils**: 这个类通常用于日期和时间...
10. **数据流处理**:除了处理本地文件,工具类也可能支持从网络流或内存中读写Excel,便于在Web应用中处理Excel数据。 通过使用这样的"Excel POI 工具类",开发人员可以避免重复编写相同的代码,提高代码的可维护...
本压缩包"java写的几种方便web开发工具类源码"提供了多种功能,涵盖了数据转换、数据库连接、邮件发送、验证码生成以及编码过滤和加密解密等关键领域,对于Web开发工作极具价值。 首先,让我们深入了解一下其中的几...
这些工具类通常包含了对桌面操作系统的交互逻辑,如文件操作、系统通知、桌面快捷方式创建等,以增强Web应用在桌面环境下的用户体验。 描述中提到这部分是“一部分”,暗示还有另外的“2部分在另外一个文档中”。这...
标题提到的"C# Web常用工具类、asp.net常用类"指的是开发者们在构建Web应用程序时经常会用到的一些实用类库。这些类库通常包含了处理HTTP请求、响应、数据绑定、用户会话、状态管理等多种功能,极大地提高了开发效率...
除了上述的几个主要类别,这个压缩包可能还包含了其他实用工具类,如日期时间处理(DateUtil)、字符串操作(StringUtil)、文件操作(FileUtil)、线程池管理(ThreadPoolUtil)等。这些工具类通常提供了静态方法...
这些工具类通常包含对特定任务的封装,如日志记录、配置管理、字符串处理、日期时间操作、图像处理、文件操作以及安全相关的加密算法。下面将详细解释这些工具类的主要功能和应用场景。 1. **日志操作(log4net)**: ...
JavaScript 后台调用工具类是一种实用的编程资源,它为开发者提供了在后台环境中使用 JavaScript 进行操作的便利。这个工具类旨在简化JavaScript代码,让开发者能够更高效地进行项目开发,尤其对于不熟悉JavaScript...
总结来说,"java常用工具类集合"是一个涵盖了多种实用工具类的资源,包括但不限于字符串处理、集合操作、日期时间、IO操作等多个方面。通过学习和应用这些工具类,开发者能够更高效地编写代码,同时也能从开源社区中...
《web通用工具类包——common-utils.zip详解》 在web开发中,有一款优秀的工具类库可以极大地提高我们的开发效率,这就是"common-utils.zip"。它是一个专为web应用程序设计的通用工具类包,集成了多种实用功能,...
在Web开发领域,工具类是提高开发效率和代码质量的重要组成部分。这些工具类通常封装了常见操作,使得开发者可以快速地处理各种问题,而无需关注底层实现细节。在这个"web开发相关的工具类"中,我们可以看到一些关键...
标题提到的"php操作数据库的工具类"正是这样的一个资源,它提供了方便的函数来执行SQL查询、处理结果集以及进行事务管理等操作。下面我们将详细探讨这些工具类的一般结构和功能。 1. 连接管理: 工具类首先需要...
这些工具类通常包含初始化配置、获取和释放连接的方法,帮助开发者更高效地处理数据库操作。 2. **MD5加密工具类**:MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的数据转化为...
验证码生成工具类是一种在Web应用中广泛使用的安全机制,它主要用于防止自动化的恶意操作,比如机器人注册、垃圾邮件发送等。这个工具类是用Java语言编写的,因此我们可以深入探讨一下Java验证码生成的相关技术和...
3. **Time**: 时间处理工具类帮助开发者进行日期和时间的格式化、比较、计算等操作。例如,可以提供方便的时间戳转换、日期格式化函数,以及检查时间间隔的辅助方法。 4. **Compress**: 压缩和解压缩是常见的数据...
Spring不但提供了一个...第1部分将介绍与文件资源操作和Web相关的工具类。在第2部分中将介绍特殊字符转义和方法入参检测工具类。文件资源操作文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特