2014-01-27 19 views
1

我是初學者,春天& java。我如何正確地將UserDetailedInfo模型傳入SessionAttrtibutes以在不同的控制器和不同的jsps中訪問它? 我想創建一個使用spring框架的登錄系統。在參數如何在spring中設置sessionAttributes並在不同的jsps和控制器中訪問它們

//this is my mainpagecontroller.java 
@Controller 
@SessionAttributes("model") 
public class MainPageController{ 

    @RequestMapping(value="/signin", method=RequestMethod.POST) 
    @ResponseBody 
    public Map<String, Object> userSignIn(@RequestParam Map<String,String> param, ModelMap sessions) throws UnsupportedEncodingException { 
     FormHelpers helper = new FormHelpers(); 
     Map<String, Object> resp = new HashMap<String, Object>(); 
     resp.put("status", helper.signIn(param).getError()); 
     sessions.addAttribute("model",resp); 

     System.out.println(resp); 
     //System.out.println(info.get); 
     return resp; 
    } 
} 

//formhelpers.java 
public UserDetailedInfo signIn(Map<String, String> data) { 
     Map<String, String> params = new HashMap<String, String>(); 

     SigninModel model = new SigninModel(); 
     model.setEmail(data.get("email")); 
     model.setPassword(data.get("password")); 
     params.put("email", model.getEmail()); 
     params.put("password", model.getPassword()); 
    try { 
     ObjectMapper mapper = new ObjectMapper(); 
     String response = GlobalHelper.callService(RestServicesUrl.SIGNIN_URL, params); 
     UserDetailedInfo info = mapper.readValue(response, UserDetailedInfo.class); 
     System.out.println("error"+info.getError()); 
     return info; 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return new UserDetailedInfo(); 
    } 
} 

//singedinhomepagecontroller.java 
@Controller 
@RequestMapping(value="/main") 
@SessionAttributes("model") 
public class SignedInHomePageController 
{ 
    @RequestMapping(method=RequestMethod.GET) 
    @ResponseBody 
    public ModelAndView displaySignInHomePage(@ModelAttribute FormHelpers model) 
    { 
     ModelAndView view = new ModelAndView("homepage"); 
     System.out.println(model.signIn().getEmail()); //unable to access the from session 
     return view; 
    } 

} 

//home.jsp

+0

最好只是在時間添加一個問題。 – jcrada

+0

好吧編輯只問一個問題! – ravi

回答

1

使用HTTP會話,並設置atributte並獲得屬性附加傷害的方法

public ModelAndView test(HttpSession session) 
{ 
     session.setAttribute("success" , "successfully accessed"); 
} 

然後在其他控制器的方法

public ModelAndView test(HttpSession session) 
{ 
     String sessionVar = session.getAttribute("success"); 
} 

有關創建登錄系統我會推薦使用http://projects.spring.io/spring-security/

+0

我可以傳遞對象嗎? session.setAttribute(「成功」,助手) - 從我的主控制器?我想沒有使用@sessionAttributes的意義? – ravi

+1

是的,你不能穿上任何你想要的對象。您可以通過這種方式使用@sessionAttributes http://www.roseindia.net/tutorial/spring/session-attributes-annotation.html – jcrada

+0

現在可以工作嗎? – jcrada

相關問題