文档章节

对springmvc入参进行修改的几个方法 - 类似于修改request里的paramter

龙鸣
 龙鸣
发布于 2015/08/26 18:00
字数 412
阅读 1973
收藏 1
点赞 0
评论 0

场景: springmvc 的请求入参可以用@RequestParam 、@ModelAttribute等来自动获取,但现在有个需求去根据请求参数里的token去获取自定义的Session,然后可以绑定到方法的参数上,而不需要用静态方法去自己获取。

修改前: 

@RequestMapping()
public String test(@RequestParam(requeired = false) String token)
{
    /*意味着每个需要session的地方都需要自己手动获取*/
    Session session =SessionUtil.getSession(token);
}
修改后:
@RequestMapping()
public String test(@ModelAttribute("session")Session session)
{
    /*这里可以直接调用*/
    session.doSomeThing();
}
具体方法有三个(我目前所能找到的):

1. 

@ModelAttribute
    public void getSession(HttpServletRequest request,Model model)
    {
        String token = request.getParameter(GlobalStatic.token_name);
        if (Strings.isNullOrEmpty(token))
        {
            model.addAttribute("session", null);
        }
        else
        {
            System.out.println((String)token);
            model.addAttribute("session", 
            sessionFactory.getSession(token));
        }
    }
这个bind方法可以放在父类Controller里面,你可以根据需求处理没有token的情况。还有就是这个方法还有一些变化,可以参照:
http://blog.csdn.net/li_xiao_ming/article/details/8349115

2.

<mvc:annotation-driven >
		修改request过来的参数,可以实现类似于往parameter里添加参数的功能
		<mvc:argument-resolvers>
			<bean class="TokenHandler"></bean>
		</mvc:argument-resolvers>
	</mvc:annotation-driven>

这里可以配置paramHandler来处理入参,具体代码如下:


public class TokenHandler implements WebArgumentResolver {
    @Override
    public Object resolveArgument(MethodParameter methodParameter,NativeWebRequest webRequest) throws Exception {
        if (methodParameter.getParameterName().equals("token"))
        {
            return new Session();
        }
        return null;
    }
}



上面实现WebArgumentResolver接口,如果有token就会返回session,没有就返回null,可以根据自己业务修改。



3.使用HttpServletRequestWrapper来包装request,然后在filter的chain.dofilter里包装下。





© 著作权归作者所有

共有 人打赏支持
龙鸣
粉丝 3
博文 12
码字总数 5345
作品 0
常州
后端工程师
SpringMVC基于注解的Controller

本文将介绍 Spring 2.5 新增的 Sping MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。 一个简单的基于注解的 Controller 使用过低版本 Spring MVC 的读者都知道...

黎嘉诚 ⋅ 2016/08/21 ⋅ 0

SpringMVC 基于注解的Controller @RequestMapping @Request

概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能。现在你无须让 Controller 继承任何接口,无需在 XML 配置文件中定义请求和 Controller...

蓝狐乐队 ⋅ 2014/02/28 ⋅ 1

同是流行MVC框架,比较Strtus2和SpringMVC的区别

Struts2和SpringMVC是比较流行的MVC框架,二者的工作流程大体相似,从下面两张图就可以看出。 SpringMVC工作流程图 图二 SpringMVC的工作流程描述 1. 用户向服务器发送请求,请求被Spring前端...

非沧海一粟不随波逐流 ⋅ 2016/12/14 ⋅ 0

JAVA学习笔记22——SpingMVC框架第二章

JAVA学习笔记22——SpingMVC框架第二章 Harries Blog™2017-12-210 阅读 ACESpringAppbeancatActionAjax 昨天讲解了 SpringMVC 的入门,今天来讲讲进阶一点的知识,话不多说,请看下文。 今天...

Harries Blog™ ⋅ 2017/12/21 ⋅ 0

Spring MVC

Spring MVC一、什么是 Spring MVC Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面,是一个强大灵活的 Web 框架。Spring MVC 提供了一个 DispatcherServlet ...

任任任任师艳 ⋅ 2017/11/20 ⋅ 0

详解Java的Spring框架中的注解的用法

使用Spring注解来注入属性 1.1. 使用注解以前我们是怎样注入属性的 类的实现: 配置文件: 1.2. 引入@Autowired注解(不推荐使用,建议使用@Resource) 类的实现(对成员变量进行标注) 或者...

Airship ⋅ 04/22 ⋅ 0

SpringMVC学习篇—SpringMVC原理

先来看两副图 Spring MVC工作流程图 图1: 图2: Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2. DispatcherServlet对请求URL进行解...

Mysoft ⋅ 2015/09/22 ⋅ 0

SpringMVC ------处理模型数据

Spring MVC提供了以下几种途径输出模型数据: -- ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据。 --Map及Model:入参为org.springframework.ui.Mode...

Rickxue ⋅ 2015/12/17 ⋅ 0

Spring Mvc详解

一、spring mvc处理请求的流程。 客户端发出http请求,如果匹配到DispatcherServlet的请求映射路径,则web容器将请求转交给DispatcherServlet处理。 DispatcherServlet接受到请求后,根据请求...

cnslp ⋅ 2017/06/10 ⋅ 0

说说 Spring 的注解配置

1 定义 Bean XML 或注解配置方式,都是表达 Bean 定义的载体,其实质都是为 Spring 容器提供 Bean 定义的信息 。 基于注解的配置方式,从 Spring2.0 开始引入, Spring2.5 完善, Spring4.0 ...

deniro ⋅ 05/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue使用mockjs

在使用vue开发的时候,一直疑惑与mockjs怎么用,开了mockjs的开发文档,还是一脸蒙蔽,无从下手!mockjs在前后端分离开发上进行模拟数据,是不可避掉的一环。在网上看了一些博文还有查阅了其...

JamesView ⋅ 23分钟前 ⋅ 0

解决问题的思路

1.相对来说,程序逻辑解决问题的思路应该更加趋向于通过逻辑结构来解决问题,而不是通过更小的类级别和方法级别的改进 2.类级别和方法级别的改进需要的技术能力更高一点

th778899 ⋅ 29分钟前 ⋅ 0

HTTP请求状态及jQuery AJAX请求异常处理

上一周调优一个项目的Js部分,其中一个严重的问题就是在页面初始化数据时,没有对异常进行处理, 导致Loading一直在等待中,无提示无处理。在用户体验上很不好,即使网络条件无法保证,在出错...

临江仙卜算子 ⋅ 30分钟前 ⋅ 0

error code 1874. innodb is in read only mode--报错解决

参考网页 https://zhidao.baidu.com/question/746894876932022292.html https://blog.csdn.net/shushugood/article/details/80226767 问题背景 创建了一个数据库然后想删除,因为自己本机性能......

karma123 ⋅ 31分钟前 ⋅ 0

JVM系列:jinfo命令详解

jinfo全称Java Configuration Info,主要作用是实时查看和调整JVM配置参数。 一.查看JVM参数 用法:jinfo -flag <name> PID 示例: # jinfo -flag MaxMetaspaceSize 11180 # -XX:MaxMetaspac......

Jacktanger ⋅ 35分钟前 ⋅ 0

exportfs命令、NFS客户端问题、FTP介绍、使用vsftpd搭建ftp

1. exportfs命令 一般情况下重启服务器上nfs服务时,需把客户端上的挂载先卸载掉,以免进程后面杀不掉。当客户端服务器很多时,操作起来就比较麻烦。此时可以使用exportfs命令重新加载下。 ...

laoba ⋅ 45分钟前 ⋅ 0

基于Python的信用评分卡模型分析

信用风险计量体系包括主体评级模型和债项评级两部分。主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用“四张卡”来表示,分别是A卡、B卡、C卡和F卡;债项评级模型通常按照主...

火力全開 ⋅ 46分钟前 ⋅ 0

执行make命令时报错g++: Command not found

执行make命令时报错g++: Command not found 2016年10月24日 12:31:29 阅读数:4366 朋友安装node时遇到的问题 报错截图: 其实很简单只需要安装一下 yum -y install gcc automake autoconf l...

rootliu ⋅ 46分钟前 ⋅ 0

Loongnix(龙芯)系统,优盘安装指南

U盘安装分为两种方式:"usb disk" 及 "usb cd"。其中usb cd是将usb disk做为usb光驱使用。 usb disk安装步骤: 需要准备一个大小超过3.5G的U盘,格式化ext3格式 下载安装光盘镜像xxx.iso,将...

gugudu ⋅ 49分钟前 ⋅ 0

HTML5中meta属性的使用详解

meta属性在HTML中占据了很重要的位置。如:针对搜索引擎的SEO,文档的字符编码,设置刷新缓存等。虽然一些网页可能没有使用meta,但是作为正规军,我们还是有必要了解一些meta的属性,并且能...

guorongjin ⋅ 53分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部