添加自定义注解
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,562 条评论
博客作者 Ritagryc
If you you want quickly [url=https://sign-studio.ru]create digital signature[/url], check out our recommendations to help make the process simple.
博客作者 DavidEliCa
Процедура основана на использовании лазера для изменения формы роговицы прозрачной доли глаза, отвечающей за фокусировку света. В зависимости от типа нарушений, лазер воздействует на верхний слой роговицы, создавая необходимые изменения для улучшения зрения.
Методы лазерной корректировки
Достоинства лазерной коррекции
Опасности и противопоказания
Как и любая медицинская процедура, лазерная корректировка зрения имеет свои риски. Важно учитывать противопоказания, в том числе:
博客作者 online pharmacy
wonderful issues altogether, you just gained a emblem new reader. What might you recommend about your post that you made some days in the past? Any certain?
博客作者 canada pharmaceuticals
I am regular visitor, how are you everybody? This paragraph posted at this site is actually fastidious.
博客作者 canada pharmaceuticals
Hi! Do you use Twitter? I’d like to follow you if that would be okay. I’m undoubtedly enjoying your blog and look forward to new updates.
博客作者 Ritahhkl
Are you interested in calligraphy [url=https://sign-studio.ru]calligraphy design[/url]? Check out our advice to help you to improve your technique.
博客作者 pharmaceuticals online australia
Having read this I thought it was rather informative. I appreciate you spending some time and energy to put this article together. I once again find myself personally spending a significant amount of time both reading and leaving comments. But so what, it was still worth it!
博客作者 pharmaceuticals online australia
Hey there just wanted to give you a brief heads up and let you know a few of the images aren’t loading correctly. I’m not sure why but I think its a linking issue. I’ve tried it in two different web browsers and both show the same results.
博客作者 canadian pharmaceuticals online
Hello there! I know this is kinda off topic but I’d figured I’d ask. Would you be interested in exchanging links or maybe guest writing a blog article or vice-versa? My site goes over a lot of the same topics as yours and I believe we could greatly benefit from each other. If you happen to be interested feel free to shoot me an email. I look forward to hearing from you! Superb blog by the way!
博客作者 indian pharmacy
Hi, There’s no doubt that your web site might be having internet browser compatibility issues. Whenever I look at your website in Safari, it looks fine but when opening in I.E., it’s got some overlapping issues. I merely wanted to provide you with a quick heads up! Other than that, excellent site!
博客作者 canadian pharmaceuticals online safe
This post is worth everyone’s attention. Where can I find out more?
博客作者 walmart pharmacy online
It’s an remarkable post in support of all the internet users; they will obtain advantage from it I am sure.
博客作者 Jamescog
Stay tuned for the latest join highlights, including goals, indication moments, and skilful analysis.
We will update this split with video highlights and key moments from the field after the copy https://www.rayovallecanovsbarcelona.ru/.
博客作者 Edwardkaw
Вавада предлагает большой выбор игр, включая:
Призы и акции
Казино Вавада предлагает своим игрокам разнообразные призы и акции, включая:
Удобство платежей
Казино Вавада поддерживает широкий выбор [url=https://vavadaofcasino.ru]http. vavada. online. casino.[/url] платежных систем для пополнения счета и вывода средств. Это содержит в себе банковские карты, электронные кошельки и криптовалюту. Важно отметить, что казино устремляется к быстрой обработке запросов на вывод, что является огромным плюсом для игроков.
Клиентская поддержка
Команда поддержки Вавада трудитсякруглые сутки, что позволяет игрокам быстро получать помощь по любым вопросам. Связаться с поддержкой можно через live-чат, электронную почту или телефон.
Заключение
Казино Вавада это надежная и увлекательная онлайн-платформа для любителей азартных игр. С широкой вариацией игр, симпатичными призами и качественной поддержкой клиентов, Вавада зарекомендовала себя как одно из лучших мест для ведения игры в глобальной сети интернет. Если вы ищете ясные эмоции и азарт, Вавада может стать хорошим выбором вам.
博客作者 approved canadian online pharmacies
I visited several sites except the audio feature for audio songs existing at this website is in fact fabulous.