@RequestMapping(value = "/show-topics.jsp", method = RequestMethod.GET) public ModelAndView showUserTopics( @RequestParam("nick") String nick, @RequestParam(value = "offset", required = false) Integer offset, @RequestParam(value = "output", required = false) String output, HttpServletResponse response) throws Exception { Connection db = null; Map<String, Object> params = new HashMap<String, Object>(); try { response.setDateHeader("Expires", System.currentTimeMillis() + 60 * 1000); response.setDateHeader("Last-Modified", System.currentTimeMillis()); db = LorDataSource.getConnection(); User user = User.getUser(db, nick); params.put("ptitle", "Сообщения " + user.getNick()); params.put("navtitle", "Сообщения " + user.getNick()); params.put("user", user); NewsViewer newsViewer = new NewsViewer(); offset = fixOffset(offset); newsViewer.setLimit("LIMIT 20" + (offset > 0 ? (" OFFSET " + offset) : "")); newsViewer.setCommitMode(NewsViewer.CommitMode.ALL); if (user.getId() == 2) { throw new UserErrorException("Лента для пользователя anonymous не доступна"); } newsViewer.setUserid(user.getId()); params.put("messages", newsViewer.getMessagesCached(db)); params.put("offsetNavigation", true); params.put("offset", offset); params.put("rssLink", "show-topics.jsp?nick=" + nick + "&output=rss"); if (output != null && output.equals("rss")) { return new ModelAndView("section-rss", params); } else { return new ModelAndView("view-news", params); } } finally { if (db != null) { db.close(); } } }