Я хотел бы создать простой счетчик, основанный на сеансе с 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;
}