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