JavaWeb
文章平均质量分 84
javaWeb基础
phenomenal99
菜鸟一枚,主更深度学习和java相关知识。
展开
-
SpringBoot原理
在实现类重写的selectImports()方法,读取当前项目下所有依赖jar包中META-INF/spring.factories、META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports两个文件里面定义的配置类(配置类中定义了@Bean注解标识的方法)。如果采用以上这种方式来完成自动配置,那我们进行项目开发时,当需要引入大量的第三方的依赖,就需要在启动类上配置N多要扫描的包,这种方式会很繁琐。原创 2024-10-14 17:15:25 · 369 阅读 · 0 评论 -
Spring中的AOP
我们要想完成统计各个业务方法执行耗时的需求,我们只需要定义一个模板方法,将记录方法执行耗时这一部分公共的逻辑代码,定义在模板方法当中,在这个方法开始运行之前,来记录这个方法运行的开始时间,在方法结束运行的时候,再来记录方法运行的结束时间,中间就来运行原始的业务方法。我们所说的模板方法,其实就是代理对象中所定义的方法,那代理对象中的方法以及根据对应的业务需要, 完成了对应的业务功能,当运行原始业务方法时,就会运行代理对象中的方法,从而实现统计业务方法执行耗时的操作。切入点指的是匹配连接点的条件。原创 2024-09-19 15:42:25 · 1107 阅读 · 1 评论 -
Java中的事务管理
以上业务功能delete()方法在运行时,会引发除0的算数运算异常(运行时异常),出现异常之后,由于我们在方法上加了@Transactional注解进行事务管理,所以发生异常会执行rollback回滚操作,从而保证事务操作前后数据是一致的。所谓事务的传播行为,指的就是在A方法运行的时候,首先会开启一个事务,在A方法当中又调用了B方法, B方法自身也具有事务,那么B方法在运行的时候,到底是加入到A方法的事务当中来,还是B方法在运行的时候新建一个事务?例如:两个事务方法,一个A方法,一个B方法。原创 2024-09-18 15:09:28 · 780 阅读 · 0 评论 -
JavaWeb案例-登录认证
如果是第一次请求Session ,会话对象是不存在的,这个时候服务器会自动的创建一个会话对象Session。获取到会话对象 session 之后,要给浏览器响应数据,最终在给浏览器响应数据的时候,就会携带这么一个 cookie 的名字,就是 JSESSIONID ,下一次再请求的时候,是不是又会将 Cookie 携带到服务端?通过统一拦截的技术,我们可以来拦截浏览器发送过来的所有的请求,拦截到这个请求之后,就可以通过请求来获取之前所存入的登录标记,在获取到登录标记且标记为登录成功,就说明员工已经登录了。原创 2024-09-10 17:59:12 · 1546 阅读 · 0 评论 -
Java中的配置文件
如果我们开发的是一个真实的企业级项目, Java类可能会有很多,如果将这些参数分散的定义在各个Java类当中,我们要修改一个参数值,我们就需要在众多的Java代码当中来定位到对应的位置,再来修改参数,修改完毕之后再重新编译再运行。前面我们一直使用springboot项目创建完毕后自带的application.properties进行属性的配置,在springboot项目当中是支持多种配置方式的,除了支持properties配置文件以外,还支持另外一种类型的配置文件,yml格式的配置文件。原创 2024-09-07 11:56:44 · 1590 阅读 · 0 评论 -
SpringBootWeb案例(续)
在此案例中,在新增员工的时候,要上传员工的头像,此时就会涉及到文件上传的功能。在进行修改员工信息的时候,我们首先先要根据员工的ID查询员工的信息用于页面回显展示,然后用户修改员工数据之后,点击保存按钮,就可以将修改的数据提交到服务端,保存到数据库。在新增员工的时候,上传员工的图像,而之所以需要上传员工的图像,是因为将来我们需要在系统页面当中访问并展示员工的图像。使用分页解决这个问题。在新增用户时,我们需要保存用户的基本信息,并且还需要上传的员工的图片,我们先完成第一步操作,保存用户的基本信息。原创 2024-09-05 19:56:30 · 1222 阅读 · 0 评论 -
SpringBootWeb案例
第2步:创建一个SpringBoot工程,选择引入对应的起步依赖(web、mybatis、mysql驱动、lombok) (可以创建完毕之后,在pom.xml文件中更改版本号)我们看到,原始的传统URL呢,定义比较复杂,而且将资源的访问行为对外暴露出来了。如:users、emps、books…查询的部门的信息:部门ID、部门名称、修改时间通过页面原型以及需求描述,我们可以看到,部门查询,是不需要考虑。点击 "新增部门" 按钮,弹出新增部门对话框,输入部门名称,点击 "保存" ,将部门信息保存到数据库。原创 2024-09-02 16:32:19 · 933 阅读 · 0 评论 -
Bean管理
默认情况下,springboot项目在启动的时候会自动创建IOC容器(也称之为Spring容器),并且在启动的过程中会自动的将bean对象都创建好,存放在IOC容器当中。上述所说的 【Spring项目启动时,会把其中的bean都创建好】还会受到作用域及延迟初始化影响,这里主要针对于默认的单例非延迟加载的bean而言。(默认情况下,IOC中的bean对象是单例)那么能不能将bean对象设置为非单例的(每次获取的bean都是一个新对象)?知道了bean的5种作用域了,我们要怎么去设置一个bean的作用域呢?原创 2024-08-29 11:23:41 · 959 阅读 · 0 评论 -
Mybatis的XML配置文件
在员工管理的页面中,当我们进行更新数据时,会点击 “编辑” 按钮,然后此时会发送一个请求到服务端,会根据Id查询该员工信息,并将员工数据回显在页面上。在Mybatis中提供了很多实现动态SQL的标签,我们学习Mybatis中的动态SQL就是掌握这些动态SQL标签。在页面原型中,列表上方的条件是动态的,是可以不传递的,也可以只传递其中的1个或者2个或者全部。在员工管理的列表页面中,我们需要根据条件查询员工信息,查询条件包括:姓名、性别、入职时间。:动态的在SQL语句中插入set关键字,并会删掉额外的逗号。原创 2024-08-27 17:16:45 · 1354 阅读 · 0 评论 -
Mybatis入门
之前在图形化客户端工具中编写SQL代码,发送给数据库执行,返回查询结果,现在使用Mybatis操作数据库,就是在Mybatis中编写SQL查询代码,发送给数据库执行,数据库执行后返回结果。在创建出来的springboot工程中,在引导类所在包下,在创建一个包 mapper。客户端执行SQL语句:要先创建一个新的连接对象,然后执行SQL语句,SQL语句执行后又需要关闭连接对象从而释放资源,每次执行SQL时都需要创建连接、销毁链接,这种频繁的重复创建销毁的过程是比较耗费计算机的性能。原创 2024-08-21 20:25:35 · 1039 阅读 · 0 评论 -
springBootWeb请求响应
今天来复习一下springbootweb请求响应。基于springBootWeb的入门程序,我们向浏览器发起请求/hello后,给浏览器返回了字符串"hello world~~"。让我们来捋一下请求响应的流程:浏览器发送请求,后端web服务器接受请求(内置的Tomact)后返回数据。在开发web程序时呢,定义了一个控制器类Controller,请求会被部署在Tomcat中的Controller接收,然后Controller再给浏览器一个响应,响应一个字符串 “Hello World”。 而在请求响应的过程中原创 2024-08-06 11:14:06 · 973 阅读 · 0 评论 -
Java中的三层架构
需求:加载并解析xml文件中的数据,完成数据处理(在这个案例中是把性别对应的1,2改成响应的男,女或 男士,女士,职位也是进行类似的操作),并在页面展示,获取员工数据,返回统一响应结果,在页面渲染展示。入门程序举例:在EmpController运行的时候,就要到IOC容器当中去查找EmpService这个类型的对象,而我们的IOC容器中刚好有一个EmpService这个类型的对象,所以就找到了这个类型的对象完成注入操作。在@Qualifier的value属性中,指定注入的bean的名称。原创 2024-07-11 16:40:25 · 612 阅读 · 1 评论 -
LeetCode907 子数组的最小值之和
【代码】LeetCode907 子数组的最小值之和。原创 2023-11-27 16:42:10 · 136 阅读 · 0 评论 -
Leetcode2342
给你一个下标从 0 开始的数组 nums ,数组中的元素都是正整数。请你选出两个下标 i 和 j(i!= j),且 nums[i] 的数位和与nums[j]的数位和相等。请你找出所有满足条件的下标 i 和 j ,找出并返回 nums[i] + nums[j] 可以得到的最大值。如果不存在两个数位和相同的数,返回 −1。思路:对于这种一左一右两个数的题目,通用套路是【维护左,枚举右】,用哈希表或者数组mx[s]来记录数位和s对应的最大的nums[i],用mx[s]+nums[j] 更新答案的最大值。原创 2023-11-20 16:49:52 · 31 阅读 · 0 评论