添加自定义注解
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,390 条评论
博客作者 Desa Slot
This design is incredible! You obviously know how to keep a reader entertained.
Between your wit and your videos, I was almost moved
to start my own blog (well, almost…HaHa!) Wonderful job.
I really enjoyed what you had to say, and more than that, how you presented it.
Too cool!
博客作者 Champincasino1
Чемпион Казино: Попробуй удачу в покере и стань победителем
Champion casino [url=https://dk-slavniy.ru/]Champion casino[/url] .
博客作者 現場兒童色情片
turla tulumba şurlşhuhu DAMAR
博客作者 generic
[url=https://acutanep.online/]buy accutane without prescription[/url]
博客作者 smsflynewprofile
[url=https://www.google.pl/url?q=https://sms-fly.pl/auto-sms-sending/]Automatyczne wysylanie SMS-ow[/url] to planowane dostarczanie wiadomosci tekstowych na telefony komorkowe odbiorcow bez koniecznosci recznej interwencji nadawcy. Jest to nowoczesna metoda komunikacji, ktora umozliwia firmom szybka interakcje z klientami.
博客作者 cheap
[url=https://enolvadex.com/]tamoxifen india[/url]
博客作者 purchase
[url=https://diflucanr.com/]where can i purchase diflucan over the counter[/url]
博客作者 Robertzow
Friends, a new interesting Telegram Mini App has emerged, gaining popularity among users. It’s a bot that rewards $DOGS tokens simply for having a Telegram account!
Features:
What to do?
Important: If tokens are not being credited, make sure you have set a username in your Telegram profile.
博客作者 order
[url=https://advaird.online/]advair prescription coupon[/url]
博客作者 Jekdrype
https://slotkazinonash.ru
Start winning today, get a no deposit gift or free spins of your choice. Only the top best bonuses!
博客作者 NamroLop
Стоимость разработки дизайн проекта mudryakova.ru
После приобретения квартиры непременно встает задача об интерьере. И в данном случае без дизайнера будет весьма сложно. Представляем Вам студию дизайна в Санкт-Петербурге Ольги Мудряковой, которая может справиться с любой задачей. Имея большой опыт, огромное количество готовых проектов и десятки положительных отзывов — мы даем гарантию, что разработаем для Вас лучший интерьер любого помещения, учитывая все требования и желания обладателя. Подробнее читайте на сайте mudryakova.ru всю важную информацию.
Если Вы планировали найти [url=https://mudryakova.ru/work/rooms/bathroom/]ванная соединенная с туалетом[/url] в интернете, то заходите на наш сайт прямо сейчас. если вдруг Вы еще не приобрели квартиру, то мы с радостью окажем помощь Вам в выборе и расскажем перспективы отобранных вариантов. Создадим проект, который будет оригинальным и удобным для пребывания. Составим смету на стройматериалы и оборудование, предоставим контакты лучших строительных компаний-наших компаньонов. Сопровождаем все фазы строительства, четко отслеживаем работу специалистов.
По вопросу [url=https://mudryakova.ru/services/]дизайн проект[/url] Вы на нужном пути. Чтобы получить консультацию дизайнера, следует заполнить заявку на веб ресурсе mudryakova.ru или позвонить по телефону +7(812)408-00-07. Находимся по адресу: г. Санкт-Петербург, ул. Мебельная, д. 49/92. Режим работы с пн по пт с 9:00 до 19:00. Наши работы можно посмотреть на указанном сайте, также по местоположению. Работаем как под ключ, ровно как оказываем единичные виды услуг.
博客作者 Wenychind
[url=https://sale-cloned-cards.cc]Clon Credit cards Market Cloned card[/url]
Item 01 Card Total Balance: $3100 – Price $ 110.00
Item 03 Cards Total Balance $9600 – Price $ 180.00
Item PayPal Transfers $500 – Price $ 49.00
Item PayPal Transfers $2000 – Price $ 149.00
Item Western Union Transfers $ 1000 – Price $ 99.00
Item Western Union Transfers $ 300 – Price $ 249.00
*Prices on the website may vary slightly
[url=https://sale-cloned-cards.cc]Dumps Paypal buy Shops and markets cards Tor[/url]
博客作者 儿童色情片
turla tulumba şurlşhuhu DAMAR
博客作者 Onwin Giriş
Nice article inspiring thanks. Hello Administ . Seo Paketi Skype: ByuMuT@KRaLBenim.Com –– live:by_umut
博客作者 sale
[url=https://acyclovirlp.online/]zovirax 400[/url]