首页
关于
友情链接
Search
1
Mybatis-动态SQL
93 阅读
2
Mybatis-XML映射文件
80 阅读
3
springboot配置文件yml
80 阅读
4
Mybatis-基础操作
79 阅读
5
拦截器(Interceptor)
74 阅读
学习记录
MySql
Java
vue
Mybatis
默认分类
代码记录
项目搭建教程
go项目
源码分享
经验分享
登录
Search
标签搜索
java
mysql
Mybatis
spring boot
编程
lombok
go
MinDoc
JAVAweb
Typecho
累计撰写
16
篇文章
累计收到
1
条评论
首页
栏目
学习记录
MySql
Java
vue
Mybatis
默认分类
代码记录
项目搭建教程
go项目
源码分享
经验分享
页面
关于
友情链接
搜索到
9
篇与
的结果
2023-12-26
java基础复习-引用调用
分为值传递和引用传递值传递 基本数据类型引用传递 数组 对象public class Main { public static void main(String[] args) { A a = new A(); a.遇见 = "6666"; System.out.println(a.遇见); b(a); System.out.println(a.遇见); } public static void b(A a) { a.遇见 = "7777"; System.out.println(a.遇见); } } class A { String 遇见; }
2023年12月26日
28 阅读
0 评论
0 点赞
2023-11-08
java基础复习-变量 数据类型 类型转换 运算符
暂无简介
2023年11月08日
42 阅读
0 评论
0 点赞
2023-06-05
拦截器(Interceptor)
概述概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行。 作用:拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码。 Interceptor 快速入门定义拦截器,实现HandlerInterceptor接口,并重写其所有方法。 注册拦截器@Component public class LoginCheckInterceptor implements HandlerInterceptor { @Override //目标资源方法运行前运行, 返回true: 放行, 放回false, 不放行 public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception { System.out.println("收到请求 ..."); return true; } @Override //目标资源方法运行后运行 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandle ..."); } @Override //视图渲染完毕后运行, 最后运行 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion..."); } } @Configuration //配置类 public class WebConfig implements WebMvcConfigurer { @Autowired private LoginCheckInterceptor loginCheckInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { //注册拦截器 /**拦截所有资源 /*拦截一级目录 registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**"); } }拦截器-拦截路径 @Override public void addInterceptors(InterceptorRegistry registry) { //注册拦截器 /**拦截所有资源 /*拦截一级目录 registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**").excludePathPatterns("/login"); }拦截器-执行流程Filter 与 Interceptor不同接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HandlerInterceptor接口。 拦截范围不同:过滤器Filter会拦截所有的资源,而Interceptor只会拦截Spring环境中的资源。登录校验例子package com.tlias.interceptor; import com.alibaba.fastjson.JSONObject; import com.tlias.pojo.Result; import com.tlias.utils.JwtUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @Slf4j @Component public class LoginCheckInterceptor implements HandlerInterceptor { @Override //目标资源方法运行前运行, 返回true: 放行, 放回false, 不放行 public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception { //1.获取请求url。 String url = req.getRequestURL().toString(); log.info("LoginCheckInterceptor 请求的url: {}",url); //2.判断请求url中是否包含login,如果包含,说明是登录操作,放行。 if(url.contains("login")){ //已被排除 log.info("登录操作, 放行..."); return true; } //3.获取请求头中的令牌(token)。 String jwt = req.getHeader("token"); //4.判断令牌是否存在,如果不存在,返回错误结果(未登录)。 if(!StringUtils.hasLength(jwt)){ log.info("请求头token为空,返回未登录的信息"); Result error = Result.error("NOT_LOGIN"); //手动转换 对象--json --------> 阿里巴巴fastJSON String notLogin = JSONObject.toJSONString(error); resp.getWriter().write(notLogin); return false; } //5.解析token,如果解析失败,返回错误结果(未登录)。 try { JwtUtils.parseJWT(jwt); } catch (Exception e) {//jwt解析失败 e.printStackTrace(); log.info("解析令牌失败, 返回未登录错误信息"); Result error = Result.error("NOT_LOGIN"); //手动转换 对象--json --------> 阿里巴巴fastJSON String notLogin = JSONObject.toJSONString(error); resp.getWriter().write(notLogin); return false; } //6.放行。 log.info("令牌合法, 放行"); return true; //真 放行 假 拦截 } @Override //目标资源方法运行后运行 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandle ..."); } @Override //视图渲染完毕后运行, 最后运行 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion..."); } }
2023年06月05日
74 阅读
0 评论
0 点赞
2023-06-05
过滤器Filter
Filter快速入门1. 定义Filter:定义一个类,实现 Filter 接口,并重写其所有方法。 2. 配置Filter:Filter类上加 @WebFilter 注解,配置拦截资源的路径。引导类上加 @ServletComponentScan 开启Servlet组件支持 在易语言里面使用的时候有个注册前全局接口与注册后全局接口@WebFilter(urlPatterns = "/*") public class DemoFilter implements Filter { @Override //初始化方法, 只调用一次 public void init(FilterConfig filterConfig) throws ServletException { System.out.println("init 初始化方法执行了"); } @Override //拦截到请求之后调用, 调用多次 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("Demo 拦截到了请求...放行前逻辑"); //放行 chain.doFilter(request,response); System.out.println("Demo 拦截到了请求...放行后逻辑"); } @Override //销毁方法, 只调用一次 public void destroy() { System.out.println("destroy 销毁方法执行了"); } }@ServletComponentScan @SpringBootApplication public class TliasApplication { public static void main(String[] args) { SpringApplication.run(TliasApplication.class, args); } }Filter执行流程请求 --> 放行前逻辑 --> 放行 --> 资源 --> 放行后逻辑 Filter拦截路径Filter 可以根据需求,配置不同的拦截资源路径: 过滤器链介绍:一个web应用中,可以配置多个过滤器,这多个过滤器就形成了一个过滤器链
2023年06月05日
60 阅读
0 评论
0 点赞
2023-05-30
springboot配置文件yml
配置格式SpringBoot提供了多种属性配置方式1,application.propertiesserver.port=8080 server.address=127.0.0.12,application.ymlserver: port: 8080 address: 127.0.0.13,application.yamlserver: port: 8080 address: 127.0.0.1yml基本语法 大小写敏感 数值前边必须有空格,作为分隔符 使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea中会自动将Tab转换为空格) 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 符号# 表示注释,从这个字符一直到行尾,都会被解析器忽略yml数据格式1对象/Map集合user: name: zhangsan age: 18 password: 1234562数组/List/Set集合hobby: - java - game - sport配置文件读取配置文件内容#阿里云OSS aliyun: oss: endpoint: https://o accessKeyId: LTAI4GC accessKeySecret: yBshY bucketName: we1使用注解 @Value是spring boot的java代码@SpringBootTest class TliasApplicationTests { @Value("aliyun.oss.endpoint") String a; @Test void contextLoads() { System.out.println("这是a:"+a); } }aliyun.oss.endpoint 为yml文件中的路径2自动获取绑定@Data @Component @ConfigurationProperties(prefix = "aliyun.oss") public class AliOSSProperties { private String endpoint; private String accessKeyId; private String accessKeySecret; private String bucketName; }1.类中的属性名要与配置中的key一致 类属性endpoint与配置文件中的bucketName一致 2.将这个实体类交给ioc容器管理 加入注解@Component 3.指定前缀 @ConfigurationProperties(prefix = "前缀") bucketName的完整路径为aliyun.oss.bucketName
2023年05月30日
80 阅读
0 评论
0 点赞
1
2