配置文件请看上一篇,这篇只写实现:
package com.bz.cy.interceptor;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class UserVipInterceptor extends HandlerInterceptorAdapter
{
// 还没发现可以直接配置不拦截的资源,所以在代码里面来排除
public String[] allowUrls;
public void setAllowUrls(String[] allowUrls)
{
this.allowUrls = allowUrls;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception
{
String requestUrl = request.getRequestURI().replace(request.getContextPath(), "");
String requestPath = request.getServletPath();
System.out.println("request:" + requestPath);
System.out.println(requestUrl);
if (null != allowUrls && allowUrls.length >= 1)
for (String url : allowUrls)
{
if (requestUrl.contains(url))
{
return true;
}
}
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
HttpSession session = request.getSession();
String servletPath = request.getContextPath();
if (null == session.getAttribute("landId"))
{
// 未登录
PrintWriter out = response.getWriter();
StringBuilder builder = new StringBuilder();
builder.append("<script type=\"text/javascript\" charset=\"UTF-8\">");
builder.append("alert(\"页面过期,请重新登录\");");
builder.append("window.top.location.href=\"");
builder.append(servletPath + "/login.jsp\";</script>");
out.print(builder.toString());
out.close();
return false;
}
else
{
// 未登录 跳转到登录页面
return super.preHandle(request, response, handler);
}
}
}
这是简单的spring拦截器的创建。