Day1
Day1时遇见的报错和解决方案
运行启动类时报错"java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid"
- lombok版本不兼容,(几年前的项目和现在肯定有点冲突),在xml文件中,更换lombok的依赖版本,改用1.18.30
- jdk版本过高,用jdk23会发生报错,改用jdk17就OK了
在登录界面一直登录不进去
数据库没有连接成功,在application-dev.yml文件中更改一下账号密码,改成你自己的数据库账户密码就可以了
Apifox
YAPi登录不上可以用Apifox,新建项目->导入文件->YApi
JWT
这段代码实现了基于 JWT(JSON Web Token)的用户认证令牌生成逻辑
Map<String, Object> claims = new HashMap<>(); //创建声明
claims.put(JwtClaimsConstant.EMP_ID, employee.getId()); //存放员工ID和主键值
- Claims:JWT的核心部分,用于储存用户信息和元数据
- JwtClaimsConstant.EMP_ID:常量,通常是字符串
"emp_id",作为员工 ID 的键 - employee.getId():从数据库查询的员工对象中获取 ID 值
String token = JwtUtil.createJWT(
jwtProperties.getAdminSecretKey(),
jwtProperties.getAdminTtl(),
claims);
- JwtUtil.createJWT():工具类方法,负责生成 JWT
- jwtProperties:配置类,读取配置文件中的 JWT 参数
- adminSecretKey:签名密钥(如
"your-32-char-secret") - adminTtl:令牌有效期(如
3600000毫秒 = 1 小时)
- adminSecretKey:签名密钥(如
- claims:包含用户信息的 Map
@RequestMapping("/admin/employee")
@PostMapping("/login")
@RequestMapping是 Spring 框架中用于处理 HTTP 请求映射的注解,它可以将 HTTP 请求映射到具体的控制器方法上。@PostMapping("/login")是 Spring MVC 中用于处理 HTTP POST 请求的注解,专门用于映射登录接口。它是@RequestMapping(method = RequestMethod.POST)的快捷方式
Nginx的反向代理
前端请求地址:http://localhost/api/employee/login

后端接口地址:http://localhost:8080/admin/employee/login
可以发现前端请求地址和后端接口地址不一致,这就是跨域问题
Nginx解决的这个问题,他实现了反向代理


静态资源映射
设置静态资源映射指的是将服务器上的静态资源(如图片、CSS、JavaScript、字体文件等)与客户端(浏览器)请求的 URL 路径建立对应关系,让客户端能通过特定的 URL 访问到这些资源。
为什么需要静态资源映射?
- 静态资源通常存储在服务器的本地文件系统中(如
/usr/local/webapp/static/images),但客户端无法直接访问服务器的本地路径(出于安全和规范考虑)。 - 通过映射,开发者可以用简洁、统一的 URL(如
http://example.com/static/logo.png)替代复杂的本地路径,方便客户端请求。 - 同时,映射还能实现资源访问控制、路径简化、缓存策略配置等功能。
举个例子理解
假设服务器上有一张图片,实际存储路径是:
D:/project/src/main/resources/static/images/logo.png
如果不设置映射,客户端无法直接通过这个本地路径访问。
通过配置映射后,我们可以规定:
- 当客户端请求
http://localhost:8080/static/images/logo.png时,服务器自动对应到本地路径D:/project/src/main/resources/static/images/logo.png,并返回该图片。
这里的/static就是映射的 “前缀”,它关联了服务器的实际资源目录。
Spring Boot(Java)
在配置类中通过addResourceHandlers方法设置:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 映射URL路径"/static/**"到本地目录"classpath:/static/"
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/");
}
}
总结
静态资源映射的核心是建立 “客户端 URL 路径” 与 “服务器本地资源路径” 的对应关系,其目的是让客户端能安全、便捷地访问静态资源,同时简化开发和维护。无论是后端框架还是服务器,都提供了灵活的配置方式来实现这一功能。
浙公网安备 33010602011771号