spring mvc を使用して Web サイトを作成しています。サインアップに関連するすべてのリクエストを処理する SignupController を追加しました。ユーザーがサインアップしたら、 @Scope("session") を使用してそれをセッションに追加しています。以下は SignupController コードです。
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」にアクセスしようとしました。
userHomepage.jsp
Welcome to <%=session.getAttribute("sessionUser")%>
しかし、それはnullをスローします。
私の質問は、mvc コントローラーで @Scope("session") を使用して保存された jsp ページでセッション変数の値を使用する方法です。
注: 私の回避策は、署名されたユーザー ID を ModelAndView を介して jsp ページに渡すことですが、ページ間でこのような値を渡すと、QueryStrings 日を使用してページ間で状態を管理するようになります。