类 ServletUtils


  • public class ServletUtils
    extends Object
    Servlet相关工具类封装
    源自 hutool-extra 增强
    从以下版本开始:
    2019年8月14日
    作者:
    ylyue
    • 方法概要

      所有方法 静态方法 具体方法 
      修饰符和类型 方法 说明
      static void addCookie​(javax.servlet.http.HttpServletResponse response, String name, String value)
      设定返回给客户端的Cookie
      static void addCookie​(javax.servlet.http.HttpServletResponse response, String name, String value, int maxAgeInSeconds)
      设定返回给客户端的Cookie
      Path: "/"
      No Domain
      static void addCookie​(javax.servlet.http.HttpServletResponse response, String name, String value, int maxAgeInSeconds, String path, String domain)
      设定返回给客户端的Cookie
      static void addCookie​(javax.servlet.http.HttpServletResponse response, javax.servlet.http.Cookie cookie)
      设定返回给客户端的Cookie
      static <T> T fillBean​(javax.servlet.ServletRequest request, T bean, boolean isIgnoreError)
      ServletRequest 参数转Bean
      static <T> T fillBean​(javax.servlet.ServletRequest request, T bean, cn.hutool.core.bean.copier.CopyOptions copyOptions)
      ServletRequest 参数转Bean
      static String getAuthToken()
      获得请求中的OAuth2 Token
      static String getAuthToken​(javax.servlet.http.HttpServletRequest request)
      获得请求中的OAuth2 Token
      static String getBody​(javax.servlet.ServletRequest request)
      获取请求体
      调用该方法后,getParam方法将失效
      static byte[] getBodyBytes​(javax.servlet.ServletRequest request)
      获取请求体byte[]
      调用该方法后,getParam方法将失效
      static String getClientIP​(String... otherHeaderNames)
      获取客户端IP
      static String getClientIP​(javax.servlet.http.HttpServletRequest request, String... otherHeaderNames)
      获取客户端IP
      static String getClientIPByHeader​(javax.servlet.http.HttpServletRequest request, String... headerNames)
      获取客户端IP
      static javax.servlet.http.Cookie getCookie​(javax.servlet.http.HttpServletRequest httpServletRequest, String name)
      获得指定的Cookie
      static String getHeader​(javax.servlet.http.HttpServletRequest request, String name, String charsetName)
      获得请求header中的信息
      static String getHeader​(javax.servlet.http.HttpServletRequest request, String name, Charset charset)
      获得请求header中的信息
      static String getHeaderIgnoreCase​(javax.servlet.http.HttpServletRequest request, String nameIgnoreCase)
      忽略大小写获得请求header中的信息
      static Map<String,​String> getHeaderMap​(javax.servlet.http.HttpServletRequest request)
      获取请求所有的头(header)信息
      static cn.hutool.core.net.multipart.MultipartFormData getMultipart​(javax.servlet.ServletRequest request)
      获得MultiPart表单内容,多用于获得上传的文件 在同一次请求中,此方法只能被执行一次!
      static cn.hutool.core.net.multipart.MultipartFormData getMultipart​(javax.servlet.ServletRequest request, cn.hutool.core.net.multipart.UploadSetting uploadSetting)
      获得multipart/form-data 表单内容
      包括文件和普通表单数据
      在同一次请求中,此方法只能被执行一次!
      static Map<String,​String> getParamMap​(javax.servlet.ServletRequest request)
      获得所有请求参数
      static Map<String,​String[]> getParams​(javax.servlet.ServletRequest request)
      获得所有请求参数
      static <T> T getParamToJavaBean​(Class<T> clazz)
      获得请求参数并转换为JavaBean
      static <T> T getParamToJavaBean​(javax.servlet.http.HttpServletRequest request, Class<T> clazz)
      获得请求参数并转换为JavaBean
      static com.alibaba.fastjson.JSONObject getParamToJson()
      获得请求Json
      static com.alibaba.fastjson.JSONObject getParamToJson​(javax.servlet.http.HttpServletRequest request)
      获得请求Json
      static javax.servlet.http.HttpServletRequest getRequest()
      获得当前请求上下文中的HttpServletRequest
      static org.springframework.web.context.request.ServletRequestAttributes getRequestAttributes()
      获得当前请求上下文中的ServletRequestAttributes
      static javax.servlet.http.HttpServletResponse getResponse()
      获得当前请求上下文中的HttpServletResponse
      static String getServerURL()
      获得当前请求的服务器的URL地址
      static javax.servlet.http.HttpSession getSession()
      获得当前请求HttpSession
      static PrintWriter getWriter​(javax.servlet.http.HttpServletResponse response)
      获得PrintWriter
      static boolean isGetMethod​(javax.servlet.http.HttpServletRequest request)
      是否为GET请求
      static boolean isIE​(javax.servlet.http.HttpServletRequest request)
      客户浏览器是否为IE
      static boolean isMultipart​(javax.servlet.http.HttpServletRequest request)
      是否为Multipart类型表单,此类型表单用于文件上传
      static boolean isPostMethod​(javax.servlet.http.HttpServletRequest request)
      是否为POST请求
      static void printRequest()
      打印请求报文
      static Map<String,​javax.servlet.http.Cookie> readCookieMap​(javax.servlet.http.HttpServletRequest httpServletRequest)
      将cookie封装到Map里面
      static void setHeader​(javax.servlet.http.HttpServletResponse response, String name, Object value)
      设置响应的Header
      static <T> T toBean​(javax.servlet.ServletRequest request, Class<T> beanClass, boolean isIgnoreError)
      ServletRequest 参数转Bean
      static void write​(javax.servlet.http.HttpServletResponse response, File file)
      返回文件给客户端
      static void write​(javax.servlet.http.HttpServletResponse response, InputStream in)
      返回数据给客户端
      static void write​(javax.servlet.http.HttpServletResponse response, InputStream in, int bufferSize)
      返回数据给客户端
      static void write​(javax.servlet.http.HttpServletResponse response, InputStream in, String contentType)
      返回数据给客户端
      static void write​(javax.servlet.http.HttpServletResponse response, InputStream in, String contentType, String fileName)
      返回数据给客户端
      static void write​(javax.servlet.http.HttpServletResponse response, String text, String contentType)
      返回数据给客户端
    • 构造器详细资料

      • 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
      • getAuthToken

        public static String getAuthToken()
        获得请求中的OAuth2 Token
        返回:
        token
      • getAuthToken

        public static String getAuthToken​(javax.servlet.http.HttpServletRequest request)
        获得请求中的OAuth2 Token
        参数:
        request - 请求对象ServletRequest
        返回:
        token
      • getParamToJson

        public static com.alibaba.fastjson.JSONObject getParamToJson()
        获得请求Json
        返回:
        解析的Json
      • getParamToJson

        public static com.alibaba.fastjson.JSONObject getParamToJson​(javax.servlet.http.HttpServletRequest request)
        获得请求Json
        参数:
        request - 请求对象ServletRequest
        返回:
        解析的Json
      • getParamToJavaBean

        public static <T> T getParamToJavaBean​(Class<T> clazz)
        获得请求参数并转换为JavaBean
        返回:
        转换的JavaBean
      • getParamToJavaBean

        public static <T> T getParamToJavaBean​(javax.servlet.http.HttpServletRequest request,
                                               Class<T> clazz)
        获得请求参数并转换为JavaBean
        参数:
        request - 请求对象ServletRequest
        返回:
        转换的JavaBean
      • 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地址
      • getClientIP

        public static String getClientIP​(javax.servlet.http.HttpServletRequest request,
                                         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伪造。

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

        public static String getClientIPByHeader​(javax.servlet.http.HttpServletRequest request,
                                                 String... headerNames)
        获取客户端IP

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

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

        public static cn.hutool.core.net.multipart.MultipartFormData getMultipart​(javax.servlet.ServletRequest request)
                                                                           throws cn.hutool.core.io.IORuntimeException
        获得MultiPart表单内容,多用于获得上传的文件 在同一次请求中,此方法只能被执行一次!
        参数:
        request - ServletRequest
        返回:
        MultipartFormData
        抛出:
        cn.hutool.core.io.IORuntimeException - IO异常
        从以下版本开始:
        4.0.2
      • getMultipart

        public static cn.hutool.core.net.multipart.MultipartFormData getMultipart​(javax.servlet.ServletRequest request,
                                                                                  cn.hutool.core.net.multipart.UploadSetting uploadSetting)
                                                                           throws cn.hutool.core.io.IORuntimeException
        获得multipart/form-data 表单内容
        包括文件和普通表单数据
        在同一次请求中,此方法只能被执行一次!
        参数:
        request - ServletRequest
        uploadSetting - 上传文件的设定,包括最大文件大小、保存在内存的边界大小、临时目录、扩展名限定等
        返回:
        MultiPart表单
        抛出:
        cn.hutool.core.io.IORuntimeException - IO异常
        从以下版本开始:
        4.0.2
      • getHeaderMap

        public static Map<String,​String> getHeaderMap​(javax.servlet.http.HttpServletRequest request)
        获取请求所有的头(header)信息
        参数:
        request - 请求对象HttpServletRequest
        返回:
        header值
        从以下版本开始:
        4.6.2
      • getHeaderIgnoreCase

        public static String getHeaderIgnoreCase​(javax.servlet.http.HttpServletRequest request,
                                                 String nameIgnoreCase)
        忽略大小写获得请求header中的信息
        参数:
        request - 请求对象HttpServletRequest
        nameIgnoreCase - 忽略大小写头信息的KEY
        返回:
        header值
      • getHeader

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

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

        public static boolean isIE​(javax.servlet.http.HttpServletRequest request)
        客户浏览器是否为IE
        参数:
        request - 请求对象HttpServletRequest
        返回:
        客户浏览器是否为IE
      • isGetMethod

        public static boolean isGetMethod​(javax.servlet.http.HttpServletRequest request)
        是否为GET请求
        参数:
        request - 请求对象HttpServletRequest
        返回:
        是否为GET请求
      • isPostMethod

        public static boolean isPostMethod​(javax.servlet.http.HttpServletRequest request)
        是否为POST请求
        参数:
        request - 请求对象HttpServletRequest
        返回:
        是否为POST请求
      • isMultipart

        public static boolean isMultipart​(javax.servlet.http.HttpServletRequest request)
        是否为Multipart类型表单,此类型表单用于文件上传
        参数:
        request - 请求对象HttpServletRequest
        返回:
        是否为Multipart类型表单,此类型表单用于文件上传
      • getCookie

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

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

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

        public static void addCookie​(javax.servlet.http.HttpServletResponse response,
                                     String name,
                                     String value)
        设定返回给客户端的Cookie
        参数:
        response - 响应对象HttpServletResponse
        name - Cookie名
        value - Cookie值
      • addCookie

        public static void addCookie​(javax.servlet.http.HttpServletResponse response,
                                     String name,
                                     String value,
                                     int maxAgeInSeconds,
                                     String path,
                                     String domain)
        设定返回给客户端的Cookie
        参数:
        response - 响应对象HttpServletResponse
        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​(javax.servlet.http.HttpServletResponse response,
                                     String name,
                                     String value,
                                     int maxAgeInSeconds)
        设定返回给客户端的Cookie
        Path: "/"
        No Domain
        参数:
        response - 响应对象HttpServletResponse
        name - cookie名
        value - cookie值
        maxAgeInSeconds - -1: 关闭浏览器清除Cookie. 0: 立即清除Cookie. >0 : Cookie存在的秒数.
      • getWriter

        public static PrintWriter getWriter​(javax.servlet.http.HttpServletResponse response)
                                     throws cn.hutool.core.io.IORuntimeException
        获得PrintWriter
        参数:
        response - 响应对象HttpServletResponse
        返回:
        获得PrintWriter
        抛出:
        cn.hutool.core.io.IORuntimeException - IO异常
      • write

        public static void write​(javax.servlet.http.HttpServletResponse response,
                                 String text,
                                 String contentType)
        返回数据给客户端
        参数:
        response - 响应对象HttpServletResponse
        text - 返回的内容
        contentType - 返回的类型
      • write

        public static void write​(javax.servlet.http.HttpServletResponse response,
                                 File file)
        返回文件给客户端
        参数:
        response - 响应对象HttpServletResponse
        file - 写出的文件对象
        从以下版本开始:
        4.1.15
      • write

        public static void write​(javax.servlet.http.HttpServletResponse response,
                                 InputStream in,
                                 String contentType,
                                 String fileName)
        返回数据给客户端
        参数:
        response - 响应对象HttpServletResponse
        in - 需要返回客户端的内容
        contentType - 返回的类型 如: 1、application/pdf、 2、application/vnd.ms-excel、 3、application/msword、 4、application/vnd.ms-powerpoint docx、xlsx 这种 office 2007 格式 设置 MIME;网页里面docx 文件是没问题,但是下载下来了之后就变成doc格式了 https://blog.csdn.net/cyh2260629/article/details/73824760 5、MIME_EXCELX_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 6、MIME_PPTX_TYPE = "application/vnd.openxmlformats-officedocument.presentationml.presentation"; 7、MIME_WORDX_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; 8、MIME_STREAM_TYPE = "application/octet-stream;charset=utf-8"; #原始字节流
        fileName - 文件名
        从以下版本开始:
        4.1.15
      • write

        public static void write​(javax.servlet.http.HttpServletResponse response,
                                 InputStream in,
                                 String contentType)
        返回数据给客户端
        参数:
        response - 响应对象HttpServletResponse
        in - 需要返回客户端的内容
        contentType - 返回的类型
      • write

        public static void write​(javax.servlet.http.HttpServletResponse response,
                                 InputStream in)
        返回数据给客户端
        参数:
        response - 响应对象HttpServletResponse
        in - 需要返回客户端的内容
      • write

        public static void write​(javax.servlet.http.HttpServletResponse response,
                                 InputStream in,
                                 int bufferSize)
        返回数据给客户端
        参数:
        response - 响应对象HttpServletResponse
        in - 需要返回客户端的内容
        bufferSize - 缓存大小
      • setHeader

        public static void setHeader​(javax.servlet.http.HttpServletResponse response,
                                     String name,
                                     Object value)
        设置响应的Header
        参数:
        response - 响应对象HttpServletResponse
        name - 名
        value - 值,可以是String,Date, int