- 博客(226)
- 问答 (2)
- 收藏
- 关注
原创 Spring 的依赖注入
1. 依赖注入依赖注入实现了控制反转的思想:依赖注入:依赖注入常见的实现方式包括两种:**准备工作:通过 maven 导入对应 spring6 的相关jar **1.1 构造注入所谓的构造注入:核心就是:调用了对应的构造方法,进行一个类/对象的属性赋值。既然要调用构造方法,进行一个属性的赋值的话,那么我们的对应属性的赋值的,构造方法必须存在才行。构造注入:是在对象创建的时刻进行注入的。重点:构造注入的使用的标签是:1.1.1 通过参数名进行构造注入格式:spring.xml运行测试:测试
2023-07-19 12:27:25 392
原创 Spring6 初始
/// 初始化Spring容器上下文(解析beans.xml文件,创建所有的bean对象) ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml" , "spring.xml");// 根据id获取bean对象 Object userBean = applicationContext . getBean("userBean");} }
2023-07-19 11:26:38 371
转载 Maven 工程之间的继承
我们可以通过父工程当中声明自定义属性:真正实现“一处修改,处处生效”。就是将父工程的当的各个版本信息配置为一个变量:使用:在标签当中,配置自定义标签。自定义的标签,没有特别的要求:不要使用中文,尽量与你配置的哪个 jar 有所关联,做到见明知其是依赖的是哪个 jar包的版本信息。如下:自定义标签,维护Spring版本数据-- 通过自定义属性,统一指定Spring的版本 -->-- 自定义标签,维护Spring版本数据 -->使用到该版本信息的的地方使用${}真正实现“一处修改,处处生效”。
2023-05-24 11:59:04 2186
原创 ThreadLocal 的原理讲述 + 基于ThreadLocal实现MVC中的M层的事务控制
ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。
2023-05-17 16:22:58 616
原创 MVC 三层架构案例详细讲解
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。[1-2]模型-视图-控制器(MVC)是[Xerox PARC](https://baike.baidu.com/item/Xerox PARC/10693263?fromModule=lemma_inlink)在二十世纪八十年代为编程语言。
2023-05-17 16:03:54 4073
原创 Listener监听器,实现一个显示在线用户人数
Listener 监听器是Servlet规范中的一员。就像Filter一样。Filter也是Servlet规范中的一员。在Servlet中,所有的监听器接口都是以Listener结尾。监听器实际上是Servlet规范留给我们javaweb程序员的特殊时机。特殊的时刻如果想执行这段代码,你需要想到使用对应的监听器。简单的说就是,当你的程序执行过程中满足的了/触发了某个事件,则该Listener 监听器中的方法就会被调用,并执行。比如:我们的Java中的静态代码块。
2023-05-09 11:28:17 957
原创 JavaWeb 中 Filter过滤器
在一个比较复杂的Web应用程序中,通常都有很多URL映射,对应的,也会有多个Servlet来处理URL。IndexServlet:浏览帖子;SignInServlet:登录;SignOutServlet:登出;ProfileServlet:修改用户资料;PostServlet:发帖;ReplyServlet:回复。其中,ProfileServlet、PostServlet和ReplyServlet都需要用户登录后才能操作,否则,应当直接跳转到登录页面。
2023-05-09 10:38:36 322
原创 B/S 结构系统的 缓存机制(Cookie) 以及基于 cookie 机制实现 oa 十天免登录的功能
Cookie 并不是它的原意“甜饼”的意思, 而是一个保存在客户机中的简单的文本文件, 这个文件与特定的Web文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可供该文档使用。由于“Cookie”具有可以保存在客户机上的神奇特性, 因此它可以帮助我们实现记录用户个人信息的功能, 而这一切都不必使用复杂的CGI等程序。举例来说, 一个 Web 站点可能会为每一个访问者产生一个唯一的ID, 然后以 Cookie 文件的形式保存在每个用户的机器上。
2023-04-29 23:16:18 867 1
原创 JSP 的本质原理解析:“编写的时候是JSP,心里想解读的是 java 源码“
1. JSP 概述JSP(全称JavaServer Pages),sun公司主导的一种动态网页技术,JSP在服务端运行,可以响应客户端的请求,根据请求内容动态的生成HTML、XML或其他格式文档的Web网页然后返回请求者。在JSP页面可以嵌入Java代码,JSP文件在运行时会被其编译器转换成更原始的Servlet代码,然后再由Java编译器来编译成能快速执行的二进制机器码。2.特点:3.JSP页面组成:在 HTML 页面文件中加入 Java 程序段和 JSP 标签,即可构成一个 JSP 页文件,JSP
2023-04-29 22:34:38 655
原创 B/S结构系统的会话机制(session)
在Web应用程序中,我们经常要跟踪用户身份。当一个用户登录成功后,如果他继续访问其他页面,Web程序如何才能识别出该用户身份?因为HTTP协议是一个无状态协议,即Web应用程序无法区分收到的两个HTTP请求是否是同一个浏览器发出的。为了跟踪用户状态,服务器可以向浏览器分配一个唯一ID,并以Cookie的形式发送到浏览器,浏览器在后续访问时总是附带此Cookie,这样,服务器就可以识别用户身份。我们把这种基于唯一ID识别用户身份的机制称为Session。
2023-04-29 21:54:59 1031
原创 Servlet注解的使用,简化配置 以及,使用模板方法设计模式优化oa项目
WebServlet 注解,提高开发效率高,不需要编写大量的配置信息。直接在 java 类上使用注解进行标注。web.xml文件体积变小了。@WebServlet 注解当中的value和的作用都是一样的,表示 映射的url路径,注意: 设置赋值的url要以开始。不要忘记了,不要漏掉了。@WebServlet 常用的属性的作用和使用。模板方法的核心思想:父类定义骨架,子类实现某些细节。也可以一个方法为骨架,多个方法实现某些细节。注解可以使用模糊查询。
2023-04-10 17:26:11 751
原创 使用“纯”Servlet做一个单表的CRUD操作
- 查看部门列表--> < servlet > < servlet-name > list < servlet-class > com.RainbowSea.servlet.DeptListServlet < servlet-mapping > < servlet-name > list
2023-04-10 17:13:09 446
原创 JavaWeb 中 “转发”与 “重定向”的区别
转发:指内部转发。当一个Servlet处理请求的时候,它可以决定自己不继续处理,而是转发给另一个Servlet处理。转发是由WEB服务器来控制的。A资源跳转到B资源,这个跳转动作是Tomcat服务器内部完成的而我们前端也就是浏览器端是不知道我们服务器端对这个请求内部转发处理了多少次。并且无论我们服务器内部转发了多少次,前端浏览器都仅仅只会认为仅仅只转发了一次,也就是仅仅发送了一次请求。因为我们服务器端虽然进行了转发但是,浏览器的地址栏上的请求路径的地址是没有改变的(还是初始的请求路径)编写的转发路径是。
2023-04-10 16:51:46 441
原创 Sevlet规范:HttpServlet类 和 HttpServletRequest接口 源码解析
HTTP协议:是W3C制定的一种超文本传输协议。(通信协议:发送消息的模板提前被制定好。万维网联盟组织等规范都是W3C制定的。万维网之父:蒂姆·伯纳斯·李什么是超文本?超文本说的就是:不是普通文本,比如流媒体:声音、视频、图片等。HTTP协议支持:不但可以传送普通字符串,同样支持传递声音、视频、图片等流媒体信息。这种协议游走在B (浏览器)和S (服务器)之间。B向S发数据要遵循HTTP协议。S向B发数据同样需要遵循HTTP协议。这样B和S才能解耦合。什么是解耦合?
2023-04-04 09:10:59 444
原创 关于Web的欢迎页面的开发设置
对于一个webapp来说,我们是可以设置它的欢迎页面的。设置了欢迎页面之后,当你访问这个webapp的时候,或者访问这个web站点的时候,没有指定任何“资源路径”,这个时候会默认访问你的欢迎页面。我们一般的访问方式是:在浏览器地址栏上直接输入该我们项目当中配置的资源信息的路径:这种方式是指定了要访问的就是start.html资源比如:http://127.0.0.1:8080/servlet08/start.html。如果我们访问的方式直接就是一个项目配置的路径,没有指定具体的资源路径。
2023-03-29 16:06:55 1344
原创 23种设计模式之 : 模板方法设计模式
设计模式,即,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。设计模式这个术语是上个世纪90年代由Erich Gamma、Richard Helm、Raplh Johnson和Jonhn Vlissides四个人总结提炼出来的,并且写了一本的书。这四人也被称为四人帮(GoF)。为什么要使用设计模式?根本原因还是软件开发要实现可维护、可扩展,就必须尽量复用代码,并且降低代码的耦合度。设计模式主要是基于OOP编程。
2023-03-29 11:49:45 458
原创 解读 Servlet 源码:GenericServlet,ServletConfig,ServletContext
/ init 被翻译为初始化 // init 方法只会被执行一次,基本上和 Servlet构造器的调用同时执行,在Servlet 对象第一次被创建只会执行 // init 方法通常是完成初始化操作的。");
2023-03-20 16:08:27 352
原创 javaEE Web(Tomcat)深度理解 和 Servlet的本质
角色: 浏览器开发团体,Web Serve服务器开发团队,webapps 开发团队,DB数据库开发团队。浏览器页面 与 web Serve 服务器之间的协议是 :HTTP 超文本传输协议web Server 服务器与 webapps 之间的协议是:Java EE 的 中 规范,比如 Servlet 等等等webapps 与 DB 数据库之间的协议是:JDBCServle 规范包括什么呢?规范了哪些接口,规范了哪些类。
2023-03-15 12:03:58 534
原创 IDEA: 如何导入项目模块 以及 将 Java程序打包 JAR 详细步骤
IDEA: 如何导入项目模块 以及 将 Java程序打包 JAR 详细步骤
2023-03-13 16:11:14 4077
原创 函数编程:强大的 Stream API
Java8中有两大最为重要的改变。第一个便是Lambda表达式,想要进一步了解的大家可以移步至 🔜🔜🔜函数式编程:Lambda 表达式_ChinaRainbowSea的博客-CSDN博客;Stream API了。Stream API是在包下的,Stream 是把真正的函数式编程风格引入到Java中,这时目前为止对java类库最好的补充了,因为Stream API可以极大的提供 Java程序员的生产力,让程序员写出更高效率,干净,简洁的代码。Stream。
2023-03-06 17:12:29 347
原创 函数式编程:Lambda 表达式
相信大家一定在相关的框架的源码中看到不少 使用了lambda表达式的内容吧。如果我们想要阅读框架的源码上的逻辑,则必须了解,明白Lambda表达式的格式,语法了。表达式是Java8的新特性。Java lambda 表达式是 Java进入函数式编程的第一步。因此,表达式时可以单独创建的,而无需属于任何类。这一点很重要。Java Lambda 表达式可以像对象一样传递并按需执行。表达式通常用于实现 简单的事件监听/回调,或在API 函数式编程时使用。Lambda是一个匿名函数,我们可以把Lambda。
2023-03-06 16:49:30 466
原创 Java 文本检索神器 “正则表达式”
我相信,作为一名程序员或者准程序员,你肯定是知道正则表达式的。作为计算机领域最伟大的发明之一,正则表达式简单、强大,它可以极大地提高我们工作中的文本处理效率。现在,各大操作系统、编程语言、文本编辑器都已经支持正则表达式,甚至我还和极客时间的编辑开玩笑说,他们也应该好好学学正则这门手艺。正则,就是正则表达式,英文是 Regular Expression,简称 RE。 顾名思义,正则其实就是一种 描述文本内容组成规律的表示方式。在编程语言中,正则常常用来简化文本处理的逻辑。在 Linux 命令中,它也可以帮助我
2023-02-28 09:08:16 630
原创 Java “框架 = 注解 + 反射 + 设计模式” 之 反射详解
反射的作用:通过 Java语言中的反射机制可以操作字节码文件,优点类似于黑客。(可以读和修改字节码文件),可以调用私有的构造器,set/get 属性,调用私有的方法。获取 Class 类实例的三种方式,重点掌握方式三:该方式会自动调用该类中的静态代码块,因为静态代码块,而不会实例化类的,可以应用于 JDBC 加载数据库驱动,执行其中的静态代码块,而不实例化。类加载的过程。类加载器的作用: 负责将对应类生成的.class文件(可能在磁盘上,也可能在网络上)加载到内存中,并为之在堆区中生成对应的。
2023-02-23 14:27:36 372
原创 Java “框架 = 注解 + 反射 + 设计模式” 之 注解详解
Annotaion注解其实也是一种引用数据类型,编译之后也是生成xxx.class字节码文件的。定义新的Annotation 注解类型使用@interface关键字自定义注解自动实现了接口} // [ 修饰列表 ] @interface 注解名 /(注解类名) {使用IDEA创建一个 注解类型: 鼠标右键 ——> new 一个选择 :如下查看该 我们该自定义的注解的 UML 图:可以清楚的看到该 注解类型是自动继承了该接口的但是事实上却是自动实现了接口。在Java 8。
2023-02-22 11:30:17 2831 2
原创 Java 优化:读取配置文件 “万能方式“ 跨平台,动态获取文件的绝对路径
原始的方式:写相对路径的话,无法跨编译器;因为不同的编译器默认相对的路径是不同的。写绝对路径的话,无法跨平台,因为不同操作系统的文件规则是不一样的,比如 Windows系统中的绝对路径是带盘符(D盘,C盘),Linux 系统中的文件规则是不带盘符的。当在J Windows 操作系统中编写的绝对路径的Java程序,移植到到 Linux 操作系统中就会报错。静态获取的绝对路径 和 动态获取绝对路径。上述的三种优化方式,都是动态获取绝对路径的,但是都是基于类路径下。
2023-02-22 10:46:19 718 2
原创 “万字“ Java I/O流讲解
类:文件和文件目录路径的抽象表示形式,与平台无关。File 能新建,删除,重命名文件和目录,但File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用 输入/输出 流。想要在Java 程序中表示一个真实存在的文件或目录,那么必须有一个 File 对象,但是 Java 程序中的一个 File 对象,可能没有一个真实存在的文件或目录。File 对象可以作为参数传递给流的构造器。**绝对路径:**是一个固定的路径,从盘符开始。**相对路径:**是相对于某个位置开始。IDEA中默认相对路径是从项目
2023-02-11 17:39:57 641
空空如也
朋友们,可不可以解我疑惑
2021-12-07
各位朋友,可否解我疑惑,
2021-12-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人