SpringMVC存取Session的两种方法

WEB 应用通常会引入 Session,用来在服务端和客户端之间保存一系列动作/消息的状态,比如网上购物维护 user 登录信息直到 user 退出。SpringMVC存取Session的两种方法,具体如下:

方法一:使用servlet-api

@Controller
public class ManagerController { 

  @Resource
  private ManagerService managerServiceImpl; 

  @RequestMapping(value = "manager/login.do",method = RequestMethod.GET)
  public ModelAndView login(ManagerModel managerModel,HttpSession httpSession){ 

    ManagerModel manager = managerServiceImpl.getManager(managerModel);
    if(manager!=null){
      manager.setPassword("");
      httpSession.setAttribute("manager", manager);
      return new ModelAndView(new RedirectView("../admin/main.jsp"));
    }else{
      return new ModelAndView(new RedirectView("../admin/login.jsp"));
    }
  } 

  @RequestMapping(value = "manager/logout.do",method = RequestMethod.GET)
  public String logout(HttpSession httpSession){
    httpSession.getAttribute("manager");
    return "success";
  }
} 

方法二:使用SessionAttributes

@Controller
@SessionAttributes("manager")
public class ManagerController { 

  @Resource
  private ManagerService managerServiceImpl; 

  @RequestMapping(value = "manager/login.do",method = RequestMethod.GET)
  public ModelAndView login(ManagerModel managerModel,ModelMap model){ 

    ManagerModel manager = managerServiceImpl.getManager(managerModel);
    if(manager!=null){
      manager.setPassword("");
      model.addAttribute("manager", manager);
      return new ModelAndView(new RedirectView("../admin/main.jsp"));
    }else{
      return new ModelAndView(new RedirectView("../admin/login.jsp"));
    }
  } 

  @RequestMapping(value = "manager/logout.do",method = RequestMethod.GET)
  public String logout(@ModelAttribute("manager")ManagerModel managerModel){
    return "success";
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • webix+springmvc session超时跳转登录页面

    引言 最近做项目,发现ajax请求不能在服务器中直接重定向到登录页面.查了些资料发现jquery的ajax请求有人给出了方法.但是webix的ajax请求和jquery的有些区别.这里模仿jquery的处理方式实现webix的ajax请求session超时跳转. 具体的做法: 1.查看webix.js源码发现webix.ajax只有请求前的监听函数 "onBeforeAjax", 要做到获取返回状态跳转登录页面必须要有个返回的监听函数,但是源码没有.所以我修改了下源码,加了个返回的监听

  • ASP.NET通过分布式Session提升性能

    如果我们正在使用Session,那么构建高性能可扩展的ASP.NET网站,就必须解决分布式Session的架构,因为单服务器的 SESSION处理能力会很快出现性能瓶颈,这类问题也被称之为Session同步.微软有自己的分布式Session的解决方案,那就是 SessionStateServer,我们可以参考: ASP.NET Session State Partitioning  http://blog.maartenballiauw.be/post/2008/01/23/ASPNET-Ses

  • 详解Spring MVC拦截器实现session控制

    未登录,不允许访问background文件夹内的页面,那如何判断是否登录呢?background是关键目录,每个操作该目录的人都需要写在日志表中,如何实现呢?拦截器是实现方案之一. (1) 在com.geloin.spring.interceptor包中添加SystemInterceptor,并使其继承HandlerInterceptor /** * * @author geloin */ package com.geloin.spring.interceptor; import java.io

  • SpringMVC实现controller中获取session的实例代码

    平时使用springMVC,在方法中访问session中经常很自然地调用Servlet API.用起来非常直观方便,一直没有多考虑什么. 比如这样: @RequestMapping(value = "/logout") public String logout(HttpSession session) { session.removeAttribute("user"); return "/login"; } 但毕竟这样对Servlet API产生

  • 详解springmvc控制登录用户session失效后跳转登录页面

    springmvc控制登录用户session失效后跳转登录页面,废话不多少了,具体如下: 第一步,配置 web.xml <session-config> <session-timeout>15</session-timeout> </session-config> 第二步,配置spring-mvc.xml <!-- Session失效拦截 --> <mvc:interceptors> <!-- 定义拦截器 --> <

  • Spring Session实现分布式session的简单示例

    前面有用 tomcat-redis-session-manager来实现分布式session管理,但是它有一定的局限性,主要是跟tomcat绑定太紧了,这里改成用Spring Session来管理分布式session,Spring Session就完全实现了与具体的容器无关,如果需要了解如何用tomcat-redis-session-manager实现分分布式session,请看我之前的文章,下面正式进入主题,Spring Session项目搭建. 1. 引入Spring Session mav

  • 深入浅出重构Mybatis与Spring集成的SqlSessionFactoryBean(上)

    一般来说,修改框架的源代码是极其有风险的,除非万不得已,否则不要去修改.但是今天却小心翼翼的重构了Mybatis官方提供的与Spring集成的SqlSessionFactoryBean类,一来是抱着试错的心态,二来也的确是有现实需要. 先说明两点: 通常来讲,重构是指不改变功能的情况下优化代码,但本文所说的重构也包括了添加功能 本文使用的主要jar包(版本):spring-*-4.3.3.RELEASE.jar.mybatis-3.4.1.jar.mybatis-spring-1.3.0.jar

  • SSH整合中 hibernate托管给Spring得到SessionFactory

    <prop key="hibernate.current_session_context_class">thread</prop> 然后 Resource resource=new ClassPathResource("/WEB-INF/applicationContext.xml"); BeanFactory factory=new XmlBeanFactory(resource); SessionFactory sessionFactor

  • 浅析PHP分布式中Redis实现Session的方法

    本文介绍的是PHP分布式中Redis实现Session的方法,下面话不多说,直接先来看两个方法是什么 方法一: 找到配置文件php.ini,修改为下面内容,保存并重启服务 session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379" 方法二: 直接在代码中加入以下内容: ini_set("session.save_handler", "redis"); ini_se

  • SpringMVC存取Session的两种方法

    WEB 应用通常会引入 Session,用来在服务端和客户端之间保存一系列动作/消息的状态,比如网上购物维护 user 登录信息直到 user 退出.SpringMVC存取Session的两种方法,具体如下: 方法一:使用servlet-api @Controller public class ManagerController { @Resource private ManagerService managerServiceImpl; @RequestMapping(value = "mana

  • TensorFlow Session使用的两种方法小结

    TensorFlow Session 在TensorFlow中是通过session进行交互的,使用session有两种方法.下面通过一个简单的例子(两个矩阵相乘)说一下 {[3,1] 与{[5,2] 相乘 [1,2]} [2,4]} 代码 #encoding=utf-8 import tensorflow as tf matrix1 = tf.constant([[3,1],[1,2]]) matrix2 = tf.constant([[5,2],[2,4]]) product = tf.mat

  • springmvc 防止表单重复提交的两种方法

    目录 1.通过session中的token验证 步骤1:创建自定义注解 步骤2:创建自定义拦截器(@slf4j是lombok的注解) 步骤3:将自定义拦截器添加到配置文件 2.通过当前用户上一次请求的url和参数验证重复提交 步骤1:创建自定义注解 步骤2:创建自定义拦截器 步骤3:将自定义拦截器添加到配置文件 最近在本地开发测试的时候,遇到一个表单重复提交的现象. 因为网络延迟的问题,我点击了两次提交按钮,数据库里生成了两条记录.其实这种现象以前也有遇到过,一般都是提交后把按钮置灰,无法再次提

  • springMVC使用jsp:include嵌入页面的两种方法(推荐)

    1.静态嵌入子页面 <%@ include file="header.jsp" %> 静态嵌入支持 jsp . html . xml 以及纯文本. 静态嵌入在编译时完成,相当于直接将子页面的文本插入到 include 标签所在的位置.子页面可直接使用父页面中的变量. 2.动态嵌入子页面 使用 jsp:include 时必须设置 flush 属性为 true . <jsp:include page="/main/header.jsp" flush=&

  • MySQL设置global变量和session变量的两种方法详解

    1.在MySQL中要修改全局(global)变量,有两种方法: 方法一,修改my.ini配置文件,如果要设置全局变量最简单的方式是在my.ini文件中直接写入变量配置,如下图所示.重启数据库服务就可以使全局变量生效. 我们打开几个mysql命令行,可以看到所有会话中的变量都生效了,如图 方法二,在不修改配置文件的基础上,使用关键字global设置全局变量 set global autocommit=1; 将autocommit变量的值设置为ON 需要注意的是,使用此方法对global全局变量的设

  • DWR3 访问WEB元素的两种方法实例详解

    DWR3访问WEB元素主要有两种方法, 第一种是类似于SpringMVC的用法,直接使用,也就是说在需要使用DWR来远程调用的方法上给一个需要用到的WEB元素作为参数,这个参数在调用该方法的时候不需要用户来传递,当调用该方法的时候系统会自动的给该参数赋值,这时候我们就可以在方法体中自由的使用了! 如: public void test(HttpSession session) { System.out.println(session.getId()); } public void test(St

  • PHP中对用户身份认证实现两种方法

    当访问者浏览受保护页面时,客户端浏览器会弹出对话窗口要求用户输入用户名和密码,对用户的身份进行验证,以决定用户是否有权访问页面.下面用两种方法来说明其实现原理. 一.用HTTP标头来实现 标头是服务器以HTTP协议传送HTML信息到浏览器前所送出的字串.HTTP采用一种挑战/响应模式对试图进入受密码保护区域的用户进行身份验证.具体来说,当用户首次向WEB服务器发出访问受保护区域的请求时,挑战进程被启动,服务器返回特殊的401标头,表明该用户身份未经验证.客户端浏览器在检测到上述响应之后自动弹出对

  • Python更新数据库脚本两种方法及对比介绍

    最近项目的两次版本迭代中,根据业务需求的变化,需要对数据库进行更新,两次分别使用了不同的方式进行更新. 第一种:使用python的MySQLdb模块利用原生的sql语句进行更新 import MySQLdb #主机名 HOST = '127.0.0.1' #用户名 USER = "root" #密码 PASSWD = "123456" #数据库名 DB = "db_name" # 打开数据库连接 db=MySQLdb.connect(HOST,U

  • Hibernate中获取Session的两种方式代码示例

    Session:是应用程序与数据库之间的一个会话,是Hibernate运作的中心,持久层操作的基础.对象的生命周期/事务的管理/数据库的存取都与Session息息相关. Session对象是通过SessionFactory构建的,下面举个例子来介绍Hibernate两种获取session的方式. 日志,是编程中很常见的一个关注点.用户在对数据库进行操作的过程需要将这一系列操作记录,以便跟踪数据库的动态.那么一个用户在向数据库插入一条记录的时候,就要向日志文件中记录一条记录,用户的一系列操作都要在

  • Java动态验证码单线设计的两种方法

    1.java的动态验证码我这里将介绍两种方法: 一:根据java本身提供的一种验证码的写法,这种呢只限于大家了解就可以了,因为java自带的模式编写的在实际开发中是没有意义的,所以只供学习一下就可以了,待会讲解的第二种呢就是我们需要掌握的一种模式了: 第一种的代码如下: import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import

随机推荐

其他