类 ServletUtils


  • public class ServletUtils
    extends Object
    Servlet相关工具类封装
    源自 hutool-extra 增强
    从以下版本开始:
    2019年8月14日
    作者:
    ylyue
    • 构造器详细资料

      • ServletUtils

        public ServletUtils()
    • 方法详细资料

      • getRequestAttributes

        public static org.springframework.web.context.request.ServletRequestAttributes getRequestAttributes()
        获得当前请求上下文中的ServletRequestAttributes
        返回:
        ServletRequestAttributes
      • getRequest

        public static javax.servlet.http.HttpServletRequest getRequest()
        获得当前请求上下文中的HttpServletRequest
        返回:
        HttpServletRequest
      • getResponse

        public static javax.servlet.http.HttpServletResponse getResponse()
        获得当前请求上下文中的HttpServletResponse
        返回:
        HttpServletResponse
      • getSession

        public static javax.servlet.http.HttpSession getSession()
        获得当前请求HttpSession
        返回:
        HttpSession
      • getServerURL

        public static String getServerURL()
        获得当前请求的服务器的URL地址

        示例一:http://localhost:8080
        示例二:http://localhost:8080/projectName

        返回:
        当前请求的服务器的URL地址
      • printRequest

        public static void printRequest()
        打印请求报文

        注意:打印不包括:异步请求内容、数据流

      • getParams

        public static Map<String,​String[]> getParams​(javax.servlet.ServletRequest request)
        获得所有请求参数
        参数:
        request - 请求对象ServletRequest
        返回:
        Map
      • getParamMap

        public static Map<String,​String> getParamMap​(javax.servlet.ServletRequest request)
        获得所有请求参数
        参数:
        request - 请求对象ServletRequest
        返回:
        Map
      • getBody

        public static String getBody​(javax.servlet.ServletRequest request)
        获取请求体
        调用该方法后,getParam方法将失效
        参数:
        request - ServletRequest
        返回:
        获得请求体
        从以下版本开始:
        4.0.2
      • getBodyBytes

        public static byte[] getBodyBytes​(javax.servlet.ServletRequest request)
        获取请求体byte[]
        调用该方法后,getParam方法将失效
        参数:
        request - ServletRequest
        返回:
        获得请求体byte[]
        从以下版本开始:
        4.0.2
      • fillBean

        public static <T> T fillBean​(javax.servlet.ServletRequest request,
                                     T bean,
                                     cn.hutool.core.bean.copier.CopyOptions copyOptions)
        ServletRequest 参数转Bean
        类型参数:
        T - Bean类型
        参数:
        request - ServletRequest
        bean - Bean
        copyOptions - 注入时的设置
        返回:
        Bean
        从以下版本开始:
        3.0.4
      • fillBean

        public static <T> T fillBean​(javax.servlet.ServletRequest request,
                                     T bean,
                                     boolean isIgnoreError)
        ServletRequest 参数转Bean
        类型参数:
        T - Bean类型
        参数:
        request - ServletRequest
        bean - Bean
        isIgnoreError - 是否忽略注入错误
        返回:
        Bean
      • toBean

        public static <T> T toBean​(javax.servlet.ServletRequest request,
                                   Class<T> beanClass,
                                   boolean isIgnoreError)
        ServletRequest 参数转Bean
        类型参数:
        T - Bean类型
        参数:
        request - ServletRequest
        beanClass - Bean Class
        isIgnoreError - 是否忽略注入错误
        返回:
        Bean
      • getClientIP

        public static String getClientIP​(String... otherHeaderNames)
        获取客户端IP

        默认检测的Header:

         1、X-Forwarded-For
         2、X-Real-IP
         3、Proxy-Client-IP
         4、WL-Proxy-Client-IP
         

        otherHeaderNames参数用于自定义检测的Header
        需要注意的是,使用此方法获取的客户IP地址必须在Http服务器(例如Nginx)中配置头信息,否则容易造成IP伪造。

        参数:
        otherHeaderNames - 其他自定义头文件,通常在Http服务器(例如Nginx)中配置
        返回:
        IP地址
      • getClientIPByHeader

        public static String getClientIPByHeader​(String... headerNames)
        获取客户端IP

        headerNames参数用于自定义检测的Header
        需要注意的是,使用此方法获取的客户IP地址必须在Http服务器(例如Nginx)中配置头信息,否则容易造成IP伪造。

        参数:
        headerNames - 自定义头,通常在Http服务器(例如Nginx)中配置
        返回:
        IP地址
        从以下版本开始:
        4.4.1
      • getMultipart

        public static MultipartFormData getMultipart()
                                              throws cn.hutool.core.io.IORuntimeException
        获得multipart/form-data 表单内容
        包括文件和普通表单数据
        在同一次请求中,此方法只能被执行一次!
        返回:
        MultiPart表单
        抛出:
        cn.hutool.core.io.IORuntimeException - IO异常
        从以下版本开始:
        4.0.2
      • getHeaderMap

        public static Map<String,​String> getHeaderMap()
        获取请求所有的头(header)信息
        返回:
        header值
        从以下版本开始:
        4.6.2
      • getHeaderIgnoreCase

        public static String getHeaderIgnoreCase​(String nameIgnoreCase)
        忽略大小写获得请求header中的信息
        参数:
        nameIgnoreCase - 忽略大小写头信息的KEY
        返回:
        header值
      • getHeader

        public static String getHeader​(String name,
                                       String charsetName)
        获得请求header中的信息
        参数:
        name - 头信息的KEY
        charsetName - 字符集
        返回:
        header值
      • getHeader

        public static String getHeader​(String name,
                                       Charset charset)
        获得请求header中的信息
        参数:
        name - 头信息的KEY
        charset - 字符集
        返回:
        header值
        从以下版本开始:
        4.6.2
      • isIE

        public static boolean isIE()
        客户浏览器是否为IE
        返回:
        客户浏览器是否为IE
      • isGetMethod

        public static boolean isGetMethod()
        是否为GET请求
        返回:
        是否为GET请求
      • isPostMethod

        public static boolean isPostMethod()
        是否为POST请求
        返回:
        是否为POST请求
      • isMultipart

        public static boolean isMultipart()
        是否为Multipart类型表单,此类型表单用于文件上传
        返回:
        是否为Multipart类型表单,此类型表单用于文件上传
      • getCookie

        public static javax.servlet.http.Cookie getCookie​(String name)
        获得指定的Cookie
        参数:
        name - cookie名
        返回:
        Cookie对象
      • readCookieMap

        public static Map<String,​javax.servlet.http.Cookie> readCookieMap()
        将cookie封装到Map里面
        返回:
        Cookie map
      • addCookie

        public static void addCookie​(javax.servlet.http.Cookie cookie)
        设定返回给客户端的Cookie
        参数:
        cookie - Servlet Cookie对象
      • addCookie

        public static void addCookie​(String name,
                                     String value)
        设定返回给客户端的Cookie
        参数:
        name - Cookie名
        value - Cookie值
      • addCookie

        public static void addCookie​(String name,
                                     String value,
                                     int maxAgeInSeconds,
                                     String path,
                                     String domain)
        设定返回给客户端的Cookie
        参数:
        name - cookie名
        value - cookie值
        maxAgeInSeconds - -1: 关闭浏览器清除Cookie. 0: 立即清除Cookie. >0 : Cookie存在的秒数.
        path - Cookie的有效路径
        domain - the domain name within which this cookie is visible; form is according to RFC 2109
      • addCookie

        public static void addCookie​(String name,
                                     String value,
                                     int maxAgeInSeconds)
        设定返回给客户端的Cookie
        Path: "/"
        No Domain
        参数:
        name - cookie名
        value - cookie值
        maxAgeInSeconds - -1: 关闭浏览器清除Cookie. 0: 立即清除Cookie. >0 : Cookie存在的秒数.
      • getWriter

        public static PrintWriter getWriter()
                                     throws cn.hutool.core.io.IORuntimeException
        获得PrintWriter
        返回:
        获得PrintWriter
        抛出:
        cn.hutool.core.io.IORuntimeException - IO异常
      • write

        public static void write​(String text,
                                 String contentType)
        返回数据给客户端
        参数:
        text - 返回的内容
        contentType - 返回的类型
      • write

        public static void write​(File file)
        返回文件给客户端
        参数:
        file - 写出的文件对象
        从以下版本开始:
        4.1.15
      • write

        public static void write​(InputStream in,
                                 String contentType,
                                 String fileName)
        返回数据给客户端
        参数:
        in - 需要返回客户端的内容
        contentType - 返回的类型
        fileName - 文件名
        从以下版本开始:
        4.1.15
      • write

        public static void write​(InputStream in,
                                 String contentType)
        返回数据给客户端
        参数:
        in - 需要返回客户端的内容
        contentType - 返回的类型
      • write

        public static void write​(InputStream in)
        返回数据给客户端
        参数:
        in - 需要返回客户端的内容
      • write

        public static void write​(InputStream in,
                                 int bufferSize)
        返回数据给客户端
        参数:
        in - 需要返回客户端的内容
        bufferSize - 缓存大小
      • setHeader

        public static void setHeader​(String name,
                                     Object value)
        设置响应的Header
        参数:
        name - 名
        value - 值,可以是String,Date, int