添加自定义注解
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,478 条评论
博客作者 pharmacies shipping to usa
I’m amazed, I have to admit. Seldom do I come across a blog that’s both equally educative and amusing, and let me tell you, you have hit the nail on the head. The issue is something that too few folks are speaking intelligently about. Now i’m very happy I found this during my search for something relating to this.
博客作者 list of canadian pharmaceuticals online
I used to be suggested this website via my cousin. I am no longer sure whether or not this put up is written by means of him as no one else realize such precise approximately my problem. You are wonderful! Thanks!
博客作者 canadian pharmaceuticals online
Have you ever considered about including a little bit more than just your articles? I mean, what you say is fundamental and all. But imagine if you added some great images or videos to give your posts more, "pop"! Your content is excellent but with images and clips, this blog could definitely be one of the very best in its field. Superb blog!
博客作者 generic viagra online pharmacy
Quality articles or reviews is the main to interest the people to visit the web page, that’s what this site is providing.
博客作者 pharmacy cheap no prescription
Thanks for every other magnificent article. Where else may just anyone get that type of info in such an ideal method of writing? I’ve a presentation next week, and I’m on the search for such info.
博客作者 online pharmacies of canada
My family members always say that I am wasting my time here at web, however I know I am getting experience every day by reading thes pleasant posts.
博客作者 Jeffreyitams
Active ingredients listed. Medicine overview available.
[url=https://tadacip365n.top/buy-cheap-tadacip.html]Tadacip usa[/url]
Pill leaflet available. Overdose effects detailed.
博客作者 Michaelmywow
перенаправляется сюда https://t.me/ozempic_zakazat
博客作者 canada pharmaceuticals online
This is a topic that’s close to my heart… Many thanks! Exactly where are your contact details though?
博客作者 canada pharmaceuticals
If you are going for most excellent contents like me, simply visit this site every day for the reason that it offers quality contents, thanks
博客作者 Davidarrak
читать [url=https://Kraken21att.net/]kraken21.at[/url]
博客作者 canada pharmaceuticals online generic
This is a topic that’s near to my heart… Many thanks! Where are your contact details though?
博客作者 online canadian pharcharmy
Hey there, I think your website might be having browser compatibility issues. When I look at your website in Opera, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, great blog!
博客作者 Vikgoda
Космический лазертаг lazertag-portal.ru
Приглашаем Вас и Ваших детей открыть дверь в портал в другое измерение и провести свободное время на арене лазертаг в вашем городе. Передовые технологии, захватывающие сценарии, сказочная атмосфера — все это лазерные бои в невероятном лабиринте. Подходит не только подросткам, но и взрослым. Оформляйте заказ прямо сейчас на сайте lazertag-portal.ru или приходите к нам.
По запросу [url=https://tomsk.lazertag-portal.ru/]лазертаг для детей день[/url] мы Вам непременно поможем. Лазертаг можно воспринимать как просто развлекательную игра, а возможно как вид спорта. Собственно, поэтому дети так любят эти ошеломительные поединки, динамичность, внимание и супер эмоции Вам будут обеспечены. Отмечание дня рождения в центре «Портал» – это что-то другое и незаезженное, дети скажут Вам спасибо.
Сейчас наши центры работают во многих городах России, таких как: Нижний Новгород, Санкт-Петербург, Омск, Челябинск, Томск, Рязань и другие. Кроме того Вы могли бы открыть свой собственный клуб в Вашем городе России по франшизе «Портал». Узнайте все детали на онлайн портале lazertag-portal.ru или звоните за ответами на ваши вопросы по телефону 8(914)899-9159 уже сейчас.
Насчет [url=https://chelyabinsk.lazertag-portal.ru/]сколько стоит лазер так[/url] Вы на нужном пути. Если Вы желаете интересно провести время в лазертаг портале, лучше заблаговременно позвонить и оформить бронь на удобное для Вас время. Менеджер ответит на оставшиеся Ваши вопросы и Вы обязательно останетесь рады от посещения.
博客作者 откатные автоматические ворота купить в иркутске
Забор из профнастила vorota-v-irkutske.ru
Если Вы хотели найти [url=https://vorota-v-irkutske.ru/]купить ворота в иркутске[/url] в сети интернет, то переходите на наш онлайн ресурс. Сегодня в современном мире новейшие технологии пришли и в область ворот. гаражные, промышленные секционные, DoorHan и все c автоматическим открытием. Команда работников в самые короткие сроки реализует Ваш заказ и приедет на монтаж.