Utilizando la clase HttpSession basado en spring aplicaciones web

0
298

Hay múltiples maneras de obtener y utilizar la clase HttpSession con una aplicación de web basado en spring. en esta guía se verán pequeños fragmentos de código de como podemos usar HttpSession.

Forma 1: En spring exite un anotación @Autowired con tan solo ponerlo ya estamos inyectando al HttpSession y directamente podemos usar su método y verificar si se tienen atributos en sesión.

@Service
public class ShoppingCartService {
  
 @Autowired
 private HttpSession httpSession;
 ...
} 

Forma 2: Recibir como parametro el HttpSesion, esto funcionará sólo en el nivel de la web en la actualidad java también usa anotaciones @Inject = @Autowired.

@Controller
public class ShoppingCartController {
 
  @RequestMapping("/addToCart")
  public String addToCart(long productId, HttpSession httpSession) {
    //codigo usando httpSession 
  }
 
}

Forma 3:  Crear un bean y alcance a la sesión de esta manera:

@Component
@Scope(proxyMode=ScopedProxyMode.TARGET_CLASS, value="session")
public class ShoppingCart implements Serializable{
...
}

Forma 4: En spring MVC se tiene una anotación @SessionAttribute:

@SessionAttributes("shoppingCart")
public class OrderFlowController {
  
  
 public String step1(@ModelAttribute("shoppingCart") ShoppingCart shoppingCart) {
   
 }
  
 public String step2(@ModelAttribute("shoppingCart") ShoppingCart shoppingCart) {
   
 }
  
 public String step3(@ModelAttribute("shoppingCart") ShoppingCart shoppingCart, 
SessionStatus status) {
  status.setComplete();
 } 
 
}

EJEMPLO DE LOGIN SPRING MVC – HTTPSESSION GET/POST: 

en este pequeño ejemplo en el controller de spring mvc recibimos como parametros el usuario y contraseña, tenemos un UserService donde se encuentra un método login el cual retorna un resultado y según el resultado se redirige al usuario.

	@Autowired
        private UserService _service;

        @SuppressWarnings("unchecked")
	@RequestMapping(value = "/login", method = RequestMethod.POST)
	public String login(@RequestParam("txtUsername") String userName, @RequestParam("pwdPassword") String password,
			Model model, HttpSession session) {

		ResponseEntity response = null;
		String view = "";
		try {
			response = _service.login(userName, password); // Servicio 
			if (response.getSuccess() == true) {
				session.setAttribute("user", response.getUsername());
				view = "redirect:/home/index";
			} else {
				model.addAttribute("error", response.getMessage());
				view = "redirect:/user/user/login";
			}

		} catch (Exception ex) {
			model.addAttribute("error", "Error de sesión");
			view = "../areas/admin/user/login";
		}

		return view;
	}

CONTROLADOR PARA INVALIDAR UNA SESIÓN: 

	@RequestMapping(value = "/logout", method = RequestMethod.GET)
	public String logout(HttpSession session) {
		session.invalidate();
		return "redirect:/user/loginguest";
	}

Comments

comments

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Ingrese su nombre aquí