Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >获取request,获取response,获取session,获取ServletRequestAttributes,的工具类

获取request,获取response,获取session,获取ServletRequestAttributes,的工具类

作者头像
一写代码就开心
发布于 2022-09-27 00:32:41
发布于 2022-09-27 00:32:41
2.5K00
代码可运行
举报
文章被收录于专栏:java和pythonjava和python
运行总次数:0
代码可运行

目录

1 需求

我们写一个springboot项目,写一个接口,接口没有参数,但是我们想要 获取获取request,获取response,获取session,获取ServletRequestAttributes,将字符串渲染到客户端,判断接口是否是Ajax异步请求,内容编码,解码

我们可以使用工具类,拿到随便一个项目都可以使用

2 工具类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;


/**
 * 客户端工具类
 * 就是在其他的页面,你接口参数里面没有 request ,reponse
 * 你可以使用这个工具类,获取到
 * @author ruoyi
 */
public class ServletUtils
{
    /**
     * 获取String参数
     */
    public static String getParameter(String name)
    {
        return getRequest().getParameter(name);
    }

    /**
     * 获取String参数
     */
    public static String getParameter(String name, String defaultValue)
    {
        return Convert.toStr(getRequest().getParameter(name), defaultValue);
    }

    /**
     * 获取Integer参数
     */
    public static Integer getParameterToInt(String name)
    {
        return Convert.toInt(getRequest().getParameter(name));
    }

    /**
     * 获取Integer参数
     */
    public static Integer getParameterToInt(String name, Integer defaultValue)
    {
        return Convert.toInt(getRequest().getParameter(name), defaultValue);
    }

    /**
     * 获取Boolean参数
     */
    public static Boolean getParameterToBool(String name)
    {
        return Convert.toBool(getRequest().getParameter(name));
    }

    /**
     * 获取Boolean参数
     */
    public static Boolean getParameterToBool(String name, Boolean defaultValue)
    {
        return Convert.toBool(getRequest().getParameter(name), defaultValue);
    }

    /**
     * 获取request
     */
    public static HttpServletRequest getRequest()
    {
        return getRequestAttributes().getRequest();
    }

    /**
     * 获取response
     */
    public static HttpServletResponse getResponse()
    {
        return getRequestAttributes().getResponse();
    }

    /**
     * 获取session
     */
    public static HttpSession getSession()
    {
        return getRequest().getSession();
    }


    /**
     * 获取ServletRequestAttributes
     */

    public static ServletRequestAttributes getRequestAttributes()
    {
        RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
        return (ServletRequestAttributes) attributes;
    }

    /**
     * 将字符串渲染到客户端
     * 
     * @param response 渲染对象
     * @param string 待渲染的字符串
     */
    public static void renderString(HttpServletResponse response, String string)
    {
        try
        {
            response.setStatus(200);
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            response.getWriter().print(string);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 是否是Ajax异步请求
     * 
     * @param request
     */
    public static boolean isAjaxRequest(HttpServletRequest request)
    {
        String accept = request.getHeader("accept");
        if (accept != null && accept.contains("application/json"))
        {
            return true;
        }

        String xRequestedWith = request.getHeader("X-Requested-With");
        if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest"))
        {
            return true;
        }

        String uri = request.getRequestURI();
        if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml"))
        {
            return true;
        }

        String ajax = request.getParameter("__ajax");
        return StringUtils.inStringIgnoreCase(ajax, "json", "xml");
    }


            /*    防止乱码,客户端进行编码,服务器端进行解码           **/
    /**
     * 内容编码
     * 
     * @param str 内容
     * @return 编码后的内容
     */
    public static String urlEncode(String str)
    {
        try
        {
            return URLEncoder.encode(str, Constants.UTF8);
        }
        catch (UnsupportedEncodingException e)
        {
            return StringUtils.EMPTY;
        }
    }

    /**
     * 内容解码
     * @param str 内容
     * @return 解码后的内容
     */
    public static String urlDecode(String str)
    {
        try
        {
            return URLDecoder.decode(str, Constants.UTF8);
        }
        catch (UnsupportedEncodingException e)
        {
            return StringUtils.EMPTY;
        }
    }

    public static void main(String[] args) {
        System.out.println(urlEncode("eeeeeeeeeee"));
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
杨校老师课堂之封装工具类【时间工具类|类型转换器|客户端Servlet工具类】
1. 时间工具类 package cn.javabs.common.utils; import java.lang.management.ManagementFactory; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import jav
杨校
2022/09/23
1.4K0
【小家Spring】Spring MVC之RequestContextHolder和LocaleContextHolder的使用详解以及使用误区
在Java Web的开发中,我们大都执行着三层的开发模式(Controller、Service、Dao)。然后很少有人知道这三层的职责便捷在哪? 所以不乏经常遇到这样的问题:我这块逻辑该写在哪呢?我相信大多数初、中甚至高级程序员也分不太清楚,逻辑分层有点信手拈来,所以最终写成了后辈们眼中的“屎”,哈哈当然代码组织结构不是本文讨论的范畴~~~
YourBatman
2019/09/03
6.2K0
Feign调用丢失Header的解决方案
在 Spring Cloud 中 微服务之间的调用会用到Feign,但是在默认情况下,Feign 调用远程服务存在Header请求头丢失问题。
程序员果果
2019/11/28
2.3K0
Java service层获取HttpServletRequest的工具类
大家都知道 能在Controller/action层获取 HttpServletRequest , 但是这里给大家备份的 是 从代码内部 service层获取HttpServletRequest 工具类。 具体如下:
执笔记忆的空白
2020/12/24
1.2K0
Spring注入的成员属性HttpServletRequest是线程安全的吗?【享学Spring MVC】
我们知道一个Http请求就是一个Request对象,Servlet规范中使用HttpServletRequest来表示一个Http请求。然而在Spring MVC中,官方并不建议你直接使用Servlet源生的API,如常见的HttpServletRequest/HttpServletResponse等,因为官方认为Servlet技术只是web的落地实现之一,它并不希望你使用具体API而和某项技术耦合,比如从Spring 5.0开始就出现了web的另一种实现方式:Reactive,它让Servlet技术从之前的必选项变成了可选项。
YourBatman
2020/03/18
3.9K0
SpringBoot异步任务获取HttpServletRequest
在使用框架日常开发中需要在controller中进行一些异步操作减少请求时间,但是发现在使用@Anysc注解后会出现Request对象无法获取的情况,本文就此情况给出完整的解决方案
code2roc
2023/07/19
9300
Springboot之自定义HandlerMethodArgumentResolver获取当前登陆者
    一般在controller方法中要获取当前登陆者,我们可以自定义HandlerMethodArgumentResolver来实现,如下:
克虏伯
2019/08/07
1.7K0
SpringMVC ServletRequestAttributes的应用
在SpringMVC的源代码中提供了一个封装过的ThreadLocal,其中保存了每次请求的HttpServletRequest对象,(详细请看org.springframework.web.context.request.ServletRequestAttributes的源代码) 。
多凡
2020/02/13
3K0
Spring中获取request的方法及其线程安全性分析
本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性。
BUG弄潮儿
2022/06/30
7010
Spring中获取request的方法及其线程安全性分析
EasyExcel工具类
起步依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.3.1</version> </dependency> EasyExcelUtil import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.metadata.style.WriteCellStyle; import
benym
2023/05/18
1.1K0
AOP拦截实现日志统一打印
需求背景:每个接口都有入参出参,如果每次都需要自己写代码打印入参出参,大家是否觉得很繁琐,为了减少冗余代码,提高同事工作效率,减少工作量,于是给代码加了aop统一拦截。
keying
2022/12/14
7020
AOP拦截实现日志统一打印
java通过自定义TraceId实现简单的链路追踪
通过SLF4J 的日志上下文MDC保存traceId,并通过springboot请求拦截器在每次请求中从请求头中获取到traceId,并将其保存进上下文中。
科技新语
2025/07/15
1220
java通过自定义TraceId实现简单的链路追踪
sso单点登录与Jsonp
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。 例如天猫和淘宝 登陆一个网站 另一个网站不需要登陆
周杰伦本人
2023/10/12
3600
Java常用工具类整合
CSDN加速:https://codechina.csdn.net/mirrors/evil0ps/utils 源码和jar见:https://github.com/evil0ps/utils
JokerDJ
2023/11/27
4000
还在用HttpUtil?SpringBoot 3.0全新HTTP客户端工具来了,用起来够优雅!
Http Interface让你可以像定义Java接口那样定义HTTP服务,而且用法和你平时写Controller中方法完全一致。它会为这些HTTP服务接口自动生成代理实现类,底层是基于Webflux的WebClient实现的。
macrozheng
2022/12/14
3.6K0
还在用HttpUtil?SpringBoot 3.0全新HTTP客户端工具来了,用起来够优雅!
Java实用工具类四:StringUtils工具类
此文仅对自己工作中用到的类进行总结,方便以后的使用。 package com.cn.hnust.util; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRe
芈亓
2022/06/17
8010
WebUtils工具类解析
WebUtils根据名称,知道是Spring当中一个工具类,主要用于Web应用程序,供各种框架使用。
Twcat_tree
2022/11/30
1.4K0
SpringMVC 源码分析之 FrameworkServlet
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程
江南一点雨
2021/04/01
6350
SpringMVC 源码分析之 FrameworkServlet
SprintBoot任意处获取Request对象[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/146115.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/27
9250
一个工具类搞定CRUD的创建人,修改人,时间等字段赋值
数据库设计过程中,我们往往会给数据库表添加一些通用字段,比如创建人、创建时间、修改人、修改时间,在一些公司的设计过程中有时会强制要求每个表都要包含这些基础信息,以便记录数据操作时的一些基本日志记录。按照平常的操作来说,通用做法是输写 sql 时,将这些信息和对象的基本属性信息一起写入数据库,当然,这也是大家习以为常的操作,这种写法无可厚非,但是对于一个高级开发人员来说,如果所有的表都进行如此操作,未免显得有点啰嗦,而且数据表多的话,这样写就有点得不偿失了。其实还有一种更简便的做法,Spring 框架大家应该是比较熟悉的,几乎每个公司都会用到,其中 aop 思想(切面编程)的经典应用场景之一就是日志记录,本文结合 aop 思想,着重介绍下 Springboot 框架下如何利用切面编程思想实现将创建人、创建时间、更新人、更新时间等基础信息写入数据库。
业余草
2021/12/06
7150
一个工具类搞定CRUD的创建人,修改人,时间等字段赋值
推荐阅读
相关推荐
杨校老师课堂之封装工具类【时间工具类|类型转换器|客户端Servlet工具类】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验