关于异步请求springmvc不同controller时取不到session的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于异步请求springmvc不同controller时取不到session的问题相关的知识,希望对你有一定的参考价值。

参考技术A

很多小菜鸟们在使用比如vue的axios对后端进行异步请求时候,比如做到关于注册的验证码的业务时候,明明在后端存进了session时候,但是第二次请求另一个接口的时候session取不到了(null),那是因为前端在请求的时候没有带上cookie,对于后端来说就产生了两个不同的session
那这种情况怎么解决呢?
拿微信小程序举例来说
1、首先我们可以全局设置一个空cookie

2、在第一次请求的接口中获取这次用到的session的id并且作为数据返回

3、在微信小程序中处理业务的js中接受返回的id并且赋值给cookie

4、在第二次请求的时候将cookie封装到请求头中

这样子呢,这种简单粗暴的方式就可以解决不同controlle会产生不同的session的问题啦

在springmvc中controller的一个方法处理多个不同请求

1、首先创建一个springmvc单元测试类MvcTest:加载spring配置文件和springmvc配置文件。

2、然后传入springmvc的ioc@RunWith(SpringJUnit4ClassRunner.class)。

3、创建MockMvc对象,虚拟mvc请求,获取处理结果。

4、模拟发送请求,拿到返回值。

5、请求成功之后,请求域中会有pageInfo。

6、最后请求完成后,点击打印程序结果,就完成了 。

参考技术A @RequestMapping(value="url1","url2","url3"....) 
还可以配置通配符匹配多个请求

追问

配置通配符匹配多个请求,这个能不能在详细点

追答

value的uri值为以下三类:

A)
可以指定为普通的具体值;

B) 
可以指定为含有某变量的一类值(URI Template Patterns with Path Variables);

@RequestMapping(value="/owners/ownerId", method=RequestMethod.GET)   
public String findOwner(@PathVariable String ownerId, Model model)    
  Owner owner = ownerService.findOwner(ownerId);     
  model.addAttribute("owner", owner);     
  return "displayOwner";    

C)
可以指定为含正则表达式的一类值( URI Template Patterns with Regular Expressions);

@RequestMapping("/spring-web/symbolicName:[a-z-]+-version:\\d\\.\\d\\.\\d.extension:\\.[a-z]")   
  public void handle(@PathVariable String version, @PathVariable String extension)        
    // ...   
     

本回答被提问者采纳
参考技术B 用注解@requestMapping吧好像追问

我知道是用这个,但是怎么写?

追答

@requestMapping(里面写访问的路径) 进入这个方法是跳转的括号里的路径就行了

参考技术C 一个方法想处理不同的请求,应该主要在判断传递参数上了吧,同过不同的参数去执行不同 的代码,controller方法有两种传递参数的方法:
一:直接做为路径去传
@RequestMapping(value = "/createhtml/id/type.htm", method = RequestMethod.GET)
public void createHtml(@PathVariable Long id, @PathVariable Integer type)
二:使用方法函数去传
@RequestMapping(value = "/save.htm“)
public String save(String str)--这个str可以直接接收jsp传过来的参数,
不知道以上回答是不是你想要的。追问

我问的是不同的请求对应一个方法,这个RequestMapping是怎么写的

追答

你对应的一个方法,那就是访问路径是估定的,按正常写就行,你想的太多了

以上是关于关于异步请求springmvc不同controller时取不到session的问题的主要内容,如果未能解决你的问题,请参考以下文章

springmvc中针对一个controller方法配置两个url请求

springMVC 解决ajax请求的406错误

SpringMVC学习笔记

springMVC 返回json数据

SpringMVC当中的Controller接口和Struts2当中的Action有啥区别

SpringMVC---RequestMapping注解类的使用方法