HK仅輝 发表于 2021-6-2 15:44

SpringMVC 将值存入session中无法生效

本帖最后由 HK仅輝 于 2021-6-2 17:47 编辑

package controller;

import exception.MyException;
import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;


@Controller
@SessionAttributes("username")
public class TestController{

    @RequestMapping("login.do")
    @ResponseBody
    public String login(@RequestBody Map map,Model model){
      try{
            if (map.get("user").equals("张三") && map.get("pass").equals("123")){
                map.put("username",map.get("user"));
                return "1";
            }
            return "0";
      }catch (Exception e){
            e.printStackTrace();
            throw new MyException("错误");
      }

    }


    @RequestMapping("upload.do")
    public void upload(HttpSession session) throws IOException {
      System.out.println(session.getAttribute("username"));
    }

}


login.do 以AJAX方式发出的。返回的是一个判断码
在upload.do的请求中输出的 nullsession中没有这个数据,我存储的方式用错了吗,Model和modelAndView 都试了

求解

HK仅輝 发表于 2021-6-2 17:45

本帖最后由 HK仅輝 于 2021-6-2 17:46 编辑

https://www.cnblogs.com/phdeblog/p/10560812.html这个贴子,把问题解决了,写的很详细,就是没给出具体原因,感谢各位的解答。希望大佬详细说明一下原因

Jeanson道士哥哥 发表于 2021-6-2 16:09

login 函数登录的时候,没有操作session 。 upload函数 怎么会有值呢 ,这java web 基础 建议多看点项目,动手写

Sen 发表于 2021-6-2 16:10

你不setAttribute何来getAttribute

wangqh761117 发表于 2021-6-2 16:19

要把username放到model中吧

HK仅輝 发表于 2021-6-2 16:26

Jeanson道士哥哥 发表于 2021-6-2 16:09
login 函数登录的时候,没有操作session 。 upload函数 怎么会有值呢 ,这java web 基础 建议多看点项目, ...

虽然我是新手,但你也要了解一下注解的应用。可以说我用错了,没有操作什么鬼

HK仅輝 发表于 2021-6-2 16:28

wangqh761117 发表于 2021-6-2 16:19
要把username放到model中吧

我试过了,upload测试还是没有,我也不知道那里错了

Vvvvvoid 发表于 2021-6-2 17:35

    @RequestMapping("login.do")
    @ResponseBody
    public String login(@RequestBody Map map,Model model, HttpSession session){
      try{
            if (map.get("user").equals("张三") && map.get("pass").equals("123")){
                session.setAttribute("username",map.get("user"));
                return "1";
            }
            return "0";
      }catch (Exception e){
            e.printStackTrace();
            throw new MyException("错误");
      }

    }

VioletKiss 发表于 2021-6-2 17:40

https://www.cnblogs.com/lemon-coke-pudding/p/12756243.html

这篇文章说的挺清楚的

我心她有丶 发表于 2021-6-2 18:28

本帖最后由 我心她有丶 于 2021-6-2 18:58 编辑

model.addAttribute 试试,我直接model.addAttribute 进去能获取
页: [1] 2
查看完整版本: SpringMVC 将值存入session中无法生效