首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Restful:如何在Service类中访问Httpsession?

在Service类中访问HttpSession,可以通过以下几种方法实现:

  1. 使用HttpServletRequest对象

在Service类中添加一个接收HttpServletRequest对象的方法,然后通过该对象获取HttpSession对象。例如:

代码语言:java
复制
public void serviceMethod(HttpServletRequest request) {
    HttpSession session = request.getSession();
    // 使用session对象进行操作
}
  1. 使用ThreadLocal

创建一个ThreadLocal变量来存储HttpSession对象,然后在Service类中使用该变量进行操作。例如:

代码语言:java
复制
public class HttpSessionContext {
    private static final ThreadLocal<HttpSession> sessionThreadLocal = new ThreadLocal<>();

    public static void setSession(HttpSession session) {
        sessionThreadLocal.set(session);
    }

    public static HttpSession getSession() {
        return sessionThreadLocal.get();
    }

    public static void removeSession() {
        sessionThreadLocal.remove();
    }
}

在Controller类中,将HttpSession对象存储到ThreadLocal变量中:

代码语言:java
复制
@RequestMapping("/test")
public void test(HttpSession session) {
    HttpSessionContext.setSession(session);
    // 调用Service类中的方法
}

在Service类中,使用ThreadLocal变量获取HttpSession对象:

代码语言:java
复制
public void serviceMethod() {
    HttpSession session = HttpSessionContext.getSession();
    // 使用session对象进行操作
}
  1. 使用Spring Session

Spring Session提供了一种统一的Session管理方案,可以将HttpSession存储到其他地方,如Redis中。这样,Service类就可以通过Spring Session API来获取HttpSession对象。例如:

代码语言:java
复制
@Autowired
private HttpSession httpSession;

public void serviceMethod() {
    // 使用httpSession对象进行操作
}

总之,在Service类中访问HttpSession有多种方法,可以根据具体的场景和需求选择合适的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SpringMVC学习笔记(五) --- 异常处理、图片上传、Json数据交互、RESTful支持、拦截器

异常处理思路:系统异常包括两:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。...步骤一:自定义异常 为了区别不同的异常通常根据异常类型自定义异常,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。...; } 2、图片上传 步骤一:配置虚拟目录 在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml添加: 访问http://localhost:8080/pic即可访问...如果在DispatcherServlet设置url-pattern为 /则必须对静态资源进行访问处理。...1、有一个登录页面,需要写一个controller访问页面 2、登录页面有一提交表单的动作。需要在controller处理。

70830
  • Spring Session 实现分布式会话管理

    第二种是自己写一套会话管理的工具,包括Session管理和Cookie管理,在需要使用会话的时候都从自己的工具获取,而工具后端存储可以放到Redis。...Redis或Apache Geode,它们能够以独立于应用服务器的方式提供高质量的集群。...当用户使用WebSocket发送请求的时候,能够保持HttpSession处于活跃状态。 在非Web请求的处理代码,能够访问session数据,比如在JMS消息的处理代码。...控制session id如何在客户端和服务器之间进行交换,这样的话就能很容易地编写Restful API,因为它可以从HTTP 头信息获取session id,而不必再依赖于cookie。...* 2、Spring Session 支持RESTFul APIS,响应头回返回x-auth-token,来标识当前session的token, * 即HeaderHttpSessionStrategy

    1.7K90

    SpringMVC【校验器、统一处理异常、RESTful、拦截器】

    这里写图片描述 ---- 统一异常处理 在我们之前SSH,使用Struts2的时候也配置过统一处理异常… 当时候是这么干的: 在service自定义异常 在action层也自定义异常 对于Dao层的异常我们先不管...【因为我们管不着,dao层的异常太致命了】 service层抛出异常,Action把service层的异常接住,通过service抛出的异常来判断是否让请求通过 如果不通过,那么接着抛出Action异常...我们知道Java的异常可以分为两 编译时期异常 运行期异常 对于运行期异常我们是无法掌控的,只能通过代码质量、在系统测试时详细测试等排除运行时异常 而对于编译时期的异常,我们可以在代码手动处理异常可以.../输出异常 ex.printStackTrace(); //统一异常处理代码 //针对系统自定义的CustomException异常,就可以直接从异常获取异常信息...对于处理异常,SpringMVC是用一个统一的异常处理器的。实现了HandlerExceptionResolver接口。 对模块细分多个异常,都交由我们的统一异常处理器进行处理。

    1.5K120

    SSM第七讲 SpringMVC概述和基础知识详解

    它通过一套注解,让一个简单的 Java 成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful 编程风格的请求。 2....其中 web层相当于mvc的view+controller,Service层和dao层相当于mvc的model。 ? 3....,即在上使用@RequestMapping注解,类似于一级目录,以后访问此类下的任意资源都需要加上此目录 上 请求 URL 的第一级访问目录。...RESTFUL 所谓的路径变量,就是将参数放在路径里面,而不是放在?的后面 :原get请求方法 /login.mvc?...默认参数绑定的是表单数据,如果数据不是来自表单(restful),那么必须需要强制绑定 b. 数据是来自表单的,但是参数名不匹配,那么也需要强制绑定 c.

    1.3K20

    拦截器的骚操作

    JSON数据交互和RESTful开发 SpringBoot和SpringCloud可以看这里 初次见面,请多多指教。。...要使用Spring MVC的拦截器,就需要对拦截器进行定义和配置。通常拦截器可以通过两种方式来定义。...第一种:通过实现HandlerInterceptor接口,或继承HandlerInterceptor接口的实现HandlerInterceptorAdapter)来定义。...应用案例 案例说明 : 实现用户登录权限验证 “案例,只有登录后的用户才能访问系统的主页面,如果没有登录系统而直接访问主页面,则拦截器会将请求拦截,并转发到登录页面,同时在登录页面给出提示信息。...首先介绍了如何在Spring MVC项目中定义和配置拦截器, 然后详细讲解了单个拦截器和多个拦截器的执行流程, 最后通过一个用户登录权限验证的应用案例演示了拦截器的实际应用。

    58050

    JSP+Servlet项目整合

    退出功能的实现 功能实现步骤 注册功能的实现 如何在注册成功时输出提示信息?...功能实现步骤 1、创建相关jsp页面并导入前端模板,通过form表单将注册信息提交到Servlet 2、创建Servlet实现相关的业务逻辑 3、调用业务层方法,并在其实现实现它 4、调用...3、使用反射我们实现了在service动态的根据请求调研对应的方法进行处理,但是在真实的开发过程,虽然不会为每一个功能都创建一个Servlet,但是也不会只使用一个Servlet。...我们需要自在这些Servletservice方法并将反射代码声明一遍。...3、正常访问自己的Servlet,并在调用相关方法时,使用Base?method=UserLogin 进行访问。(Base为BaseServlet的别名。

    1.5K30

    Spring全家桶之SpringSession「建议收藏」

    对于 Session 服务器,我们可以使用 Redis 或者 MongoDB 等内存数据库来保存 Session 的数据,以此替换掉服务HttpSession。...=(String) session.getAttribute("msg"); return msg; } } 3.测试结果 访问session_service1的controller查看结果 查看...redis数据库是否存放了session数据 默认的保存的时间约为2100s 访问session_service2 的controller查看结果 共享自定义对象 在上面的案例中进行修改...; } 3.测试结果 访问session_service1的controller查看结果 查看redis数据库是否存放了session数据 访问session_service2 的controller...sessionAttr:Attributes 的数据存储 Session 的详细信息,包括 Session 的过期时间间隔、最后的访问时间、attributes 的值。

    2.1K30

    SpringBoot 学习总结

    SpringBoot 开发常用注解 @RequestMapping // springmvc 访问链接注解 @GetMapping // 处理get请求的映射 等同于 @RequestMapping...(常用于restful) @Controller // springmvc 控制器注解 @RestController // restful 控制器注解 @RequestBody // 接受json...@ExceptionHandler // 定义控制器发生异常之后的操作, @ModelAttribute // 在控制器方法执行之前对数据模型进行操作 @SessionAttribute // 获取HTTPSession...中保存的参数 @SessionAttributes // 只能用于的注解,会将符合制定名称或类型的模型属性保存到HttpSession @Bean(name="beanName") // 自定义...不在重定向的url传参, 给重定向传参是用 RedirectAttributes 作为 Controller 参数, 它有一个 addFlashAttribute 的方法, 使用这个方法传递参数

    87110

    java笔试题库_java笔试题50道 收藏版

    D、JavaBean 答案:D 29、在JSP,使用动作可以将javaBean嵌入JSP页面,对JavaBean的访问范围不能是( )。...的Javabean,user包含loginName属性以及相应的setter和getter方法,如果用户A在浏览器访问jsp1.jsp后,用户B在浏览器访问jsp2.jsp,则用户B的浏览器将(...()方法( )(选择二项) A、大多数情况下都应该覆盖service()方法 B、应当从doGet()或doPost()调用service()方法 C、应当从init()调用service()方法 D、...应当至少覆盖一个doXXX( )方法(doPost()) 答案:AD 35、关于会话属性,以下哪些说法是正确( )(选择两项) A、HttpSession.getAttribute(String)的返回类型是...A、prefix B、name C、tag D、uri 答案:A 42、JavaBean是在Java开发的可以跨平台的重用组件,JavaBean必须满足的要求不包括( ) A、是一个共有 B、实现

    1.1K20

    MyBatis+Spring MVC开发指南(四)前言Spring、Spring MVC、MyBatis整合思路分析分析:Controller到底该如何写?Spring MVC如何进行异常处理?JSO

    的管理(实例化以及依赖注入),还会对Service进行事务控制,可见Spring就是整合的核心!...(Model/ModelMap/HttpServletRequest/HttpServletResponse/HttpSession这些可以直接使用!)...第一,直观上来说,Spring MVC基于方法开发,而Struts2基于开发; 第二,从参数绑定来看,Struts2是基于的成员变量进行绑定的,为了避免多线程问题,是多例的;而Spring MVC...到这里,你应该有点感触了,那就是说我们访问一个URL,需要通过不同的HTTP METHOD来进行区分处理。这个就有点麻烦了,实质上,在实际开发,能够做到这一点的,太少了!...什么问题呢,就是对静态资源的访问问题。 需要修改web.xml指明CSS/JS/IMG等静态资源的处理方式。

    65420
    领券