- 博客(106)
- 收藏
- 关注
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.4.11)
调用原始方法,在方法形参中声明ProceedingJoinPoint joinPoint这个形参,然后调用方法 joinPoint.proceed(),原始方法的返回值用Object类型,第一个*是指返回值,第二个指接口第三个指方法,(..)代表方法的形参任意,这个代表运行com.itheima这个包下所有的接口或类当中所有的方法时,都会运行这段公共代码。一旦进行了AOP程序开发,最终运行的就不再是原始目标对象,而是基于目标对象生成的代理对象。13.3 事务管理-事务进阶-propagation属性。
2025-05-22 18:54:51
246
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.4.10)
Transacyional注解一般放在执行多次数据访问操作的业务方法上。13.2 事务管理-事务进阶-rollbackFor属性。13.3 事务管理-事务进阶-propagation属性。13.1 事务管理-事务回顾-spring事务管理。需要进行事务管理的yml配置。
2025-05-22 18:54:15
278
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.4.9)
response.setContentType(MIME)设置发送到客户端的响应的内容类型,在getWrite()之前可以设置,之后不行,response.getWriter()获取输出流,使用writer(json)将字符串响应给浏览器。在令牌不存在,返回错误信息时,转为JSON调用给的是阿里巴巴的toJSONString,后面设置返回类型,返回信息时,都是用的response的方法。完成Filter、interceptor、异常处理代码实操。12.16 异常处理。
2025-05-21 20:50:22
287
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.4.8)
Tomcat不识别controller程序,但是识别serverlet程序,因为tomcat是一个serverlet容器,springweb中提供了一个serverlet 前端控制器,教DispatcherServlet。登陆操作之后不需要再往下执行,所以方法最后需要加一个return,如果是登录直接放行,因为是请求登录,所以会被放行到登录功能。过滤器链及其执行顺序,一个Filter一个过滤器链,类名排名越靠前(按照ABC这样的顺序),就先执行谁。12.14 登录校验-Interceptor-详解。
2025-05-21 20:49:31
521
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.4.7)
Filter是JavaWeb三大组件,不是SpringBoot提供的,要在SpringBoot里面使用JavaWeb,则需要加上@ServletComponentScan注解。过滤器链及其执行顺序,一个Filter一个过滤器链,类名排名越靠前(按照ABC这样的顺序),就先执行谁。/*代表所有,@WebFilter(urlPatterns = “/*”)代表拦截所有请求。12.10 登录校验-Filter-详解(执行流程-拦截路径)12.11 登录校验-Filter-详解(过滤器链)
2025-05-17 21:01:05
277
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.4.6)
基于Java解析JWT,直接调用Jwts.parser,第一个方法设置密钥;username = #{username},当传入的是一个对象,可以直接用对象里面的属性名,但是#{}里面的值必须与传入的参数一致。简洁是指JWT是一个简单字符串,自包含指的是JWT令牌,看似是一个随机字符串,但是可以根据需要,自定义存储内容。Header是JSON数据格式,原始JSON变成字符串,需要经过base64编码。12.8 登录校验-JWT令牌-登录后下发令牌。先引入依赖,调用api。数字签名确定安全可靠。
2025-05-17 21:00:10
798
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.4.5)
Session存储在服务器端,浏览器第一次请求服务器时,可以在服务器端获取session,session会在服务器端自动创造,session有id,服务器会把id响应给浏览器,其实就是在响应头中增加一个setCookie响应头,浏览器把session存储到本地。获取到会话对象session,需要在方法中声明一个HttpSession session类型的形参,不存在则创建,存在则获取。服务器拿到浏览器请求cookie中的SESSIONID之后,会在里面找对应的id。是端口号,100是ip地址。
2025-05-15 14:45:53
682
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.4.4)
在后续的请求中,浏览器会自动的将cookie携带到服务器端。一切自动化进行的原因是因为cookie是http协议当中所支持的技术,cookie请求头就是给服务器端传递数据,cookie响应头传递服务器端向浏览器发送的cookie数据。Set-cookie响应头返回给浏览器,浏览器自动解析响应头,响应头对应的数据部分,也就是cookie,将cookie存储在浏览器本地,之后再每一次的请求中,都会将浏览器存储对应的cookie值,直接在请求头中,通过cookie携带到服务端。
2025-05-15 14:44:54
290
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.4.3)
Login是登录,是一个业务方法,mapper接口是持久层,是用来操作数据库,所以方法名用login这个业务方法名并不合适,所以可以用getByUsernameAndPassword来作为方法名。逻辑是在controller层,员工管理方法中的查询方法,删除方法等等所有方法都用一个if-else进行校验,登录则使用该方法,不登录则返回错误,进入登录页,其他功能都是这样,但是代码会繁琐。不登录,但是复制登录之后的网址就可以直接跳过登录这一步,但是这是不对的,需要登录校验。12.2 登录校验-概述。
2025-05-12 19:12:51
309
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.4.2)
根据用户名和密码查询员工,查询到了,说明用户名和密码正确,可以登录。对于登录,需要再开一个controller。12.1 基础登录功能。
2025-05-12 19:12:12
111
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.4.1)
但是因为只有后缀一样,所以不能进行自动注入,需要指定前缀,使用@ConfingurationProperties这个注解并通过prefix这个属性来指定前缀,引入之后,会有警告,是因为在配置文件中进行相应配置,引入依赖,这个依赖可以在配置的时候有提示。配置项自动注入,需要保持KEY的属性名一样,需要在文件中加上@Data注解,要将这个类交给IOC容器管理,使其成为IOC容器的Bean对象,所以需要再加上一个注解@Component。11.10 案例-配置文件-yml配置文件。
2025-05-09 19:52:00
307
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.31)
和老师给的代码比了一下,是@PutMapping("/emps/{id}"),动态id这里,多加了一个#,变成了/#{id},所以报错了,应该是用法不对。引用外部工具,需要硬编码赋值的多,而且过于分散,不太合适,把赋值写到properties中,并且在工具类中使用@Value(spring里面的)赋值。怀疑是username或者是name重复了,这里可能设置了一个唯一约束,所以将这两项进行修改,成功。Yml格式的配置文件的后缀可以是yml,也可以是yaml,不同配置方式对应不同格式。
2025-05-09 19:51:18
893
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.30)
数据查询回显之后,在表单中展示原有的数据,在原有的数据基础上修改员工的基本信息,修改完毕之后点击保存,将修改后的数据提交到服务端,最终修改数据库表中的数据。在接口里面只需要完成一个操作,调用阿里云OSS的工具类,将接收到的文件上传到阿里云OSS对象存储服务中,交给OSS来管理,再将获取到的URL返回给前端。在服务层,需要补充基本信息,也就是更新时间,在Mapper层,使用动态SQL,动态SQL解决多余逗号的问题,把set关键字替换成<set>标签。11.7 案例-修改员工-修改员工。
2025-05-07 22:13:12
612
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.29)
接收到上传的文件之后,需要将文件存储,交给阿里云OSS进行管理,需要调用OSS的api完成文件上传,将文件交给阿里云OSS来存储,在阿里云OSS存储中,每一个文件都要归属于某一个存储空间Bucket,所以在上传的时候,需要指定上传存储到哪一个存储空间Bucket当中。怀疑是没有开OSS权限,检查阿里云,访问控制 -> 用户 -> 权限管理 -> 添加权限,添加AliyunOSSFullAccess权限,重新运行代码,再次检查阿里云,上传成功!11.5 案例-文件上传-阿里云OSS-入门。
2025-05-07 22:12:21
510
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.28)
运行main方法之后,出现了报错:Process exited with an error: 1 (Exit value: 1)。在阿里云的文件列表里也没有看见上传的图片,说明有问题。11.5 案例-文件上传-阿里云OSS-入门。
2025-04-25 20:21:39
167
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.26)
上传文件代码中,需要根据自己情况修改的点。11.5 案例-文件上传-阿里云OSS-入门。
2025-04-22 20:38:46
157
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.25)
文件名后缀解决,找到文件最后一个点的位置,截取点及其后面的字符,得到扩展名。代码实现,找到最后一个点的位置,使用方法originalFilename.lastIndexOf(“.”),括号里面是指定最后一个点的位置,这样就获取到了位置的数值;接下来构建文件名,将UUID和扩展名拼接,直接用+号就可以。使用阿里云的准备工作。Bucket是阿里云OSS中的存储空间,存储空间是用户用于存储对象(0bject,就是文件)的容器,所有的对象都必须隶属于某个存储空间。11.4 案例-文件上传-阿里云OSS-准备。
2025-04-22 20:38:00
455
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.24)
代码优化,上传同名文件时,会被覆盖,问题在于是使用原始文件名直接存储的,为了保证不被覆盖,应该构造唯一的文件名,采用uuid解决。在输出日志代码处打了一个断点,看服务端接收到的数据,在上传文件的保存地址中,可以看到,有三个临时文件(.tmp),分别对应三个提交的表单项。放行之后,再看,三个临时文件不见了,只要文件上传请求响应完毕之后,临时文件会被自动删除,所以除了上传文件,还需要保存文件。通过postman完成文件上传,网址正常写,但是选择Body中的from-data,在下面指定表单项的内容。
2025-04-20 20:35:53
331
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.23)
普通的表单项以前怎么接收,现在就怎么接收,就是通过传参的方式接收。提交上来的文件,用MultipartFile这个api来接收,但是需要保持表单上的名称和方法形参上的名称保持一致;表单上的名字和方法形参的名字不一样,可以用注解@RequestParam来进行绑定,其中指定的value属性是前端传递的参数名。文件上传的前端页面的代码需要放到springboot项目的static里面,也就是resource文件夹下面的static文件夹里面。11.2 案例-文件上传-简介。
2025-04-20 20:33:58
294
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.22)
把delete方法注释掉之后,程序没有报错了,应该是在DeptContrller和EmpController里面都有一个@DeleteMapping("/#{id}"),所以bean容器就不知道谁是谁,按道理不应该出现这个问题,因为在前面已经用@RequestMapping("/emps")规定了前面的网址,也不知道是不是版本和这个注解的用法发生了变化。找不到依赖项 'org.projectlombok:lombok:1.18.30'11.1 案例-员工管理-新增员工。
2025-03-22 21:15:53
790
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.22)
RequeBody注解来通过实体类封装Json格式的数据。复习:@PostMapping注解用来接收Post方式的数据。11.1 案例-员工管理-新增员工。
2025-03-22 21:15:15
92
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.21)
Foreach标签中,collection代表要遍历的集合,item代表遍历出来的每一个元素的名字,separator代表分割符,open代表前面拼接什么,close代表后面拼接什么。前端中有两个删除按键,一个是删除员工,一个是批量删除,我们只需要将删除员工作为特殊的批量删除,就是只删除一个,开发一个接口就行。用id in ()来批量删除,使用动态sql标签<foreach>来遍历。一个xml文件里只要写一个<mapper>标签。Id使用list接收。
2025-03-21 21:11:09
319
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.21)
插件会自动的获取到要执行的sql语句,将要执行的sql语句换成count(*),自动执行这条sql语句,还会对该sql语句进行改造,在后面加上limit关键字,而limit的两个参数,PageHelper会自动根据传递上来的两个参数,来计算起始索引核每一页展示的记录数,之后就获得了分页查询的数据,将分页查询的数据封装到Page<Emp>对象中,最终获取Page对象中封装的分页查询结果。对于map层的修改,要使用where进行筛选,但是查询条件是动态的,所以要使用动态sql,动态sql使用xml文件来定义。
2025-03-21 21:10:03
473
原创 学习笔记:黑马程序员JavaWeb开发教程(2025.3.17)
出现报错:Process exited with an error: 1 (Exit value: 1),点击exec那一行,出现错误原因:Command execution failed.怀疑是没有开OSS权限,检查阿里云,访问控制 -> 用户 -> 权限管理 -> 添加权限,添加AliyunOSSFullAccess权限,重新运行代码,再次检查阿里云,上传成功!11.5 案例-文件上传-阿里云OSS-入门。
2025-03-17 16:09:56
393
原创 黑马JavaWeb课程的TliasWeb项目
写黑马JavaWeb课程的TliasWeb项目出现了问题,之前都没有问题,也不知道是不是隔了一个月再打开有问题了,或者是装了docker出现了环境问题。
2025-02-07 14:42:32
173
原创 学习笔记:黑马程序员JavaWeb开发教程(2024.11.29)
如何接收来自前端的数据: 接收到json数据之后,利用@RequestBody注解,将前端响应回来的json格式的数据封装到实体类中。发现路径中都有/depts,可以将每个方法对应请求路径中的/depts抽取到类上注解的@RequestMapping上。对代码中Controller层的优化。
2024-11-29 18:00:00
178
原创 学习笔记:黑马程序员JavaWeb开发教程(2024.11.28)
前面学过的,有点忘了,@PathVariable来获取请求路径参数(前面的知识:后端:使用{…}来标识该路径参数,需要使用@PathVariable获取路径参数),下面的代码中,@PathVariable来绑定和路径的id绑定。接口文档:阅读接口文档,在接口文档中规定了当前接口的请求路径、请求方式、在请求的时候传递的参数、最终需要响应回去的数据。在前端中id和序号不一样,差点以为删除失败了,要删的没删,不要删的删了。思路分析:分析要实现这个功能,具体的流程,该怎么实现。接口开发:要遵守开发文档。
2024-11-28 18:00:00
261
原创 学习笔记:黑马程序员JavaWeb开发教程(2024.11.29)
发现编辑部门和新增部门的ui是一样的,因此怀疑前端没有做更新部门的部分,也就是说当使用编辑的时候,实际走的是和新增一样的请求,输入的参数也是一样的,所以在前后端联调时,看起来就是编辑功能变成了新增功能。检查发现,在DeptController的add()方法中,使用接收参数的注解是@PathVariable,但是@PathVariable的作用是将URL中的占位符参数绑定到控制器处理方法的参数中,但是这里传的是Json格式的数据。前后端联调链接: http://localhost:90。
2024-11-28 11:14:37
460
2
原创 学习笔记:黑马程序员JavaWeb开发教程(2024.11.28)
发现路径中都有/depts,可以将每个方法对应请求路径中的/depts抽取到类上注解的@RequestMapping(这个注解是为了简化路径请求新加的)上。如何接收来自前端的数据: 接收到json数据之后,利用@RequestBody注解,将前端响应回来的json格式的数据封装到实体类中。对代码中Controller层的优化。
2024-11-28 11:11:45
470
原创 学习笔记:黑马程序员JavaWeb开发教程(2024.11.27)
看了网上的经验贴,有说到目录问题,题主的目录是把controller文件和application文件放到了两个不同的文件中,之后尝试了,将application文件放到和controller文件夹一个目录下,controller文件和application文件放到一个目录下,均失败。怀疑还是目录结构的错,也就是说,回到了问题一,直接重新在在外面写了一个application类,测试成功。
2024-11-27 18:00:00
226
原创 学习笔记:黑马程序员JavaWeb开发教程(2024.11.26)
同时在前面我们学过依赖注入,@Controller注解是用于控制反转(用于Controller层),也就是将对象的控制权交给容器,再和@Autowied配合,完成依赖注入,实现分层解耦。写代码的时候,IDEA联想到的是XSlf4j,不是Slf4j,因为没有在pom.Xml文件中加上lombok的依赖,当然也有可能是因为没有导入包,因为输入@Slf4j的时候爆红了,后面用art+enter解决,就是自动的导入包,就好了。是因为多态,父类引用指向子类对象,父类(接口)的引用就能够直接调用子类(实现类)的方法。
2024-11-26 18:00:00
466
原创 学习笔记:黑马程序员JavaWeb开发教程(2024.11.25)
因为请求文档中要求,请求方式必须是GET,但是目前的代码使用所有的请求方式都是可以的,所以,要在@GetMapping上加上method=RequestMethod.GET,其中,RequestMethod是应该枚举类,里面有所有的请求方式。但是这样又太麻烦了,所有可以使用@RequestMapping1的衍生注解,@GetMapping,再在里面加上请求路径就可以了,代表使用该路径,且请求方式是GET。这里面select…部分,在代码中重复的很多,如果要改,就非常麻烦,也就是复用性差。
2024-11-25 18:00:00
474
原创 学习笔记:黑马程序员JavaWeb开发教程(2024.11.19)
第一点,因为配置文件必须放在resources目录下,又要保持同包同名,所以我们应该在resources目录下创建一个和Mapper所在包名名字一样的目录,把配置文件放在里面。这里有点不太理解,相同包应该是指位置一样的包,但是这个最开始的位置一个是java一个是resources,这里指的名字一样,应该只是包的名字,最开始的位置应该不算。Resources中只能创建directory不能创建包,directory要创建分层结构,之间分隔应该用/而不是.,自己觉得可以参考文件夹的地址。
2024-11-19 18:00:00
200
原创 学习笔记:黑马程序员JavaWeb开发教程(2024.11.18)
需要模糊查询,根据要求,我们需要在关键词前后都加上%,但是我们不能使用‘%#{内容}%’的形式,因为#{内容}最终会变成?不能放在‘’之中,老师给出的解决方法是使用${}的方式,就是不用预编译。自己的问题是,为什么不能把%张%都写到#{}中去,因为#{}只能写输入的内容,%是本来就写好的。但是使用${}会存在性能低,sql注入的问题,因此采用concat拼接函数来解决。9.8 Mybatis-基础操作-查询(条件查询)@param注解的作用。
2024-11-18 20:50:55
307
原创 学习笔记:黑马程序员JavaWeb开发教程(2024.11.9)
为了提高效率,MySQL会将优化编译过的sql缓存起来,缓存就是一块内存区域,就是用来存储数据的,下次执行sql语句的时候,会先检查缓存,看缓存当中有没有编译好的sql语句,有则直接执行,没有则走流程。在编写的delete方法中,是没有返回值的,但是实际上是有的,就是返回方法影响语句的条数,其他crud语句也是有一样的返回值(int类型),但是一般不需要返回值。在测试过程中,出现了像deptId这样没有封装到的属性,原因是因为,实体类中的属性名和数据库表中的属性名不一致。
2024-11-09 19:46:44
510
原创 学习笔记:黑马程序员JavaWeb开发教程(2024.11.8)
Mybatis是在Java中编写sql语句,将sql语句发送到数据库执行在springboot中配置Mybatis,需要对springboot的默认配置文件application.properties中配置数据库的四要素:驱动类的全类名、数据库连接的url、数据库的用户名、数据库连接的密码。
2024-11-08 21:58:12
1486
电子密码锁-6位密码1 (2).zip
2024-10-02
单片机课设程序,用的是51单片机
2024-10-02
黑马JavaWeb课程的TliasWeb项目
2025-02-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人