添加自定义注解
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,340 条评论
博客作者 WilliamCar
Drug leaflet here. Pill leaflet provided.
[url=https://kamagraxl.top/#]online viagra pharmacy[/url]
Detailed drug knowledge. Medicine trends available.
博客作者 DonaldCip
Article Post Permanent
thestarnewstoday.com
thesunnewstoday.com
thetelegraphnewstoday.com
thetorontosunnewstoday.com
timesofnetherland.com
timesofspanish.com
Dont hesiate to contact us
博客作者 GeorgeDex
Top Sites for article post
livemintnewstoday.com
maltanewstime.com
mirrornewstoday.com
nationalposttoday.com
neatherlandnewstoday.com
neweuropetoday.com
Dont hesitate to contact us
博客作者 Dustinabify
Цена сертификата соответствия ИСО 9001 всегда рассчитывается индивидуально, так как зависит от ряда факторов: сферы деятельности; количества и местоположения площадок; численности. Сертификат выдается сроком на 3 года, в течение которого организация должна пройти две инспекционные проверки https://teletype.in/@sezdok/stoimost-sertifikata-ISO-9001
博客作者 Plavredanem
[url=https://vc.ru/u/2656885-wikinav/1356969-zaimy-bez-otkazov-i-proverok-na-kartu-onlain-vzyat-zaim-v-mfo-2024-kotorye-odobryayut-dengi-vsem-s-mgnovennym-perevodom-na-kartu]какие микрозаймы дают без отказа[/url] стали доступнее в 2024 году благодаря новым условиям МФО. Эти организации предлагают займы без проверок кредитной истории и дополнительных документов. Процесс подачи заявки занимает всего несколько минут, а деньги поступают на карту мгновенно после одобрения. Это отличное решение для тех, кто нуждается в срочной финансовой поддержке, особенно если другие кредитные учреждения отказывают из-за плохой кредитной истории.
博客作者 Haroldpance
Sweet Bonanza, Pragmatic Play tarafından geliştirilen popüler bir slot oyunudur. Renkli grafikleri ve eğlenceli teması ile oyuncuları cezbetmektedir. Bu makalede, Sweet Bonanza oyununu oynamak için bilmeniz gereken tüm temel bilgileri bulacaksınız.
Sweet Bonanza, oyuncuları şekerli bir dünyaya götüren 6 makaralı ve 5 sıralı bir slot oyunudur. Oyunun temel hedefi, aynı sembolleri bir araya getirerek kazanç elde etmektir. Yüksek kazanç sağlayan çoklu kombinasyonlar ve farklı bonuslar ile doludur.
Sweet Bonanza oynamak oldukça kolaydır:
Sweet Bonanza, birçok heyecan verici özelliğe sahiptir:
Sweet Bonanza oynarken dikkate alabileceğiniz bazı stratejiler:
Sweet Bonanza, renkli grafikleri ve eğlenceli oyun yapısıyla slot oyuncuları için harika bir deneyim sunuyor. Şekerli dünyasında kaybolurken kazanma şansınızı artırmak için temel bilgileri ve stratejileri uygulamak önemlidir. Unutmayın, oyun oynamak eğlenceli olmalı; bu nedenle her zaman sorumlu bir şekilde oynayın. Şeker dolu kazançlar dileriz!
博客作者 Plavredanem
В 2024 году [url=https://vc.ru/u/2656885-wikinav/1356969-zaimy-bez-otkazov-i-proverok-na-kartu-onlain-vzyat-zaim-v-mfo-2024-kotorye-odobryayut-dengi-vsem-s-mgnovennym-perevodom-na-kartu]взять займ на карту без отказа и проверок[/url] стали наиболее востребованным способом быстрого получения денег. МФО предлагают простые и прозрачные условия, не требуя проверки кредитной истории. Для оформления займа достаточно иметь паспорт и банковскую карту. Деньги переводятся на счет сразу после одобрения заявки, что позволяет оперативно решать финансовые проблемы. Этот способ получения займа особенно актуален для тех, кто ценит свое время и нуждается в моментальной финансовой помощи.
博客作者 price
[url=https://vermox.company/]order vermox online canada[/url]
博客作者 online
[url=https://zithromaxl.online/]zithromax for sale usa[/url]
博客作者 GlennNam
Virtual Phone basic information and a brief history. How a company can create a local or international brand with a 1800 number [url=https://jeffreytmyi82581.is-blog.com/33640895/携手走向未来-еЌ°еє¦е°јиҐїдєљеЏ·з ЃеЉ©дЅ еЇ»и§…зњџз€±]https://jeffreytmyi82581.is-blog.com/33640895/携手走向未来-еЌ°еє¦е°јиҐїдєљеЏ·з ЃеЉ©дЅ еЇ»и§…зњџз€±[/url]
博客作者 tablet
[url=https://amoxicillinbact.com/]augmentin 875 125[/url]
博客作者 online
[url=https://modafinilon.online/]where can you get modafinil[/url]
博客作者 dublikaty_nomerov_ahol
Изготовление дубликатов регистрационных знаков для автомобиля
изготовление номеров цена [url=https://vip-dublikat-nomerov.ru]https://vip-dublikat-nomerov.ru[/url] .
博客作者 shkola_barabanov_zdEn
Индивидуальный подход в школе барабанов: занятия для всех
обучение игры на барабанах с нуля [url=https://www.shkola-barabanov-moskva.ru]https://www.shkola-barabanov-moskva.ru[/url] .
博客作者 prescription
[url=https://lasixtbs.online/]cheap lasix[/url]