interceptor

mybatis 分析五 插件demo及源码解析

时间秒杀一切 提交于 2020-12-11 02:03:25
一、新建自定义插件类 简单打印一下sql /** * 打印sql 插件 */ @Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class, Integer.class}) }) public class PrintSqlInterceptor implements Interceptor { @Override public Object intercept(Invocation invocation) throws Throwable { //Executor (update, query, flushStatements, commit, rollback,getTransaction, close, isClosed) //ParameterHandler (getParameterObject, setParameters) //ResultSetHandler (handleResultSets, handleOutputParameters) //StatementHandler (prepare, parameterize, batch, update, query) StatementHandler target =

SpringBoot 拦截器

|▌冷眼眸甩不掉的悲伤 提交于 2020-12-05 02:25:40
web拦截器作用有权限控制,日志记录等等。SpringBoot 提供 HandlerInterceptor 方便我们开发; 我们定义一个自定义拦截器 实现 HandlerInterceptor 接口,实现三个方法, preHandle 是请求处理之前调用, postHandle 是请求处理之后并且视图渲染之前调用, afterCompletion 请求结束之后并且视图渲染之后调用; package cn.smart4j .interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; /** * 自定义拦截器 * @author Administrator * */ public class MyInterceptor implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest request,

spring boot 全局事务配置

微笑、不失礼 提交于 2020-11-11 21:44:55
我发现很多开源的springBoot项目,使用事务都是 直接使用 事务注解。并没有配置全局事务的。 其实目前现在不是新人程序员就以为 事务就只能靠加注解来控制了。根本没听说过全局事务配置。 网上很多全局事务其实都是不够好的。都是抄来抄去的。真的不知道能不能用。 其实这样很不好的。 写代码的时候如果漏了加上事务注解,那异常不回滚太可怕了 如果写代码的时候都需要手动加上注解,多费事啊。配置全局事务注解多省事。 配置代码 package com.door.config; import org.aspectj.lang.annotation.Aspect; import org.springframework.aop.Advisor; import org.springframework.aop.aspectj.AspectJExpressionPointcut; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context

表单重复提交

廉价感情. 提交于 2020-11-02 14:38:55
解决方案 1 通过JavaScript屏蔽提交按钮(不推荐) 通过js代码,当用户点击提交按钮后,屏蔽提交按钮使用户无法点击提交按钮或点击无效,从而实现防止表单重复提交。 ps:js代码很容易被绕过。比如用户通过刷新页面方式,或使用postman等工具绕过前段页面仍能重复提交表单。因此不推荐此方法。 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML> <html> <head> <title>表单</title> <script type="text/javascript"> //默认提交状态为false var commitStatus = false; function dosubmit(){ if(commitStatus==false){ //提交表单后,讲提交状态改为true commitStatus = true; return true; }else{ return false; } } </script> </head> <body> <form action="/path/post" onsubmit="return dosubmit()" method="post"> 用户名:<input type="text" name="username">

Grafana+Prometheus系统监控之SpringBoot

拜拜、爱过 提交于 2020-10-30 08:13:30
前言 前一段时间使用SpringBoot创建了一个 webhook 项目,由于近期项目中也使用了不少SpringBoot相关的项目,趁着周末,配置一下使用prometheus监控微服务Springboot。 项目配置 引入坐标 <!-- Exposition spring_boot --><dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient_spring_boot</artifactId> <version>0.1.0</version></dependency><!-- Hotspot JVM metrics --><dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient_hotspot</artifactId> <version>0.1.0</version></dependency><!-- Exposition servlet --><dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient_servlet</artifactId> <version>0.1.0</version></dependency>

Java面试之SpringMVC面试题

泪湿孤枕 提交于 2020-10-28 07:30:47
SpringMVC是一个模型-视图-控制器(MVC)的Web框架建立在中央前端控制器servlet(DispatcherServlet),它负责发送每个请求到合适的处理程序,使用视图来最终返回响应结果的概念。  1、讲下SpringMvc的核心入口类是什么,Struts1,Struts2的分别是什么   SpringMvc的是DispatchServlet,Struts1的是ActionServlet,Struts2的是StrutsPrepareAndExecuteFilter   2、SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决   是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段   3、SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代   一般用@Conntroller注解,表示是表现层,不能用用别的注解代替.   4、@RequestMapping注解用在类上面有什么作用   用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。   5、怎么样把某个请求映射到特定的方法上面   直接在方法上面加上注解@RequestMapping,并且在这个注解里面写上要拦截的路径   6、如果在拦截请求中,我想拦截get方式提交的方法,怎么配置   可以在