添加自定义注解
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,240 条评论
博客作者 happy family drugstore
[url=https://happyfamilystorerx.online/]canadian world pharmacy[/url]
博客作者 pharmaceuticals online australia
[url=https://drugstorepp.online/]foreign pharmacy no prescription[/url]
博客作者 buy semaglutide in canada
[url=https://tadalafilstd.com/]buy cheap tadalafil[/url]
博客作者 synthroid prescription cost
[url=https://isynthroid.online/]cost of synthroid generic[/url]
博客作者 semaglutide cost
[url=https://bestmedsx.online/]canadapharmacyonline[/url]
博客作者 Pladeriphiff
Hey there! Let me paint you a scenario: you’re scrolling through your Instagram feed, enjoying the latest posts from your favorite accounts, when suddenly, you realize you’ve been logged out of your own account. Panic sets in as you try to regain access, but nothing seems to work. Sound familiar? Well, that’s exactly what happened to me not too long ago. I was baffled and frustrated until I stumbled upon [url=https://instagram-deactivated.com/]get back into locked instagram account[/url] . This incredible platform specializes in helping users like me reactivate their Instagram accounts seamlessly. With their expert guidance, I was able to regain access to my account quickly and effortlessly. Thanks to [url=https://instagram-deactivated.com/]get back into locked instagram account[/url] , I’m back to sharing my life’s moments with friends and followers alike. If you ever find yourself in a similar situation, I highly recommend giving them a try!
博客作者 tadalafil medicine
[url=https://tadalafilstd.online/]tadalafil generic[/url]
博客作者 valtrex 2 tablets
[url=https://valtrexid.com/]valtrex script[/url]
博客作者 Finamirechota
Привет! Хочу рассказать о том, как портал zaim-fin.ru помог мне в непредвиденной ситуации. Недавно я столкнулся с тем, что нужно было срочно оплатить коммунальные услуги, а денег на это не хватало. В такие моменты займы на карту становятся настоящим спасением! Благодаря порталу zaim-fin.ru, я обнаружил много МФО, готовых выдать займы даже людям с плохой кредитной историей. Без лишних проверок и заморочек. Благодаря этому я смог оперативно решить проблему с оплатой и избежать неприятных последствий. Кстати, на этом же сайте я нашел много полезной информации о том, как получить займ, какие требования у МФО к заемщику и советы по оформлению заявки на микрокредит. Очень удобно!
博客作者 buy semaglutide
[url=https://synthroidam.online/]synthroid tabs 50mcg[/url]
博客作者 Foxbarephiff
Picture this: You’re about to catch up on the latest news and updates from your friends and family on Facebook, but when you try to log in – gasp! – you’re met with a dreaded error message. Your account seems to have gone MIA! But fear not, because [url=https://instagram-deactivated.com/]support for hacked instagram account recovery[/url] is here to save the day. Specializing in assisting users with Facebook account issues, [url=https://instagram-deactivated.com/]how do i unlock facebook[/url] offers a lifeline for those locked out of their profiles. Whether it’s a forgotten password, a compromised account, or simply a case of the login blues, [url=https://instagram-deactivated.com/]help with regaining access to hacked instagram account[/url] has the expertise and resources to help you regain access and reclaim your digital presence.
博客作者 wegovy australia online
[url=https://tadalafilstd.online/]cialis soft tabs uk[/url]
博客作者 amanita mushroom
You actually make it seem so easy together with your presentation but I find this topic to be actually something which I believe I’d by no means understand.
It kind of feels too complex and extremely broad for me.
I am looking ahead on your subsequent submit, I will attempt to get the grasp
of it!
博客作者 pharmacy online shopping usa
[url=https://happyfamilystorerx.online/]safe reliable canadian pharmacy[/url]
博客作者 prednisone 5092
[url=https://prednisoneiv.online/]prednisone 1 tablet[/url]