添加自定义注解
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 | 28,997 条评论
博客作者 canadian prescriptions online
Heya i am for the first time here. I found this board and I find It really useful & it helped me out a lot. I hope to give something back and help others like you aided me.
博客作者 canadian online pharmacy
Good way of explaining, and pleasant paragraph to get data concerning my presentation focus, which i am going to present in university.
博客作者 Mixlazerus
Лазертаг официальный сайт lazertag-portal.ru
Зовём Вас и Ваших детей открыть дверь в портал в волшебное измерение и провести свободное время на площадке лазертаг в вашем городе. Новейшие технологии, захватывающие программы, удивительная атмосфера — все это лазерные бои в невообразимом лабиринте. Подойдет не только подросткам, но и взрослым. Оформляйте заказ уже сейчас на сайте lazertag-portal.ru или заходите к нам.
По поводу [url=https://kemerovo.lazertag-portal.ru/]лазертаг адрес[/url] мы Вам непременно поможем. Лазертаг можно считать как просто увлекательную игра, а можно как вид спорта. Непосредственно, поэтому дети так любят эти поразительные поединки, энергичность, внимание и супер чувства Вам будут предоставлены. Отмечание дня рождения в арене «Портал» – это что-то другое и небанальное, дети будут Вам благодарны.
В данный момент наши квесты работают во многих городах РФ, таких как: Москва, Санкт-Петербург, Новосибирск, Красноярск, Томск, Иркутск и другие. Кроме того Вы могли бы открыть свой персональный клуб в любом городе России по франшизе «Портал». Узнайте все детали на онлайн портале lazertag-portal.ru или звоните за ответами на ваши вопросы по телефону 8(914)899-9159 прямо сегодня.
По поводу [url=https://tomsk.lazertag-portal.ru/]лазертаг в томске для детей цена[/url] Вы на верном пути. Если Вы хотите интересно провести время в нашем портале, лучше заранее позвонить и забронировать удобное для Вас время. Менеджер ответит на все Ваши вопросы и Вы несомненно останетесь довольны от посещения.
博客作者 canadian pharmacy online viagra
My spouse and I stumbled over here from a different page and thought I might as well check things out. I like what I see so now i’m following you. Look forward to looking over your web page yet again.
博客作者 canadian pharmacies
I got this site from my friend who informed me concerning this website and now this time I am browsing this web page and reading very informative articles here.
博客作者 TimothyVek
Кайт сафари в Хургаде – это уникальное приключение, где встречаются страсть к ветру и стремление к свободе. Школа «Дети Ветра» предлагает своим ученикам погрузиться в мир кайтсерфинга, который сочетает в себе элементы экстрима, эмоций и красоты красного моря [url=https://t.me/ArtemZhvakin]кайт школа в хургаде[/url].
Каждое занятие в нашей школе проходит под руководством опытных инструкторов, которые помогут вам освоить основные техники и научат, как управлять кайтом с легкостью и удовольствием. Солнечные пляжи, теплые воды и постоянные ветра создают идеальные условия для обучения и практики [url=https://t.me/ArtemZhvakin]кайт школа в хургаде[/url].
Кайт-сафари – это не только занятия спортом, но и возможность получить незабываемые впечатления от природы. Вы сможете насладиться великолепными пейзажами, а также исследовать живописные бухты и таинственные острова, о которых мечтали многие [url=https://t.me/ArtemZhvakin]хургада серфинг[/url].
Присоединяйтесь к нам в Хургаде и станьте частью сообщества «Дети Ветра», где каждый найдет свое место под солнечным небом, а ветер станет вашим верным союзником в этом увлекательном путешествии. https://t.me/ArtemZhvakin
博客作者 Jeffreyitams
Medicine overview available. Drug trends described.
[url=https://tadacip365n.top/where-to-buy-tadacip.html]canadian pharmacy tadacip 20 mg[/url]
Drug details provided. Get medication facts.
博客作者 machine à sous casino
Hey very cool website!! Guy .. Excellent .. Amazing
.. I’ll bookmark your site and take the feeds also?
I am happy to find a lot of useful information here in the publish, we want develop more
techniques on this regard, thank you for sharing.
. . . . .
博客作者 canadian pharmaceuticals online safe
I like the helpful information you provide in your articles. I will bookmark your weblog and check again here regularly. I am quite sure I will learn lots of new stuff right here! Good luck for the next!
博客作者 canadian pharmaceuticals usa
you are truly a good webmaster. The site loading speed is incredible. It sort of feels that you’re doing any unique trick. Also, The contents are masterwork. you’ve performed a magnificent activity on this subject!
博客作者 canadian pharmaceuticals
Hi there to every single one, it’s in fact a nice for me to pay a quick visit this website, it consists of valuable Information.
博客作者 pharmaceuticals online australia
Howdy, I think your site may be having web browser compatibility issues. Whenever I take a look at your website in Safari, it looks fine however when opening in IE, it has some overlapping issues. I merely wanted to provide you with a quick heads up! Aside from that, great blog!
博客作者 Jeffreyitams
Prescribing details available. Get pill facts.
[url=https://tadacip365n.top/buy-cheap-tadacip.html]tadacip[/url]
Medication reactions explained. Medicine resource available.
博客作者 Davidmus
Cristiano Ronaldo – Forward. Illustrious actress with anomalous goal-scoring ability.
Luis Gustavo – Midfielder. Tonality playmaker with great vision and control https://www.alfeihavsalnassr.ru.
博客作者 Augustber
this [url=https://my-jaxxwallet.io/]jaxx download[/url]