🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
案例一:未登录,不能访问系统页面 ~~~ 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 AdminInterceptor implements HandlerInterceptor{ @Override public void afterCompletion(HttpServletRequest httpRequest, HttpServletResponse httpResponse, Object arg2, Exception arg3) throws Exception { } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception { HttpSession session = request.getSession(); if (session!= null){ if (session.getAttribute("isLogin")!=null){ if (session.getAttribute("isLogin").equals("Yes")){ return true; } } } request.getRequestDispatcher("/back/admin_login.jsp").forward(request,response); return false; } } ~~~ springmvc.xml配置 ~~~ <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/Admin/*"/> <!--<mvc:exclude-mapping path="/admin/*"/>--> <bean class="com.neuedu.tools.AdminInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> ~~~ 案例二:解决前后端分离开发中的ajax跨域访问问题: ~~~ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class AccessControllAllowInterceptor implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { // TODO Auto-generated method stub } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { // TODO Auto-generated method stub } @Override public boolean preHandle(HttpServletRequest arg0, HttpServletResponse response, Object arg2) throws Exception { //CROS response.addHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); return true; } } ~~~ springmvc.xml配置 ~~~ <mvc:interceptors> <!-- 跨域访问 --> <mvc:interceptor> <mvc:mapping path="/*"/> <bean class="com.lamport.education.interceptor.AccessControllAllowInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> ~~~ 附录: 1.什么是跨域?   跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。跨域的严格一点的定义是:只要 协议,域名,端口有任何一个的不同,就被当作是跨域 2.为什么浏览器要限制跨域?   原因就是安全问题:如果一个网页可以随意地访问另外一个网站的资源,那么就有可能在客户完全不知情的情况下出现安全问题。比如下面的操作就有安全问题: 用户访问www.mybank.com ,登陆并进行网银操作,这时cookie啥的都生成并存放在浏览器 用户突然想起件事,并迷迷糊糊地访问了一个邪恶的网站 www.xiee.com 这时该网站就可以在它的页面中,拿到银行的cookie,比如用户名,登陆token等,然后发起对www.mybank.com 的操作。 如果这时浏览器不予限制,并且银行也没有做响应的安全处理的话,那么用户的信息有可能就这么泄露了。 3.为什么要跨域?   既然有安全问题,那为什么又要跨域呢? 有时公司内部有多个不同的子域,比如一个是location.company.com ,而应用是放在app.company.com , 这时想从 app.company.com去访问 location.company.com 的资源就属于跨域。