添加自定义注解
package org.book.configuration.aop; import java.lang.annotation.*; @Documented @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface NoCheckLogin { }
创建一个SpringMvcHandler 类,继承HandlerInterceptorAdapter
package org.book.configuration.Handler; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.book.common.JsonResult; import org.book.configuration.aop.NoCheckLogin; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.lang.reflect.Method; @Slf4j public class SpringMvcHandler extends HandlerInterceptorAdapter { public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { } public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { } public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HandlerMethod hm = null; Method method = null; if(handler instanceof HandlerMethod) { hm = (HandlerMethod) handler; method = hm.getMethod();// 获取方法 } else { return true; } // 该方法是否添加 允许未登录访问注解 if (method !=null && method.isAnnotationPresent(NoCheckLogin.class)) { // 不拦截 return true; } String name = (String) request.getSession().getAttribute("user"); if (name != null) { return true; } else { response.setCharacterEncoding("UTF-8"); response.setContentType("application/json; charset=utf-8"); PrintWriter out = null; try { out = response.getWriter(); out.append(new JSONObject().toJSONString(JsonResult.renderFail("用户未登录")) ); }catch (Exception e){ out = response.getWriter(); out.append(new JSONObject().toJSONString(JsonResult.renderError("后台出错"))); log.info(e.getStackTrace().toString()); } return false; } } }
被@NoLoginCheck注解的方法不会被拦截在springmvc配置文件配置拦截路径和排除路径
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <mvc:mapping path="/"/> <mvc:mapping path="/index.jsp"/> <mvc:exclude-mapping path="/assets/**"/> <mvc:exclude-mapping path="/images/**"/> <bean class="org.book.configuration.Handler.SpringMvcHandler"></bean> </mvc:interceptor> </mvc:interceptors>
1)预处理preHandle()方法
用户发送请求时,先执行preHandle()方法。会先按照顺序执行所有拦截器的preHandle方法,一直遇到return false为止,比如第二个preHandle方法是return false,则第三个以及以后所有拦截器都不会执行。若都是return true,则执行用户请求的url方法。
2)后处理postHandle()
方法调用了Service并返回ModelAndView,但未进行页面渲染,可以在这里继续修改ModelAndView
3)返回处理afterCompletion()
方法已经渲染了页面,在afterCompletion中,可以根据ex是否为null判断是否发生了异常,进行日志记录。注:一般使用preHandle这个拦截器进行预处理,对url进行请求拦截
Comments | 13,546 条评论
博客作者 canadian pharmaceuticals online safe
If some one desires expert view regarding blogging and site-building then i propose him/her to visit this web site, Keep up the fastidious job.
博客作者 http://org78.ru/peterburgmap.php
https://org78.ru/peterburgmap.php
博客作者 pharmacy online drugstore
Hi there! This blog post couldn’t be written much better! Reading through this post reminds me of my previous roommate! He constantly kept talking about this. I’ll forward this article to him. Pretty sure he’ll have a very good read. Thanks for sharing!
博客作者 canadian online pharmacies
Your method of explaining all in this piece of writing is actually fastidious, all be capable of simply understand it, Thanks a lot.
博客作者 canadian pharmacy generic viagra
Keep on working, great job!
博客作者 publix pharmacy online ordering
Hello there! I know this is kinda off topic nevertheless I’d figured I’d ask. Would you be interested in trading links or maybe guest authoring a blog article or vice-versa? My site covers a lot of the same topics as yours and I feel we could greatly benefit from each other. If you are interested feel free to shoot me an e-mail. I look forward to hearing from you! Great blog by the way!
博客作者 http://spbit.su/news/n232045/
https://spbit.su/news/n232045/
博客作者 Займы без отказов и проверок
Ищете простой способ получить деньги на карту без долгих проверок? Новые МФО 2024 года предлагают займы, которые доступны всем без исключения. Независимо от вашего кредитного рейтинга, вы можете оформить займ за считанные минуты. Процедура максимально упрощена: никаких сложных документов, только онлайн-заявка и моментальное зачисление средств на карту. Получите деньги быстро и без лишних хлопот.
[url=https://cse.google.co.ma/url?sa=i&url=https://all-credit.ru/]займ на карту с плохой кредитной[/url]
[url=https://images.google.com.sa/url?sa=t&url=https://all-credit.ru/]онлайн кредиты на карту без отказа[/url]
[url=https://toolbarqueries.google.com.ua/url?q=https://all-credit.ru/]мфо самые новые[/url]
[url=https://www.google.co.ve/url?q=https://all-credit.ru/]взять микрозайм онлайн без отказа[/url]
[url=https://cse.google.com.cu/url?sa=t&url=https://all-credit.ru/]займ с плохой ки[/url]
博客作者 Cami halısı M2 fiyatı
Nice article inspiring thanks. Hello Administ . Seo Paketi Skype: ByuMuT@KRaLBenim.Com –– live:by_umut
博客作者 navarro pharmacy
You should take part in a contest for one of the highest quality blogs online. I’m going to recommend this site!
博客作者 canadian pharmaceuticals
Usually I do not read post on blogs, but I wish to say that this write-up very forced me to try and do it! Your writing style has been surprised me. Thanks, very great article.
博客作者 http://www.openmarket.ru/content/section_r_D97897D4-D258-42BF-8763-92E4F182624B.html
https://www.openmarket.ru/content/section_r_D97897D4-D258-42BF-8763-92E4F182624B.html
博客作者 on line pharmacy
With havin so much content and articles do you ever run into any problems of plagorism or copyright violation? My website has a lot of completely unique content I’ve either written myself or outsourced but it seems a lot of it is popping it up all over the internet without my authorization. Do you know any ways to help reduce content from being stolen? I’d certainly appreciate it.
博客作者 Lexajorq
Возникла необходимость? Ознакомьтесь с вариантами [url=https://evakuator-minsk-24.by]услуги эвакуатора[/url] для быстрого реагирования на дороге.
博客作者 pharmaceuticals online australia
Just wish to say your article is as surprising. The clarity in your post is simply great and i can assume you are an expert on this subject. Fine with your permission let me to grab your RSS feed to keep updated with forthcoming post. Thanks a million and please keep up the enjoyable work.