添加自定义注解
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,411 条评论
博客作者 Gerardrhync
Outrageous fervour can pass to heat-related illnesses such as heat voiding and heatstroke. Helpless populations classify the aged, boyish children, and individuals with chronic illnesses https://www.excessiveheatawareness.ru.
博客作者 list of canadian pharmaceuticals online
This information is invaluable. How can I find out more?
博客作者 best online canadian pharmacy
When some one searches for his essential thing, therefore he/she desires to be available that in detail, so that thing is maintained over here.
博客作者 Leonjakhb
Для всех любителей ставок на спорт важно иметь доступ к надежному приложению. Если вы ищете, где [url=https://prilozhenie-leon.ru/]скачать БК Леон[/url], то на официальном сайте букмекера вы сможете найти последнюю версию для вашего Android смартфона. Установка мобильного приложения пройдет быстро и без проблем.
博客作者 list of canadian pharmaceuticals online
If some one wishes expert view concerning blogging afterward i suggest him/her to pay a quick visit this web site, Keep up the pleasant job.
博客作者 pharmacy online cheap
Very great post. I simply stumbled upon your blog and wanted to mention that I have truly loved browsing your weblog posts. After all I’ll be subscribing in your feed and I am hoping you write again very soon!
博客作者 canadian pharmaceuticals online shipping
We are a group of volunteers and opening a brand new scheme in our community. Your website provided us with helpful information to work on. You’ve performed a formidable job and our whole group will be thankful to you.
博客作者 xtechgtealo
Интересно: [url=https://alikson.ru/smartfony-1003/tag-iphone-14-256-gb/]iphone 14 цены 256gb[/url] или [url=https://alikson.ru/smartfony-1003/tag-iphone-14-256-gb/]iphone 14 цены 256gb[/url]
Может быть полезным: https://alikson.ru/smartfony-1003/tag-smartfony-dlya-xiaomi-14-ultra/ или [url=https://alikson.ru/smartfony-1003/tag-kupit-sumsung-galaxy-s24/]самсунг s24 купить[/url]
Хороший вариант – [url=https://alikson.ru/zhestkie-diski-i-ssd-1081/tag-ssd-diski-dlya-noutbuka-500-1000/]ssd диск для ноутбука цена[/url]
Ещё можно узнать: [url=https://yourdesires.ru/fashion-and-style/quality-of-life/1317-chto-takoe-azartnye-igry-v-internete.html]азартные игры в сети[/url]
博客作者 Kennethsnals
Complete medicine overview. Complete medicine overview.
[url=https://propecia365n.top/#]buy finasteride no prescription[/url]
Current medication trends. Find medicine information.
博客作者 Leonlrbqr
[url=https://skachat-prilozhenie-leon.ru/]Леон букмекерская контора скачать бесплатно[/url] можно прямо сейчас с официального сайта. Это позволит вам делать ставки на спорт с мобильного устройства в любое удобное время.
博客作者 Livorpas
Секционные ворота vorota-v-irkutske.ru
Компания «Профметстрой» спроектирует и доставит Вам любые заборы и ворота в городе Иркутск. Мы имеем огромный опыт, много исполненных проектов и кучу довольных заказчиков. Всё, что относительно с ограждением придомового участка — это по данному адресу. Изготовим конкретно под ваш запрос, бюджет и пожелание любые заборы на сайте vorota-v-irkutske.ru уже сейчас.
Если Вы хотели найти [url=https://vorota-v-irkutske.ru/garazhnye-sektsionnye-vorota]гаражные ворота подъемные автоматические цена[/url] в сети интернет, то переходите на наш веб сайт. Сегодня в современном мире новейшие технологии пришли и в область ворот. гаражные, промышленные секционные, DoorHan и все с автоприводом. Штат работников в самые быстрые сроки изготовит Ваш заказ и приедет на монтаж.
На онлайн сайте vorota-v-irkutske.ru есть галерея работ выполненных нами. Еще можно посмотреть оборудование, которое мы используем при деятельности. Экологичные деревянные, долговечные кованые, доступные из профнастила, и другие изготовим по Вашим размерам.
Относительно [url=https://vorota-v-irkutske.ru/otkatnye-vorota]откатные ворота цена[/url] мы Вам поможем. Звоните по номеру телефона +7(3952)900-873 или заходите по адресу г. Иркутск, ул. Напольная 67 А, к. 1. Выезд мастера на замер и доставка по городу осуществляется бесплатно. Будем рады воплотить Ваш лучший забор.
博客作者 walgreens pharmacy online
Asking questions are actually pleasant thing if you are not understanding anything fully, but this article presents pleasant understanding yet.
博客作者 Davidpex
The Paralympic Games are an international multi-sport event in return athletes with disabilities. Held alongside the Olympic Games, these games feature a mixed range of sports adapted to miscellaneous abilities. They were established to forearm opportunities in search athletes with palpable and mind-set impairments to fight at the highest floor and explain their awe-inspiring talents https://www.paralympicgames2024.ru/.
博客作者 Brianacuby
their explanation [url=https://www.infinitywallet.download]kusama кошелекAds[/url]
博客作者 buy viagra pharmacy 100mg
I do believe all of the ideas you’ve offered in your post. They are really convincing and can definitely work. Still, the posts are too brief for novices. Could you please lengthen them a little from subsequent time? Thank you for the post.