`
zhangshixi
  • 浏览: 672195 次
  • 性别: 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相关工具类盘点

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

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

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

    Java常用工具类大全,工作5年精心整理(最新版)

    提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...

    java各种工具类,多年精华

    提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...

    Java常用工具类大全

    提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...

    .Net 50多种工具类

    包含FTP、邮件、pdf、csv、xml、图片、图形、条形码、序列化、压缩解压、分词、汉字转拼音、时间操作、万能数据转换、网络、文件操作、弹窗、正则、字符串操作、web验证码、水印缩略图、缓存相关等等50余个工具类,...

    桌面web工具类1

    操作系统的桌面处理javaweb相关工具类1,一部分,2部分在另外一个文档中

    Java常用工具类大全.7z

    提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...

    Visual Web Developer(可视化Web开发工具)(rar)

    可视化Web开发工具由Visual Web Developer开发环境, WebFramework运行环境 2大部分组成, Visual Web Developer是基于Windows的一个开发工具,提供了一系列控件, 让您的模块实现只需要通过拖沓控件,指定控件的...

    一个很全的java文件工具类

    每个程序员都应该有一套自己的工具类,这个工具类提供很全的java文件操作方法

    java基础类库开发包,工作5年精心整理_Java常用工具类源码

    提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...

    vue 字符和日期转换工具类

    vue 字符和日期转换工具类,先将util里面的公共对象抛出,全局使用

    基于Android系统Api封装常用工具类.zip

    软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...

    pdf文件相关操作工具类

    ICEpdf是一种开源,轻量级的pdf 引擎,用于展示/查看PDF文档,转换和抽取PDF文档的内容,还可以集成到Java桌面应用程序或Web服务器中使用。itextpdf用于itext库创建pdf文件。

    高级查询(多条件查询)的简易Web——商品信息管理系统

    可以参考】 使用封装的思想,极尽...专门的数据库操作工具类(加载注册驱动、获取连接对象、获取语句对象、执行语句、释放资源)、多条件查询公共类(获取条件语句、获取查询请求参数)、web基础servlet+jsp 页面跳转

    Kettle的Web端管理工具Kettle-Manager.zip

    我所知道的解决方案有用命令行的调用的,操作麻烦,总之还是很难用啦,还有就是开发web端管理工具,kettle自带了一个web端管理工具,界面极其简陋不说,还很难用,基本无法投入生产环境使用,其他没留意到还有没有较...

    基于Web服务简易网络聊天工具的设计与实现

    实现一个类似QQ的网络聊天软件的功能;服务端采用WebServices提供技术支持,...服务端采用两层结构,即DAL和BLL,数据访问层使用LINQ to SQL类来实现,大大简化该层的设计工作量;业务逻辑层使用LINQ来操作数据对象;

Global site tag (gtag.js) - Google Analytics