Springboot:过滤器

1、权限过滤器 项目中创建PermissionFilter类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 package com.example.demo.config; import jakarta.servlet.*; import jakarta.servlet.annotation.WebFilter; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; // 权限过滤器 @WebFilter(urlPatterns = "/*") public class PermissionFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 将 ServletRequest 和 ServletResponse 转换为 HttpServletRequest 和 HttpServletResponse // 这样可以使用 HTTP 协议特有的方法 HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse = (HttpServletResponse) response; // 模拟从请求中获取用户角色 // 这里假设用户角色已经在会话中,并用于后续的权限检查 String userRole = (String) httpRequest.getSession().getAttribute("userRole"); // 模拟需要 ADMIN 角色才能访问的路径 // 如果请求的路径以 "/admin/" 开头,检查用户角色是否为 ADMIN // 如果不是 ADMIN 角色,返回 403 错误,表示用户没有访问权限 if (httpRequest.getRequestURI().startsWith("/admin/")) { if (!"ADMIN".equals(userRole)) { httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "You don't have permission to access this resource."); return; } } // 如果用户有权限或者请求的资源不需要权限,继续执行链中的下一个过滤器或目标资源 chain.doFilter(request, response); } }

2025-03-05 · 1 min · 147 words

Springboot:拦截器

在请求被处理前,执行一些公共逻辑,例如检查用户是否认证、是否有权限访问受保护的资源、日志记录等; 可以在请求被处理前,对请求的数据进行预处理,还可以对返回的结果进行统一处理。 1、Cors跨域处理 在项目中创建config文件包,然后创建WebConfig类,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package com.example.demo.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { /** * 添加跨域资源共享(CORS)映射配置 * 该方法用于配置允许从哪些域对资源进行跨域请求 * * @param registry CorsRegistry对象,用于注册CORS映射 */ @Override public void addCorsMappings(CorsRegistry registry) { // 配置跨域请求的映射路径,"/**"表示匹配所有路径 registry.addMapping("/**") // 配置允许跨域请求的源,此处为本地开发环境地址 .allowedOrigins("http://localhost:5173") // 允许在请求中携带凭证(如Cookies) .allowCredentials(true) // 配置允许的请求头,"*"表示允许所有请求头 .allowedHeaders("*") // 配置允许的HTTP方法,此处允许GET、POST和DELETE请求 .allowedMethods("GET", "POST", "DELETE"); } } 2、登录校验 1、创建拦截器 定义一个类并实现HandlerInterceptor接口。 ...

2025-03-05 · 3 min · 543 words

Springboot:项目配置

1、配置Maven 安装Maven 因为IDE自带的不太好用,加载比较慢,需要先将maven安装到本地,然后配置到IDE中。 下载地址: https://maven.apache.org/download.cgi 下载Binary zip archive到本地,解压到本地就可以用了 本地目录比如:D:\Development\Java\apache-maven-3.9.8 修改Maven仓库国内镜像 打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/settings.xml ) https://developer.aliyun.com/mvn/guide 在conf/settings.xml的标签中添加 mirror 子节点: 1 2 3 4 5 6 <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> 找到localRepository说明内容,下边增加一行 1 <localRepository>D:\Development\Java\maven-repository</localRepository> 修改系统环境变量 PATH中添加maven的bin目录 例如:D:\Development\Java\apache-maven-3.9.8\bin 可以在命令中查看版本:mvn -v 修改IDEA配置 当前项目配置:打开IDEA,文件→设置→构建执行部署→构建工具→Maven Maven主路径:修改为Maven的安装路径,比如:D:\Development\Java\apache-maven-3.9.8 用户设置文件:修改为主路径下的setting文件,比如:D:\Development\Java\apache-maven-3.9.8\conf\settings.xml 本地仓库:系统默认会根据setting读取对应的localRepository地址,如果没有读取则需要手动修改 为保证新建项目时,IDEA自动识别Maven配置 打开IDEA,文件→新建项目设置→为新项目设置→构建执行部署→构建工具→Maven 2、配置热部署 安装spring-boot-devtools依赖工具 1 2 3 4 5 6 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> 打开IDEA: ...

2025-03-05 · 1 min · 75 words

Springboot:HelloWorld

1、创建Springboot项目 使用IDEA创建Springboot项目: 生成器:选择Spring Initializr 名称自定义,位置选择合适的位置,语言选择Java,类型选择Maven,组、工作、包按需填写 JDK选择17以上,建议21(需要先安装),Java选择JDK对应的版本,打包选择Jar 点击下一步 选择Spring Web,点击Next,填写项目名称和路径,点击Next,选择Java版本,点击Next,选择依赖,点击Next,选择项目结构,点击Next,点击Finish。 选择依赖: Spring Web:用于构建Web应用程序(必选) Spring Boot DevTools:用于开发时的自动重启(可选) Lombok:用于简化Java代码(可选) Spring Boot Starter Test:用于测试Spring Boot应用程序(可选) 点击创建 2、启动项目 等Maven安装完全部依赖后,就可以启动项目了(建议先查看项目配置方法,将Maven仓库切换到阿里云镜像) 打开项目中src/main/java/com/example/demo目录下的DemoApplication.java文件,点击class左侧的绿色箭头,就可以启动项目了,也可以使用快捷键Shift+F10启动项目,或者点击IDEA上方的绿色箭头启动项目。 打开浏览器:http://localhost:8080/ 看到如下结果,说明项目创建成功。 1 2 3 4 5 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Thu Aug 08 12:08:16 CST 2024 There was an unexpected error (type=Not Found, status=404). 3、创建Controller 在项目目录下,创建controller目录,创建HelloController.java文件,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 package com.example.demo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorldController { @GetMapping("/hello") public String hello() { return "Hello World!"; } } 打开浏览器:http://localhost:8080/hello 就可以看到:Hello World! ...

2025-03-05 · 1 min · 103 words