- 博客(88)
- 收藏
- 关注
原创 ssm框架之ssm整合实现登录功能
ssm框架分别是 spring springmvc 和mybatis的简称。是现在开发javaweb项目的一种常见的技术组合方式。下面就开始ssm框架的整合通过idea创建一个maven的web项目:打开pom.xml文件,添加如下依赖,最终效果如下:依赖添加完后,刷新maven依赖,让所有依赖都加载进来,如果刷新不过来,执行clean install首先整体看一下项目结构:第一步,先修改web.xml文件,最终内容如下:第二部,在同级目录下,创建spring-servlet.xml文件,内容
2025-04-02 08:52:08
993
原创 ssm框架之springMVC框架
springMVC是一种基于java实现的轻量级web框架,它实现了mvc模型。跟之前struts类似。优点:1、使用简单,开发便捷2、比较灵活,具有很强的扩展性spirngMVC实现的mvc模型如下:springMVC核心处理流程:Springmvc的执行过程就是基于一系列的组件来完成的。DispatcherServlet:前端控制器, 是整体流程控制的中心,由其调用其它组件处理用户的请求, 有效的降低了组件间的耦合性。
2025-03-31 22:47:38
919
原创 ssm框架之Spring框架之AOP
AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构。:在不改动原始设计的基础上为其进行功能增强。简单的说就是在不改变方法源代码的基础上对方法进行功能增强。首先,开启AOP,在applicationContext.xml中添加如下配置。AOP有很多种增强类型,分别为,前置增强,后置增强,环绕增强和异常增强。以上就是基于注解的AOP,并且展示了所有增强类型的使用方式。最后,在测试类中测试就行了。:无入侵式/无侵入式。
2025-03-31 10:33:08
376
原创 ssm框架之mybatis框架动态SQL
如下示例,当使用where进行条件查询时候,可以用where标签,它可以把最前面的and去掉。如下示例,当有一个入参为null或者空的时候的时候,不参与计算,这种情况就应该使用if标签。mybatis可以通过各种各样的标签在sql映射文件中实现如下功能。智能忽略标签前后多余的and、or或逗号等字符。使用trim标签替换前面示例中的where标签。如下所示,类似于 java中的if else。进行批量操作的时候,使用foreach标签。使用trim标签替换前面示例中的set标签。实现示例中相同的功能。
2025-03-18 23:12:40
359
原创 ssm框架之mybatis框架SQL映射文件详解
MyBatis真正的特色在于SQL映射语句,功能强大,使用简单。Select元素有很多属性,可以详细配置每一条查询语句。resultMap描述如何将结果集映射到java对象。namespace属性,区别不同的mapper。接口中的方法与映射文件中SQL语句id一一对应。Select是MyBatis中最常用的元素之一。namespace和子元素的id联合保证唯一。namespace的命名必须跟某个接口同名。自动映射的前提:属性名与字段名一致。SQL映射文件的几个顶级元素。
2025-03-18 22:58:31
297
原创 ssm框架之mybatis框架讲解
MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github官网:https://mybatis.org/mybatis-3/zh/index.html负责将数据到保存到数据库的那一层代码。以后开发我们会将操作数据库的Java代码作为持久层。
2025-03-18 22:48:25
954
原创 ssm框架之mybatis框架搭建
/ 读取配置文件mybatis-config.xml InputStream config = Resources . getResourceAsStream("mybatis-config.xml");// 根据配置文件构建SqlSessionFactory SqlSessionFactory ssf = new SqlSessionFactoryBuilder() . build(config);
2025-03-18 22:22:52
310
原创 JavaWeb-jsp技术
MVC模式设计程序中,JSP只是用来表示视图,视图的任务就是显示响应,而不是在JSP中做任何关于程序控制和业务逻辑的事情。所以在JSP页面中应该尽可能少的、或者是完全不出现Java代码。EL是JSP 2.0增加的技术规范,其全称是表达式语言(Expression Language)。EL语言的灵感来自于ECMAScript和XPath表达式语言。
2025-03-10 20:12:09
954
原创 JavaWeb-jdbc技术
JDBC是一种可用于执行SQL语句的Java API(ApplicationProgrammingInterface应用程序设计接口),它由一些Java语言编写的类和接口组成。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。
2025-03-10 18:26:10
309
原创 JavaWeb-servlet6中过滤器和监听器
servlet监听器也叫web监听器。是servlet中一种特殊类。能够帮助开发者监听web应用中的特定事件。比如ServletContext,ServletSession,ServletRequest的创建和销毁,变量的创建和销毁等。监听器常用的用途:统计在线人数,利用HttpSessionListener加载初始化信息:利用ServletContextListener统计网站访问量:利用ServletRequestListener。
2025-03-09 22:19:46
647
原创 JavaWeb-servlet6中重定向、转发、cookie、session、文件上传和下载
首次使用session时,服务器端要创建session,session是保存在服务器端,数据是保存在session中,sessionId通过Cookie发送给客户端,且只在浏览器本次会话中存在,也就是说如果用户关闭了浏览器,那么这个Cookie就丢失。在上面的例子中,在程序代码中并没有使用setMaxAge方法设置cookie的有效期,所以当关闭浏览器之后,cookie就失效了,要想在关闭了浏览器之后,cookie依然有效,那么在创建cookie时,就要为cookie设置一个有效期。
2025-03-09 20:02:16
1011
原创 JavaWeb-servlet6中request和response的使用
HttpServletRequest 继承自 ServletRequest。客户端浏览器发出的请求被封装成为一个 HttpServletRequest对象。对象包含了客户端请求信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。获得客户机请求头使用 getParameter() 和 getParameterValues() 接收表单参数request中文参数乱码以POST方式提交表单中文参数的乱码问题客户端是以UTF-8编码传输数据到服务器端的,
2025-03-09 18:17:07
520
原创 JavaWeb-mysql8版本安装
地址:https://www.mysql.com/cn/downloads/选择:MySQL Community (GPL) downloads选择:MySQL Community Server选择:选择:
2025-03-08 20:56:41
310
原创 JavaWeb-idea配置smart tomcat
在这里,配置完毕后,点apply,之后点ok就行了。在插件市场搜索smart tomcat。下图项目就启动成功了。此时已经配置好tomcat了。点击安装,我已经安装成功。点击这里,选择edit。
2025-03-03 23:08:57
270
原创 JavaWeb-社区版Idea安装配置
如下图所示,maven使用idea自带的就行,如果有版本要求,可以自己下载maven,配置好maven的环境变量后,在这里选择你自己的maven。进入引导页,把可以配置的东西都先配置上,这个配置是全局的,省的之后,每次打开新项目都要再次配置。设置好编码后,设置java的jdk版本,要跟你装的jdk版本一致,当然你可以装多个版本的jdk。继续点击红框部分,开始设置全局编码。配置内容如下,注意一点,本地仓库地址添加自己的地址,这里填错会出问题。maven插件错误,看maven配置是否正确,改正确后,
2025-03-03 23:03:11
505
原创 JavaWeb-jdk17安装
地址:https://www.oracle.com/java/technologies/downloads/#jdk17-windows。右键点击我的电脑>属性>高级系统设置>环境变量。在系统变量Path变量中添加。
2025-03-03 22:51:43
158
原创 Java面试题2025-消息队列
也就是说,一旦我们获得消息的数量够batch.size的数量了,他将会立即发送而不顾这项设置,然而如果我们获得消息字节数比batch.size设置要小的多,我们需要“linger”特定的时间以获取更多的消息。这个设置默认为0,即没有延迟。虚拟消息服务器,vhost,本质上就是一个mini版的mq服务器,有自己的队列、交换器和绑定,最重要的,自己的权限机制。但是其实这个调用是不需要直接同步调用接口的,如果用MQ给他异步化解耦,也是可以的,你就需要去考虑在你的项目里,是不是可以运用这个MQ去进行系统的解耦。
2025-02-09 11:34:53
794
原创 Java面试题2025-redis
这种方式对 hash 层代码要求比较高,考虑部分包括,节点失效后的替代算法方案,数据震荡后的自动脚本恢复,实例的监控,等等。事务是Redis实现在服务器端的行为,用户执行MULTI命令时,服务器会将对应这个用户的客户端对象设置为一个特殊的状态,在这个状态下后续用户执行的查询命令不会被真的执行,而是被服务器缓存起来,直到用户执行EXEC命令为止,服务器会将这个用户对应的客户端对象中缓存的命令按照提交的顺序依次执行。而实际业务场景下,更多的是为了提升读性能,带来更好的性能,带来更高的并发量。
2025-02-07 22:37:06
568
原创 Java面试题2025-分布式相关问题
两阶段提交2PC是分布式事务中最强大的事务类型之一,第一阶段询问各个事务数据源是否准备好,投票阶段。第二阶段才真正将数据提交给事务数据源。为了保证该事务可以满足ACID,就要引入一个协调者(Cooradinator)。其他的节点被称为参与者协调者负责调度参与者的行为,并最终决定这些参与者是否要把事务进行提交。处理流程如下:阶段一a) 协调者向所有参与者发送事务内容,询问是否可以提交事务,并等待答复。b) 各参与者执行事务操作,将 undo 和 redo 信息记入事务日志中(但不提交事务)。
2025-02-07 22:31:59
1165
原创 Java面试题2025-SpringBoot
1、 spring-boot-starter-web :提供web开发需要servlet与jsp支持 + 内嵌的 Tomcat。2、 spring-boot-starter-data-jpa :提供 Spring JPA + Hibernate。3、 spring-boot-starter-data-Redis :提供 Redis。4、 mybatis-spring-boot-starter :第三方的mybatis集成starter。
2025-02-04 21:12:09
877
原创 Java面试题2025-并发编程高级(JUC并发工具及异步编程)
CountDownLatch就是JUC包下的一个工具,整个工具最核心的功能就是计数器。如果有三个业务需要并行处理,并且需要知道三个业务全部都处理完毕了。需要一个并发安全的计数器来操作。CountDownLatch就可以实现。给CountDownLatch设置一个数值。可以设置3。每个业务处理完毕之后,执行一次countDown方法,指定的3每次在执行countDown方法时,对3进行-1。主线程可以在业务处理时,执行await,主线程会阻塞等待任务处理完毕。
2025-02-03 20:04:30
1136
原创 Java面试题2025-并发编程进阶(线程池和并发容器类)
为什么要使用线程池在开发中,为了提升效率的操作,我们需要将一些业务采用多线程的方式去执行。比如有一个比较大的任务,可以将任务分成几块,分别交给几个线程去执行,最终做一个汇总就可以了。比如做业务操作时,需要发送短信或者是发送邮件,这种操作也可以基于异步的方式完成,这种异步的方式,其实就是再构建一个线程去执行。但是,如果每次异步操作或者多线程操作都需要新创建一个线程,使用完毕后,线程再被销毁,这样的话,对系统造成一些额外的开销。在处理过程中到底由多线程处理了多少个任务,以及每个线程的开销无法统计和管理。所以咱们
2025-01-29 08:09:43
954
原创 Java面试题2025-并发编程基础(多线程、锁、阻塞队列)
什么是进程?进程是指运行中的程序。 比如我们使用钉钉,浏览器,需要启动这个程序,操作系统会给这个程序分配一定的资源(占用内存资源)。什么线程?线程是CPU调度的基本单位,每个线程执行的都是某一个进程的代码的某个片段。举个栗子:房子与人比如现在有一个100平的房子,这个方式可以看做是一个进程房子里有人,人就可以看做成一个线程。人在房子中做一个事情,比如吃饭,学习,睡觉。这个就好像线程在执行某个功能的代码。所谓进程就是线程的容器,需要线程利用进程中的一些资源,处理一个代码、指令。最终实现进程锁预期的结果。进程和
2025-01-28 14:07:49
1228
原创 Java面试题2025-设计模式
1)静态代理这种代理方式需要代理对象和目标对象实现一样的接口。优点:可以在不修改目标对象的前提下扩展目标对象的功能。缺点:冗余。由于代理对象要实现与目标对象一致的接口,会产生过多的代理类。不易维护。一旦接口增加方法,目标对象与代理对象都要进行修改。2)JDK动态代理动态代理利用了JDK API,动态地在内存中构建代理对象,从而实现对目标对象的代理功能.动态代理又被称为JDK代理或接口代理.静态代理在编译时就已经实现了,编译完成后代理类是一个实际的class文件。
2025-01-26 20:27:54
1221
原创 Java面试题2025-Spring
先介绍Spring是怎么来的,发展中有哪些核心的节点,当前的最新版本是什么等通过上图可以比较清晰的看到Spring的各个时间版本对应的时间节点了。也就是Spring从之前单纯的xml的配置方式,到现在的完全基于注解的编程方式发展。@Controller @Service @RestController @RequestBody,@Indexd @Import等@Indexd提升 @ComponentScan的效率。
2025-01-24 20:34:14
816
原创 Java面试题2025-mybatis
1。缓存的作用缓存的作用:减低数据源的访问频率。从而提高数据源的处理能力。或者提高服务器的响应速度2。MyBatis中的缓存设计MyBatis中的缓存的架构设计:装饰器模式MyBatis中的一级缓存和二级缓存一级缓存:session级别二级缓存:SqlSessionFactory级别缓存的设计通过装饰模式实现缓存功能扩展缓存的应用一级缓存和二级缓存一级缓存和二级缓存的顺序问题:先二级缓存再一级缓存为什么会先走二级缓存再走一级缓存?
2025-01-23 15:27:16
749
原创 When allowCredentials is true, allowedOrigins cannot contain the special value “*” since that cannot
跨域配置遇到这种情况就是配置的有问题,不正确。修改完毕就可以解决这个问题。
2024-06-09 11:50:13
457
原创 Spring boot实现基于注解的aop面向切面编程
经过测试,校验参数功能正常。可以看到,spring boot的aop功能使用起来还是相当简单的。
2024-06-04 22:44:58
1135
2
原创 Spring boot 集成Redis
Spring boot开发项目时,难免会需要redis的加持,比如登录信息要存redis、一些热点数据的缓存、使用redis实现分布式锁,使用redis过滤前端数据实现幂等性等等。
2024-06-04 19:46:17
1047
原创 Spring boot 集成mybatis-plus
mybatis-plus是对mybatis的功能增强,并且只做增强,不做改动,也就是说,你完全可以把mybatis-plus当作mybatis来做
2024-06-03 15:24:46
736
原创 Spring boot 集成thymeleaf
pring boot集成通义千问已经完成,现在需要做一个简单的页面展示,作为一个八年没有摸过前端的后端开发人员,不得不又拿起了html和thymeleaf
2024-05-31 22:05:04
838
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人