我的第一个控制器是Login
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@Controller
@SessionAttributes("session")
public class LoginController extends GlobalController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String indexAction() throws IOException {
return "login";
}
@RequestMapping(value = "/", method= RequestMethod.POST)
public String indexAction(@RequestParam String username, @RequestParam String password,HttpSession session) {
String page = "login";
if(username != "" && password != ""){
try {
if(userService.authenticationUser(username,password) == "success"){
page = "redirect:/main";
session.setAttribute("test","Salom");
//this.httpSession =session;
//System.out.println(session.getAttribute("test"));
}
else page = "login";
}
catch (Exception e){
e.fillInStackTrace();
}
}
else page = "login";
return page;
}
}
我的第二个控制器是测试
package com.springboot.app.controllers.reports;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;
import javax.servlet.http.HttpSession;
@SessionAttributes("session")
public class TestController {
@RequestMapping(value = "/test",method = RequestMethod.GET)
public String index(){
@SessionAttributes("session")HttpSession session;
return "";
}
}
答案 0 :(得分:0)
@SessionAttributes不能用于(也不能用于)在不同控制器之间的会话中存储对象。带有@SessionAttributes注释的控制器还必须告知它已完成(因此controllerA而不是ControllerB)。来自控制器a的模型消息仍然不适用于控制器B。
答案 1 :(得分:0)
您可以将LoginController传递给TestController:
e.g. Username = name
LoginController:
import org.springframework.ui.ModelMap;
@Controller
@SessionAttributes("name")
public class LoginController{
@RequestMapping(value="/login", method = RequestMethod.POST)
public String showWelcomePage(ModelMap model, @RequestParam String name, @RequestParam String password){
boolean isValidUser = service.validateUser(name, password);
if (!isValidUser) {
model.put("errorMessage", "Invalid Credentials");
return "login";
}
model.put("name", name);
model.put("password", password);
return "welcome";
TestController:
@SessionAttributes("name")
public void showUsername(ModelMap model){
System.out.println("Username is: " + (String) model.get("name");
}
}
hope there is no typo!