SpringMVC拦截器之拦截跳转页面

来源:互联网 发布:一夫一妻制 知乎 编辑:程序博客网 时间:2024/05/03 10:38
package com.guide.interceptors;import java.util.Enumeration;import java.util.HashMap;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class ProvinceInterceptor implements HandlerInterceptor{public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {HttpSession session = request.getSession();Enumeration<String> e = session.getAttributeNames();HashMap< String, String> map = new HashMap<String, String>();while(e.hasMoreElements()){map.put(e.nextElement(),"");}if (map.containsKey("login_level")) {if (session.getAttribute("login_level").equals("prov")) {return true;}else{//response.sendError(501, "您已经退出。请重新登录");response.sendRedirect("/CscaCenter/login.jsp");return false;}}else{//response.sendError(502, "这里有点问题,请访问登录页面!");response.sendRedirect("/CscaCenter/login.jsp");return false;}}public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {// TODO Auto-generated method stub}public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {// TODO Auto-generated method stub}}


response.sendRedirect是通过浏览器来做转向的。

假设在A.jsp页面设置request.setAttribute("username","admin");

那么在  request.sendredirect 转向的B.jsp页面中是不能通过request.getAttribute("username");  来得到admin的。

这是因为上个页面请求已经结束,也就是 request这个对象已经消亡了。所以也就得不到admin了。

可以使用request.getDispatcherHeader(B.jsp").forward(request,response);在B.jsp页面就可以得到admin了。

此外要说明:如果你的jsp页面是在webroot目录下,那么在response.sendRedirect(参数);参数中的路径是不同的。

response.sendRedirect(参数);应该是:response.sendRedirect(request.getContextPath() + "/B.jsp");



而在request.getDispatcherHeader(参数).forward(request,response);应该使用request.getDispatcherHeader("B.jsp").forward(request,response);

0 0
原创粉丝点击