Управление Httpsession в springMVC

Я новичок в spring MVC и начал делать пример приложения, делая то, что я узнал. Я планирую реализовать управление сеансами весной MVC. Я нашел этой одна полезная.

но я не могу понять это ясно. Мы добавляем значения в сеанс как

HttpSession session = request.getSession(false);
session.setAttribute("key", value);
session.setAttribute("key1",  value1);

и позже мы получаем значения на основе ключей, таких как

session.getAttrubute("key");

но весной MVC я не мог видеть ничего подобного, и это полностью смущает меня.

@Controller
@SessionAttributes("thought")
public class SingleFieldController {

    @RequestMapping(value="/single-field")
    public ModelAndView singleFieldPage() {
        return new ModelAndView("single-field-page");
    }

    @RequestMapping(value="/remember")  
    public ModelAndView rememberThought(@RequestParam String thoughtParam) {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("thought", thoughtParam);
        modelAndView.setViewName("single-field-page");
        return modelAndView;
    }

}

в приведенном выше коде @SessionAttributes("thought") полностью сбивает меня с толку, Как это thought определено также мне не нужно возвращать ModelAndView так как я использую backbone.marionette.js

Итак, как я могу установить значения в сеансе и использовать их при необходимости? Я также должен преобразовать объект сеанса в мой пользовательский объект, так как, возвращая значения на экран, я возвращаю только список объектов UserDefined, которые доступны в сеансе.

поэтому, пожалуйста, помогите чтобы я лучше понял. Возможно, я смущен тем, как я использовал JSP / servlet.

обновление

ниже находится контроллер, который у меня есть и предоставил комментарии

package com.hexgen.puppet;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.hexgen.puppet.CreatePuppet;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

@Controller
public class PuppetService {

    @RequestMapping(method = RequestMethod.POST, value = "/create")
    public @ResponseBody
    void createOrder(@RequestBody CreatePuppet request) {
        //logic to add/update values in session
    }

    @RequestMapping(method = RequestMethod.GET, value = "/list")
    public @ResponseBody
    List<Puppet> getGroups() {
        //logic to retrive objects from session and convert it as List and send it back

        return puppets;
    }


}

и преобразовать объект, если это необходимо, и перейти на

2 ответов


@SessionAttributes не полностью заменяет традиционные он полностью реализует интерфейс управление сеансами. Используйте его, если два или более методов контроллера должны передавать некоторые данные. Но, используя это, мы можем достичь связи только в пределах одного класса контроллера. Вы не используете для чтения и записи из и в сеанс явно, если вы используете @SessionAttributes. Использование @SessionAttributes предложено только для недолговечного система связи. Если вам нужно хранить долгосрочные данные в сеансе, рекомендуется использовать сессии.метод setAttribute и сессии.функции getattribute явно, вместо @SessionAttributes. Для получения дополнительной информации зацените.


вы можете обрабатывать управление сеансами в springmvc, как это. вот метод контроллера

@RequestMapping(value = { "/login" }, method = RequestMethod.POST)
@ResponseBody
public String login(HttpSession session,String username,String password) throws Exception {
    Member member=userService.authenticateUser(username, password);
    if(member!=null) {
        session.setAttribute("MEMBER", member);
    } else {
        throw new Exception("Invalid username or password");
    }
    return Utils.toJson("SUCCESS");
}

пользователь будет передавать имя пользователя и пароль, а Spring будет автоматически вводить атрибут сеанса. мы будем аутентификации имя пользователя и пароль из БД. Для этого мы будем использовать некоторый метод службы, который, в свою очередь, вызовет некоторый метод репозитория, чтобы получить объект класса-члена и вернуть его здесь в контроллере. Whereever в вашем методе применения вам нужно информация, хранящаяся в сеансе, передает ее в аргументе обработчику. Вы можете найти более подробную информацию о том, как эта информация может быть проверена при каждом вызове метода по адресу http://faisalbhagat.blogspot.com/2014/09/session-management-with-spring-mvc.html