添加自定义注解
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,411 条评论
博客作者 Frank#smith[Kfyzeiuqujbpygze,2,5]
best Inmate Text app
https://contactmeasap.com/blog/the-best-inmate-text-app-2/
博客作者 purchase
[url=https://nolvadexin.online/]nolvadex 20mg tablets[/url]
博客作者 Roycewon
Melbet is an emerging online betting party line that offers a sizeable cover of options after sports betting, stay betting, and casino games. Established to purvey an international picking of betting markets, it has fast befit well-received among bettors worldwide.
User Experience
The Melbet website is designed with user-friendliness in mind. With a guileless interface, users can without a hitch voyage toe rare sections such as sports, casino, and promotions. The policy is obtainable via desktop and sensitive devices, ensuring that customers can abode bets anytime and anywhere.
Sports Betting
Melbet covers an vast cook-stove of sports, including football, basketball, tennis, and esports. Bettors can determine numerous wagering options, including combine results, over/under, and unlike stumbling block markets. Flaming betting is a approved feature that allows users to embarrass bets on successive events, enhancing the touch of the game.
Casino Games
In wing as well as to sports [url=https://sketchfab.com/mostbetmosbet1]https://sketchfab.com/mostbetmosbet1[/url] betting, Melbet offers a interminable excerpt of casino games. Players can have a ball undying table games such as blackjack and roulette, as by a long way as a collection of slots from cork software providers. The live casino cross-section provides an immersive experience with legal dealers and real-time gameplay.
Promotions and Bonuses
Melbet is known for its attractive promotions and bonuses for both advanced and existing customers. These offers can involve appreciated bonuses, released bets, and cashback deals, which facilitate to enhance the entire betting experience.
Security and Boost
Melbet prioritizes the safety and safe keeping of its users. The rostrum employs advanced encryption technology to protect drug data and financial transactions. Additionally, Melbet provides 24/7 buyer support auspices of different channels, ensuring that any issues are instantaneously addressed.
Conclusion
Melbet stands peripheral exhausted in the competitive online betting market with its extensive offerings, accommodating interface, and well-substantiated character support. Whether you are a well-versed bettor or new to the men of online gambling, Melbet provides a honourable and thrilling stand to search your betting passion.456y56y
博客作者 pill
[url=https://ibaclofen.com/]baclofen 10mg tablets cost[/url]
博客作者 tablet
[url=https://ciproo.online/]ciprofloxacin 500 mg tablets cost[/url]
博客作者 pills
[url=https://lasixtbs.online/]lasix 10 mg tablet[/url]
博客作者 Frank#smith[Kfyzeiuqujbpygze,2,5]
best Inmate Text app
https://contactmeasap.com/blog/contactmeasap-review-4/
博客作者 cheap
[url=https://enolvadex.com/]cheap nolvadex uk[/url]
博客作者 Matricasudbi
Представь, что ты можешь разгадать все загадки своей жизни, просто введя дату рождения в калькулятор. С [url=https://matricasudbi.ru/]матрица судьбы по дате рождения онлайн[/url] это реальность! Полная расшифровка матрицы судьбы откроет перед тобой кармические задачи, жизненные уроки и скрытые таланты. Это не просто цифры и символы, а глубокий анализ, который поможет тебе понять себя и своё предназначение. Попробуй [url=https://matricasudbi.ru/]матрица судьбы рассчитать карту бесплатно[/url] и узнай, что Вселенная приготовила для тебя.
博客作者 tablet
[url=https://bacclofen.online/]buy baclofen 10 mg[/url]
博客作者 pharmacy
[url=https://xmodafinil.com/]purchase provigil[/url]
博客作者 pharmacy
[url=https://flomaxms.com/]flomax 8 mg[/url]
博客作者 PillsVot
Erectile dysfunction treatments available online from TruePills.
Discreet, next day delivery and lowest price guarantee.
Trial ED Pack consists of the following ED drugs:
Viagra Active Ingredient: Sildenafil 100mg 5 pills
Cialis 20mg 5 pills
Levitra 20mg 5 pills
Acquistare viagra con paypal:
https://cutt.ly/EezL7irj
博客作者 pharmacy
[url=https://baclofenx.com/]buy baclofen 10 mg[/url]
博客作者 Jackieobeva
Bitcoin is the original and most celebrated cryptocurrency, created in 2008 close to an unrevealed личность or organization of people using the pseudonym Satoshi Nakamoto. As a decentralized digital currency, Bitcoin operates without a principal sage or fix administrator. Transactions are verified by network nodes as a consequence cryptography and recorded in a every tom distributed ledger called a blockchain. This ensures transparency and asylum, making it unaccommodating for the purpose any take entity to exploit or guide the network. Bitcoin’s primitive end is to furnish an alternate to old currencies, which are typically controlled around inside banks and governments. Beside enabling peer-to-peer transactions without the necessity in the service of intermediaries, Bitcoin aims to revolutionize the pecuniary scheme, sacrifice greater economic freedom and lower doings costs.
https://remont-telefonov-spb-78.ru
https://rezonans-m.ru
https://cryptochampion.pro
https://rtdco.ru
https://remitazoll.ru
https://cncmotors.ru
https://wooddecora.ru
https://tualet-na-dachu.ru
https://defidigest.pro
https://orennozh.ru