下面分享redirect 带回message功能代码
首先在redirect时将referer,message放到session中,如下:
String referer = req.getHeader("Referer"); if(! Strings.isEmpty(message) && !Strings.isEmpty(referer)){ req.getSession().setAttribute(CV.REDIRECT_MESSAGE, message); req.getSession().setAttribute(CV.REDIRECT_OLD_URL, referer); }然后用filter去识别,当新请求的refer和session中的referer相同时,将session中的message注入到 request中,否则清空session的referer和message值
就保证message不会带到别的url中
filter代码:
HttpServletRequest req = (HttpServletRequest) arg0; String realPath = Mvcs.getRequestPathObject(req).getUrl(); if (null != ignorePtn && !ignorePtn.matcher(realPath).find()) { HttpSession session = req.getSession(true); String oldUrl = (String) session.getAttribute(CV.REDIRECT_OLD_URL); if(! Strings.isEmpty(oldUrl)){ String referer = req.getHeader("Referer"); if(!(Strings.isEmpty(referer) || ! oldUrl.equals(referer))){ req.setAttribute(CV.REDIRECT_MESSAGE, session.getAttribute(CV.REDIRECT_MESSAGE)); } session.setAttribute(CV.REDIRECT_OLD_URL, null); session.setAttribute(CV.REDIRECT_MESSAGE, null); } } arg2.doFilter(arg0, arg1); }private static final String IGNORE = "^.+\\.(jsp|png|gif|jpg|js|css|jspx|jpeg|swf)$";