添加自定义注解
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 | 21,775 条评论
博客作者 דירות דיסקרטיות בתל אביב
May I simply just say what a relief to find somebody who truly knows what theyre talking about online. You actually understand how to bring a problem to light and make it important. More people ought to look at this and understand this side of the story. I was surprised that youre not more popular because you certainly possess the gift.
博客作者 דירות דיסקרטיות במרכז
Im pretty pleased to uncover this website. I wanted to thank you for ones time for this wonderful read!! I definitely enjoyed every part of it and i also have you saved as a favorite to look at new stuff in your web site.
博客作者 דירות דיסקרטיות בבת ים
Itís hard to find knowledgeable people about this subject, but you seem like you know what youíre talking about! Thanks
博客作者 נערות ליווי באשדוד
The next time I read a blog, I hope that it wont disappoint me just as much as this particular one. After all, I know it was my choice to read, but I truly thought you would probably have something interesting to say. All I hear is a bunch of crying about something you can fix if you werent too busy seeking attention.
博客作者 נערות ליווי בקריות
An intriguing discussion is definitely worth comment. I think that you need to publish more about this topic, it may not be a taboo subject but typically folks dont discuss these issues. To the next! Best wishes!!
博客作者 niamorevip.com
I must thank you for the efforts you have put in penning this site. I really hope to view the same high-grade blog posts by you in the future as well. In fact, your creative writing abilities has encouraged me to get my very own website now ;)
博客作者 underanyascontrol.com
Can I simply just say what a relief to find an individual who actually knows what they are talking about online. You actually know how to bring a problem to light and make it important. More people ought to read this and understand this side of your story. I was surprised you are not more popular since you certainly possess the gift.
博客作者 salemgirlfriendexperience.com
Right here is the perfect webpage for anybody who wishes to find out about this topic. You realize so much its almost hard to argue with you (not that I actually will need toÖHaHa). You definitely put a new spin on a topic which has been discussed for many years. Great stuff, just excellent!
博客作者 RichardSew
Хочу посоветовать всем сайт, где можно посмотреть [url=https://rezka.men/]фильмы онлайн[/url], которые недавно для себя открыл. Там есть все старые и [url=https://rezka.men/zarubezhnye/]новые фильмы[/url], а также и [url=https://rezka.men/serialy/]сериалы[/url]. Удобно то, что фильмы можно смотреть на любом устройстве: компьютере, ноутбуке, планшете и смартфоне. Работает на всех устройствах, поддерживающих потоковое видео, в HTML5 плеере с высоким битрейтом. Плеер также доступен пользователям смарт-ТВ. Каким бы устройством Вы не воспользовались, Вас ожидает восхитительное качество картинки и высокое качество звука. Смотрите Ваше любимое кино и сериалы с удовольствием и удобством. Попробуйте для себя онлайн-кинотеатр [url=https://rezka.men/]Rezka.men[/url]!
博客作者 shanghaiescort1990.com
Everything is very open with a clear clarification of the issues. It was truly informative. Your website is very useful. Thank you for sharing!
博客作者 israelkaratefedetation.com
Very nice article. I definitely appreciate this site. Continue the good work!
博客作者 https://salemgirlfriendexperience.com
Right here is the right webpage for everyone who hopes to understand this topic. You know a whole lot its almost hard to argue with you (not that I personally would want toÖHaHa). You certainly put a fresh spin on a subject that has been discussed for a long time. Wonderful stuff, just great!
博客作者 https://palestinecurrency.com
Next time I read a blog, Hopefully it wont disappoint me as much as this one. I mean, Yes, it was my choice to read through, nonetheless I truly believed you would have something interesting to talk about. All I hear is a bunch of moaning about something you could fix if you were not too busy searching for attention.
博客作者 https://listmoto.com
I wanted to thank you for this great read!! I certainly enjoyed every little bit of it. Ive got you bookmarked to check out new stuff you postÖ
博客作者 https://shanghaiescort1990.com
The very next time I read a blog, Hopefully it wont disappoint me just as much as this one. I mean, I know it was my choice to read, nonetheless I truly believed you would have something helpful to say. All I hear is a bunch of moaning about something you can fix if you were not too busy looking for attention.