添加自定义注解
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,455 条评论
博客作者 vorota-v-irkutske
Секционные ворота Иркутск vorota-v-irkutske.ru
Что касается [url=https://vorota-v-irkutske.ru/garazhnye-sektsionnye-vorota]ворота гаражные подъемные цены в иркутске[/url] мы Вам поможем. Звоните по телефону +7(3952)900-873 или заходите по адресу г. Иркутск, ул. Напольная 67 А, к. 1. Выезд мастера на замер и доставка по городу осуществляется бесплатно. Будем рады сделать Ваш лучший забор.
博客作者 vorota-v-irkutske
Сроительство заборов в Иркутске vorota-v-irkutske.ru
Что касается [url=https://vorota-v-irkutske.ru/garazhnye-sektsionnye-vorota]иркутск автоматические гаражные ворота[/url] мы Вам поможем. Звоните по номеру телефона +7(3952)900-873 или заходите по адресу г. Иркутск, ул. Напольная 67 А, к. 1. Выезд специалиста на замер и доставка по городу осуществляется бесплатно. Будем рады воплотить Ваш идеальный забор.
博客作者 pharmaceuticals online australia
We are a group of volunteers and opening a new scheme in our community. Your website provided us with valuable information to work on. You have done an impressive job and our entire community will be grateful to you.
博客作者 Petergrees
Дети ветра – это не просто фильм, это истинное приключение, погружающее нас в мир кайтсёрфинга, где свобода и энергия стихий находят своё гармоничное сосуществование [url=https://detivetra.ru/]Дети Ветра[/url. Обучение кайтсёрфингу становится доступным каждому, благодаря множеству видео онлайн, где профессиональные инструкторы делятся своими знаниями и опытом.
Представьте себе, как вы, стоя на берегу, встречаете свежий ветер в лицо и чувствуете прилив адреналина при каждом старте. Фильм «Дети ветра» [url=https://detivetra.ru/]Дети Ветра[/url захватывает дух и вдохновляет многих на то, чтобы встать на доску и покорить морские просторы. https://kitehurghada.ru/
Вы можете смотреть его бесплатно, погружаясь в яркие кадры и увлекательные истории, которые демонстрируют, как кайтсёрфинг преображает жизни людей. Скачайте «Дети ветра» и откройте для себя мир, где небо встречается с океаном, а каждый момент наполнен радостью и свободой [url=https://detivetra.ru/]Дети Ветра[/url. Пусть это будет вашим первым шагом к новым достижениям в кайтсёрфинге, ведь каждый из нас – это также дети ветра, стремящиеся полететь над волнами! https://detivetra.ru/
博客作者 list of canadian pharmaceuticals online
Spot on with this write-up, I actually feel this website needs a lot more attention. I’ll probably be returning to read more, thanks for the information!
博客作者 FolazeraCef
Площадка Лазертаг lazertag-portal.ru
Приглашаем Вас и Ваших детей открыть дверь в портал в иное измерение и провести отдых на площадке лазертаг в вашем городе. Новейшие технологии, занимающие сценарии, удивительная атмосфера — все это лазерные бои в инопланетном лабиринте. Понравится не только детям, но и взрослым. Оформляйте заказ уже сегодня на сайте lazertag-portal.ru или приходите к нам.
По запросу [url=https://spb.lazertag-portal.ru/]лазертаг день рождения[/url] мы Вам обязательно окажем помощь. Лазертаг можно интерпретировать как только развлекательную игра, а возможно как вид спорта. Непосредственно, поэтому дети так любят эти ошеломительные поединки, активность, внимание и новые чувства Вам будут предоставлены. Празднование дня рождения в центре «Портал» – это что-то иное и оригинальное, дети будут Вам благодарны.
В настоящее время наши центры работают в нескольких городах РФ, таких как: Нижний Новгород, Екатеринбург, Новосибирск, Красноярск, Кемерово, Рязань и другие. Также Вы сможете открыть свой собственный клуб в любом городе России по франшизе «Портал». Узнайте все детали на сайте lazertag-portal.ru или обращайтесь за ответами на ваши вопросы по телефону 8(914)899-9159 уже сегодня.
Насчет [url=https://chelyabinsk.lazertag-portal.ru/]спортивная игра лазертаг[/url] Вы на нужном пути. Если Вы желаете интересно провести время в лазертаг портале, лучше заранее позвонить и оформить бронь на комфортное для Вас время. Специалист даст ответы на все Ваши вопросы и Вы обязательно останетесь довольны посещением.
博客作者 canadian pharmaceutical companies
Wow, this article is pleasant, my younger sister is analyzing these kinds of things, therefore I am going to tell her.
博客作者 KubovWoodquorb
Хорошая статья, спасибо!
В качестве благодарности поделюсь с вами информацией: деревянные наличники на окна в Санкт-Петербурге для для загородных домов являются отличным выбором среди владельцев коттеджей.
[url=https://kub-era.ru/nalichniki]Наличник деревянный[/url] для коттеджей – это отличный выбор, который сочетает в себе эстетику, прочность и экологическую чистоту. Если вы хотите придать своему коттеджу превосходный вшений вид, обратите внимание на наличники из дерева.
В Питере существует множество компаний, специализирующихся на изготовлении и установке деревянных наличников. Одна из них – компания КубЭра. Предлагает широкий выбор наличников на любой вкус.
博客作者 panacea pharmacy
Thanks a lot for sharing this with all of us you really realize what you are talking approximately! Bookmarked. Kindly additionally visit my website =). We could have a link alternate contract between us
博客作者 online pharmacies
hello!,I like your writing very a lot! percentage we keep up a correspondence more approximately your post on AOL? I need a specialist in this house to resolve my problem. May be that is you! Having a look ahead to peer you.
博客作者 Davidmus
Cristiano Ronaldo – Forward. Mythical player with exceptional goal-scoring ability.
Luis Gustavo – Midfielder. Clarification playmaker with stupendous chimera and put down https://alfeihavsalnassr.ru/.
博客作者 Sarıca Cami Halısı
Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.Seo Paketi Skype: ByuMuT@KRaLBenim.Com –– live:by_umut
博客作者 discount pharmacies
Howdy I am so glad I found your site, I really found you by accident, while I was researching on Askjeeve for something else, Anyways I am here now and would just like to say cheers for a remarkable post and a all round interesting blog (I also love the theme/design), I don’t have time to browse it all at the minute but I have bookmarked it and also added your RSS feeds, so when I have time I will be back to read a great deal more, Please do keep up the fantastic work.
博客作者 canadian pharmaceuticals online safe
Currently it appears like Expression Engine is the preferred blogging platform out there right now. (from what I’ve read) Is that what you are using on your blog?
博客作者 list of canadian pharmaceuticals online
You can certainly see your enthusiasm within the article you write. The sector hopes for even more passionate writers such as you who are not afraid to say how they believe. All the time go after your heart.