Как построить простой счетчик с помощью Spring MVC - PullRequest
0 голосов
/ 06 января 2019

Я хотел бы создать простой счетчик, основанный на сеансе с Spring MVC, который увеличивается на единицу при перезагрузке страницы. Ниже приведен код, который я пробовал до сих пор:

@Controller
@SessionAttributes("counter")
public class DemoController {

    @RequestMapping(value="/", method=RequestMethod.GET)
    public ModelAndView home(@ModelAttribute Counter c) {

        System.out.println(c);
        c.setCounter(c.getCounter+1);
        ModelAndView mv = new ModelAndView();
        mv.addObject("counter", c);
        mv.setViewName("home");
        return mv;
    }
}

Все же я всегда получаю 0 ..

Если я использую HttpServletRequest и HttpSession Весной MVC я получаю ошибку при попытке доступа к атрибутам сеанса.

    @RequestMapping(value="/", method=RequestMethod.GET)
    public ModelAndView home(HttpServletRequest req) {

        if (req.getSession().isNew()) {
            req.getSession().setAttribute("counter", new Integer(1));
        } else {
// java.lang.NullPointerException: null
            int counter = (int) req.getSession().getAttribute("counter");
            System.out.println(counter);
        }

Спасибо

РЕДАКТИРОВАТЬ: работает следующий код:

@RequestMapping(value="/", method=RequestMethod.GET)
public ModelAndView home(@CookieValue(value="counter", defaultValue="0") Long counter, HttpServletResponse res) {

    counter++;

    Cookie cookie = new Cookie("counter", counter.toString());
    res.addCookie(cookie);

    ModelAndView mv = new ModelAndView();
    mv.addObject("messaggio", "hellooo "+counter);
    mv.setViewName("home");
    return mv;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...