添加自定义注解
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,523 条评论
博客作者 canadian pharmacy review
Your style is really unique in comparison to other folks I’ve read stuff from. Thank you for posting when you’ve got the opportunity, Guess I will just bookmark this web site.
博客作者 AaronfeedE
Выбор приватной поликлиники это ответственный шаг, который может значительно повлиять на ваше здоровье и качество медицинских услуг, которые вы получите. В данной статье мы рассмотрим главные критерии, на которые стоит обратить внимание при выборе частной медицинской организации.
Первое, что стоит сделать это выяснить о репутации клиники. Это можно сделать несколькими методами:
Любая клиника имеет свои сильные и слабые стороны. Узнайте, какая специализация у медицинского учреждения, и как высоко оно оценивается в определенной области медицины. К примеру, если для вас нужен кардиолог, выберите больницу с хорошей репутацией в области кардиологии.
Качество медицинских услуг напрямую зависит от квалификации профессионалов. Убедитесь, что лекари имеют:
На сайтах клиник часто можно найти информацию о врачах, ознакомиться с их биографиями, ступень образования и опытом работы.
Современные технологии и медицинское оборудование играют главную роль в диагностике и лечении заболеваний. Уточните, какое оборудование используется в поликлинике, и довольно ли оно современно для исполнения необходимых для вас исследований и процедур.
Обратите внимание на условия, в каких предоставляются услуги:
Сравните цены на услуги в нескольких клиниках. Помните, что высокая стоимость не всегда гарантирует высокое качество, однако и самые дешевенькие услуги возможно окажутся рискованными. Узнайте, включены ли в цена все возможные дополнительные расходы (анализы, препараты).
Комфортное размещение клиники также имеет значение. Если вам нужно будет довольно частенько навещать врача или проходить процедуры, избирайте клинику, которая находится близко к вашему дому либо месту работы.
Узнайте, как осуществляется запись на прием: [url=https://www.taijiacademy.com/newforum_down/profile.php?mode=viewprofile&u=313191]https://www.taijiacademy.com/newforum_down/profile.php?mode=viewprofile&u=313191[/url] конечно возможно ли это онлайн, по телефонному аппарату и без очереди, каковы сроки ожидания. Удобная система записи может веско упростить процесс воззвания в больницу.
Некоторые клиники делают отличное предложение широкий спектр дополнительных услуг (например, лабораторные исследования, анализы, физиотерапия), что дает возможность провести полный курс исцеления в одном месте. Такое может быть комфортно и сберечь время.
Заключение
Выбор хорошей частной клиники индивидуальный процесс, и рекомендации могут отличаться в большой зависимости от ваших потребностей и ожиданий. Используйте предложенные аспекты для оценки и выбора, и помните, что ваше здоровье это главный ценность. Не стыдитесь спрашивать и уточнять детали, чтобы сделать обоснованный выбор.
博客作者 canadian pharmaceuticals online
Article writing is also a fun, if you know afterward you can write otherwise it is complex to write.
博客作者 canadian drugs online pharmacies
Inspiring quest there. What occurred after? Take care!
博客作者 list of canadian pharmaceuticals online
This design is wicked! You certainly know how to keep a reader amused. Between your wit and your videos, I was almost moved to start my own blog (well, almost…HaHa!) Great job. I really enjoyed what you had to say, and more than that, how you presented it. Too cool!
博客作者 canadian pharmaceutical companies
I go to see day-to-day some blogs and blogs to read articles or reviews, except this web site provides quality based writing.
博客作者 pharmaceuticals online australia
Woah! I’m really enjoying the template/theme of this website. It’s simple, yet effective. A lot of times it’s challenging to get that "perfect balance" between superb usability and appearance. I must say that you’ve done a fantastic job with this. Also, the blog loads very fast for me on Safari. Outstanding Blog!
博客作者 canadian pharmaceuticals for usa sales
Fine way of explaining, and fastidious piece of writing to get information concerning my presentation focus, which i am going to present in academy.
博客作者 canadian pharmacy king
Every weekend i used to pay a quick visit this website, as i wish for enjoyment, for the reason that this this web page conations truly pleasant funny information too.
博客作者 https://kramtp.info/novosti/poleznye-sovety/full/70595
https://kramtp.info/novosti/poleznye-sovety/full/70595
博客作者 canada pharmaceuticals
Hey are using WordPress for your site platform? I’m new to the blog world but I’m trying to get started and set up my own. Do you require any html coding knowledge to make your own blog? Any help would be really appreciated!
博客作者 http://www.gazetahot.ru/uzhin/
https://www.gazetahot.ru/uzhin/
博客作者 Kuphdaurb
[url=https://t.me/s/night_samara]проститутки в самаре на дом[/url]
博客作者 navarro pharmacy miami
Thanks for the auspicious writeup. It if truth be told used to be a enjoyment account it. Glance complicated to more delivered agreeable from you! However, how could we keep in touch?
博客作者 Kuphdaurb
[url=https://t.me/s/nsk_night]проститутки новосибирска не агентство[/url]