下面分享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)$";