添加自定义注解
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,447 条评论
博客作者 ClarkWhifs
Выше- магазин НашаМебель приглашает широченный набор кухонь, тот или другой помогут сделать устроенность а также комфорт в течение вашем доме https://www.notahye4kuhnishki.ru.
博客作者 canadian pharmaceuticals online safe
Hi! I know this is somewhat off topic but I was wondering which blog platform are you using for this website? I’m getting fed up of WordPress because I’ve had issues with hackers and I’m looking at alternatives for another platform. I would be great if you could point me in the direction of a good platform.
博客作者 canadian pharmacies online
I do accept as true with all the ideas you’ve introduced in your post. They are very convincing and will definitely work. Still, the posts are too brief for novices. May you please extend them a bit from next time? Thank you for the post.
博客作者 Alfredgom
Продвижение телеграм канала, продвижение телеграм [url=https://kwork.ru/links/35137617/vash-telegram-kanal-v-tope-poiska-v-yandeks-i-gugl]продвижение youtube[/url], Продвижение сайта в топ, продвижение сайта [url=https://kwork.ru/links/35131913/raskruchu-vash-telegram-kanal-v-poiske-yandeks-i-gugl-vydache-v-top]продвижение youtube[/url], продвижение вконтакте VK, продвижение вконтакте, продвижение однокласники, продвижение инстаграм, продвижение rutube, продвижение youtube
博客作者 НК18
Готовые коттеджные дома Ижевск нк18.рф
По поводу [url=https://xn--18-1lcl.xn--p1ai/]строительство бетонного дома[/url] мы Вам поможем. Строим лучшие дома в области, о чем подтверждают наши счастливые клиенты. Также сами работники компании живут в построенных нами домах, что даёт нам получать действительные комментарии. У нас можно оформить заказ на строительство как одного дома, так и целого поселка. Вдобавок есть в продаже уже готовые предложения для срочного заселения.
博客作者 RobertAmand
[url=https://by.ndt.su]пенетрант для сварных швов купить[/url] – магнитная флуоресцентная суспензия, очистители грунта
博客作者 Fixbet
Great post thank you. Hello Administ . Seo Paketi Skype: ByuMuT@KRaLBenim.Com –– live:by_umut
博客作者 canada pharmaceuticals
Greetings! Very helpful advice in this particular post! It is the little changes that will make the largest changes. Thanks a lot for sharing!
博客作者 RalphDic
Drug trends described. Formulation info listed.
[url=https://medications365.top/mexican-online-pharmacy.html]good online pharmacy[/url]
Comprehensive medication resource. Medication impacts described.
博客作者 canadian online pharmacies
When I initially commented I clicked the "Notify me when new comments are added" checkbox and now each time a comment is added I get several e-mails with the same comment. Is there any way you can remove people from that service? Cheers!
博客作者 Психотерапевт
Элитный психолог: персональное внимание.
Приватность гарантирована. Глубинная проработка проблем успешных людей.
Запись:
博客作者 Tolikjceg
Ознакомьтесь с подробной информацией по обслуживанию техники Amkodor. Узнайте, как профессионально провести [url=https://inetof.ru]ремонт амкодор[/url], чтобы гарантировать работоспособность.
博客作者 canadian pharmacy generic viagra
hello!,I love your writing so so much! proportion we communicate more about your post on AOL? I need a specialist in this space to unravel my problem. Maybe that is you! Looking forward to see you.
博客作者 canadian pharmaceuticals
I’ll right away grasp your rss feed as I can not find your e-mail subscription link or newsletter service. Do you’ve any? Please permit me realize in order that I may subscribe. Thanks.
博客作者 ClarkWhifs
Отечественный магазин НашаМебель приглашает широкий гарнитур кухонь, кои посодействуют создать уют равно удобства в течение вашем жилье https://notahye4kuhnishki.ru/.