使用spring mvc做一个网站。我添加了一个 SignupController 来处理所有与注册相关的请求。用户注册后,我将使用 @Scope("session") 将其添加到会话中。下面是 SignupController 代码,
注册控制器.java
@Controller
@Scope("session")
public class SignupController {
@Autowired
SignupServiceInter signUpService;
private static final Logger logger = Logger.getLogger(SignupController.class);
private String sessionUser;
@RequestMapping("/SignupService")
public ModelAndView signUp(@RequestParam("userid") String userId,
@RequestParam("password") String password,@RequestParam("mailid") String emailId){
logger.debug(" userId:"+userId+"::Password::"+password+"::");
String signupResult;
try {
signUpService.registerUser(userId, password,emailId);
sessionUser = userId; //adding the sign up user to the session
return new ModelAndView("userHomePage","loginResult","Success");
//Navigate to user Home page if everything goes right
} catch (UserExistsException e) {
signupResult = e.toString();
return new ModelAndView("signUp","loginResult", signupResult);
//Navigate to signUp page back if user does not exist
}
}
}
我正在使用“sessionUser”变量来存储注册的用户 ID。我的理解是,当我将 @Scope("session") 用于控制器时,所有实例变量都将添加到 HttpSession。因此,通过这种理解,我尝试在 userHomePage.jsp 中访问这个“SessionUser”,
用户主页.jsp
Welcome to <%=session.getAttribute("sessionUser")%>
但它抛出空值。
所以我的问题是如何使用在 mvc 控制器中使用 @Scope("session") 保存的 jsp 页面中的会话变量的值。
注意:我的解决方法是通过 ModelAndView 将签名的用户 ID 传递给 jsp 页面,但似乎在页面之间传递这样的值让我回到使用 QueryStrings 天来管理页面之间的状态。