2016-12-19 2 views
1

J'ai une classe de haricot utilisateur avec le constructeur et getter et setterget valeur d'une session objet

public class User { 

    private String username; 
    private String password; 
} 

j'ai un contrôleur qui se connecte à un utilisateur

@PostMapping("/login") 
    public String login(@ModelAttribute User user,Model model){ 
     model.addAttribute("session", user); 
     return "index1"; 
    } 

également d'une cartographie de démonstration pour la même page index1 pour vérifier la session

@GetMapping("/find") 
public String find(Model model){ 
    return "index1"; 
} 

dans la page jsp je ne suis pas en mesure de vérifier l'utilisateur qui est rempli dans l'objet de la session

<%@ page errorPage="index.jsp" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 

<html> 
<head> 
<title>Login Page</title> 

</head> 
<body> 

    <h1>Login</h1> 
    <c:if test='${sessionScope.session.user} == "user"'> 
     <% session.invalidate(); %> 
    </c:if> 
    <p>Hello ${sessionScope.session.password}</p> 

</body> 
</html> 

J'utilise @sessionattribute du printemps pour utiliser les valeurs de session et mon nom d'objet de session est une session.

Comment invalider la session lorsque l'utilisateur est utilisateur, il est toujours disponible en tant que null s'il vous plaît.

Comment obtenir les valeurs à l'intérieur de l'objet qui est stocké dans une session

ceci est une démo pour tester la session de manutention

+0

Avez-vous essayé 'test = '$ {} sessionScope.session.username == "utilisateur"'' à la place? – dubonzi

+0

son énuméré il didiont travailler là-bas –

Répondre

0

Après ne fonctionnera pas pour vous,

@PostMapping("/login") 
    public String login(@ModelAttribute User user,Model model){ 
     model.addAttribute("session", user); 
     return "index1"; 
    } 

Parce que la première de tout ce que vous ne définissez rien dans le ModelAndView mais dans un objet model qui sera nullified une fois que vous passez à index1 voir.

Vous devez régler le cas comme suit,

@PostMapping("/login") 
    public ModelAndView login(@ModelAttribute User user, Model model, HttpServletRequest request){ 
     ModelAndView modelAndView = new ModelAndView(); 
    modelAndView.addObject("session", user); 
    modelAndView.setViewName("index1"); 
    return modelAndView; 
    } 
+0

J'utilise @sessionattribute du printemps mon nom d'objet de session est session, j'ai mentionné que dans la question. –

+0

Montrez-moi comment vous utilisez @sessionattribute de printemps s'il vous plaît – ScanQR

+0

utilisé sur le dessus du contrôleur comme @sessionattributes ("session") –