自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(181)
  • 资源 (1)
  • 收藏
  • 关注

原创 SSM整合

SpringMVC是一个表述层框架,可以处理浏览器发送的服务器中的请求,并且将一些数据响应到浏览器Mybatis是一个持久层框架,帮助我们来连接数据库,访问数据库,操作数据库中的数据Spring是一个整合型框架,可以使用他的两个核心,叫做IOC和AOP,通过IOC来管理对象,比如Mybatis里面操作数据库的sqlsession对象,可以直接交给spring来进行管理,通过Mybatis操作数据库的过程中,要想实现事务功能,我们也可以使用Spring中AOP的一个重要应用,叫做声明式事务来实现。

2024-04-19 04:30:00 1705

原创 SpringMVC(十二)SpringMVC执行流程

前端控制器,不需要工程师开发,由框架提供作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求:处理器映射器,不需要工程师开发,由框架提供作用:根据请求的url、method等信息查找Handler,即控制器方法:控制器,需要工程师开发作用:在DispatcherServlet的控制下Handler对具体的用户请求进行处理:处理器适配器,不需要工程师开发,由框架提供作用:通过HandlerAdapter对处理器(控制器方法)进行执行:视图解析器,不需要工程师开发,由框架提供。

2024-02-22 04:30:00 1579

原创 SpringMVC(十一)异常处理器和注解配置SpringMVC

SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver我们进行查看接口:该方法的返回值为ModelAndView,为SpringMVC里面执行完控制器方法之后统一的一个对象,Model为往请求域共享数据,View为实现页面跳转。向域对象中共享新的数据。HandlerExceptionResolver接口的实现类有:DefaultHandleExceptionResolver和SimpleMappingExceptionResolver。

2024-02-01 04:30:00 1722

原创 SpringMVC(十)拦截器

SpringMVC中的拦截器用于拦截控制器方法的执行SpringMVC中的拦截器需要实现HandlerinterceptorSpringMVC中的拦截器必须在SpringMVC中的配置文件中进行配置。

2024-01-29 04:30:00 1723

原创 SpringMVC(九)文件上传和下载

ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文使用ResponseEntity实现下载文件的功能我们进行下载该文件:文件资源在本章资源可以找到。ctrl+p进行查看:此时运行之后出现如下所示:此时的视图没有找到,控制器方法如果没有设置返回值的话,会把我们当前要处理的请求地址作为逻辑视图,然后进行返回。

2024-01-22 04:30:00 933

原创 SpringMVC(八)处理AJAX请求

一、处理AJAX之准备工作:首先我们创建一个新的工程:我们将pom.xml复制过来:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.ap

2024-01-21 06:00:00 936

原创 SpringMVC(七)RESTful案例

和传统CRUD一样,实现对员工信息的增删改查我们所在的环境为。

2024-01-17 04:30:00 1464

原创 SpringMVC(六)RESTful

REST:Representational State Transfer,表现层资源状态转移(1)资源资源是一种看待服务器的方式,即,将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的概念,所以它不仅仅能代表服务器文件系统中的一个文件、数据库中的一张表等等具体的东西,可以将资源设计的要多抽象有多抽象,只要想象力允许而且客户端应用开发者能够理解。与面向对象设计类似,资源是以名词为核心来组织的,首先关注的是名词,一个资源可以由一个或多个URI来标识。

2024-01-14 04:30:00 1770

原创 AJAX(三)跨域

同源策略最早由Netscape公司提出,是浏览器的一种安全策略。同源:协议、域名、端口号必须完全相同。(同一个来源)违背同源策略就是跨域。AJAX发送请求时是默认要遵循同源策略的,不是同源策略,没法直接发AJAX。app.js:我们在网站中输入:http://127.0.0.1:9000/home:之后再点击点击获取用户数据的按钮:数据都是从9000端口来的,所以为同源。同源策略就是来源于同一个服务。如果点击按钮之后,显示状态码为304,此时删除缓存,重新刷新即可。

2024-01-06 04:30:00 829

原创 AJAX(二)jQuery

我们将该链接引入get.html文件里面:全局的 setTimeout()方法设置一个定时器,一旦定时器到期,就会执行一个函数或指定的代码片段。Get.htmleq() 方法将匹配元素集缩减值指定 index 上的一个。语法$.get(URLdatadatastatusxhrdataType。

2024-01-05 04:30:00 1746

原创 AJAX(一)

AJAX全称为 Asynchronous JavaScript And XML,就是异步的JS和XML。通过AJAX可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据AJAX不是新的编程语言(使用的js),而是一种将现有的标准组合在一起使用的新方式。页面出现新内容但是页面没有进行刷新即为异步。AJAX的示例如下所示:1.其中输入abcd而引起的相关的关键字并不是本地生成的,而是通过向服务器发送请求,数据从服务器返回回来的。2.

2024-01-03 04:00:00 1704

原创 阅读的路上

杀死一只知更鸟》哈珀·李著 李育超译。《你要去相信,没有到不了的明天》卢思。《所谓情商高 就是会说话》刘文华。《焦虑又怎样》弗兰奇丝卡·赛柏特。《稻盛和夫给年轻人的忠告》 德群。《货币战争3金融高边疆》宋鸿兵。《愿有人陪你颠沛流离》卢思浩。《了不起的盖茨比》菲茨杰拉德。《你的自律 给你自由》小椰子。《货币战争2金权天下》宋鸿兵。《货币战争4战国时代》宋鸿兵。《货币战争5山雨欲来》宋鸿兵。《富爸爸穷爸爸》罗伯特·清崎。《别输在不会表达上》刘文华。《白岩松的人生哲学》张笑恒。《巴黎圣母院》 雨果。

2023-12-12 21:45:00 76

原创 SpringMVC(五)SpringMVC的视图

SpringMVC中的视图是View接口,视图的作用渲染数据,将模型Model中的数据展示给用户SpringMVC视图的种类很多,默认有转发视图(InternalResourceView)和重定向视图(RedirectView)当工程引入jstl的依赖,转发视图会自动转换为JstlView若使用的视图技术为Thymeleaf,在SpringMVC的配置文件中配置了Thymeleaf的视图解析器,由此视图解析器解析之后所得到的是ThymeleafView。

2023-11-23 04:30:00 334

原创 SpringMVC(四)域对象共享数据

pageContext:表示的是jsp页面的范围HttpServletRequest:表示的是一次请求的范围HttpSession:表示的是一次会话的范围ServletContext:表示的是整个应用的范围。

2023-10-28 04:30:00 364

原创 SpringMVC(三)获取请求参数

SpringMVC封装的就是原生的servlet点击登录之后,即会跳转到成功界面。同时我们的控制台会进行输出:username:admin,password:123456。

2023-10-24 04:00:00 720 1

原创 SpringMVC(二)@RequestMapping注解

我们先新建一个Module。通过此处我们来进行导入web.xml:之后根据web.xml的配置文件,我们将该目录创建出来:且该目录下的文件为index.html。

2023-10-05 04:30:00 739 3

原创 SpringMVC(一)

SpringMVC是Spring的一个后续产品,是Spring的一个子项目SpringMVC是Spring为表述层开发提供的一整套完备的解决方案,在表述层框架历经Strust、WebWork、Strust2等诸多产品的历代更迭之后,目前业务普遍选择了SpringMVC作为JavaEE项目表述层开发的首选方案。三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台servlet。

2023-09-06 16:29:33 438

原创 Spring(九)声明式事务

我们只有·将他们放在同一事务里面,通过事务的代码去操作,如果有异常,则将整个事务都进行回滚,出现要么都成功要么都失败的情况。事务在执行过程中,有可能因为遇到某些问题,导致程序卡住,从而长时间占用数据库资源,而长时间占用资源,大概率是因为程序运行出现了问题,此时这个很可能出问题的程序应该被回滚,撤销它已做的操作,事务结束,把资源让出来,让其他正常程序可以执行。这样数据库就能够针对查询操作来进行优化。既然事务控制的代码有规律可循,代码的结构基本是确定的,所以框架就可以将固定模式的代码抽取出来,进行相关的封装。

2023-08-29 04:00:00 136

原创 Spring(八)基于xml的AOP实现

基于xml与基于注解的AOP本质上是非常相似的,都是需要封装横切关注点,封装到切面中,然后把横切关注点封装为一个方法,再把该方法设置为当前的一个通知,再通过切入点表达式定位到横切点就可以了,思路是非常相似的。

2023-08-08 04:30:00 211

原创 Spring(七)基于注解的AOP

*** 1.在切面中,需要通过指定的注解将方法标识为通知方法* @Before:前置通知,在目标对象方法执行之前执行* 2.切入点表达式:设置在标识通知的注解的value属性中,* execution(* com.rgf.spring.aop.*.*.*(..)) (aop包下面的任何一个包,任何一个类,中的任何一个方法都会加上我们当前的通知* 第一个*表示任意的访问修饰符和返回值类型* 第二个*表示类中任意的方法* ..表示任意的参数列表。

2023-07-20 04:30:00 158

原创 Spring(六)AOP简介

声明计算器接口Calculator,包含加减乘除的抽象方法1.2创建实现类我们发现该代码与核心代码混合起来了,在核心业务里面混进来一些非核心业务代码我们针对带日志功能的实现类,我们发现有如下缺陷:1.对核心业务功能有干扰,导致程序员在开发核心业务功能时分散了精力2.附加功能分散在各个业务功能方法中,不利于统一维护解决思路:解耦,我们需要把附加功能从业务功能代码中抽取出来1.2代理模式。

2023-07-06 04:00:00 76

原创 Spring(五)基于注解的自动装配

注解:和XML配置文件一样,注解本身并不能执行,注解本身仅仅只是做一个标记,具体的功能是框架检测到注解标记的位置,然后针对这个位置按照注解标记的功能来执行具体操作。本质上:所以一切的操作都是java代码来完成的,XML和注解只是告诉框架中的代码如何执行。扫描:Spring为了知道程序员在哪些地方标记了什么注解,就需要通过扫描的方式,来进行检测,然后根据注解进行后续操作。

2023-06-25 04:00:00 1005

原创 Spring(四)基于xml的自动装配

自动装配:根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类型属性赋值。首先我们来熟悉三层架构的创建过程:三层架构为controller层,service层,dao层。在service层里面创建serviceImpl,创建实现类,实现类要继承service层的接口。dao层里面的实现类要继承首先进行构建controller层:controller层进行编写方法,service层的实现类继承service层的接口,dao层的实现类继承dao层的接口。

2023-06-01 04:00:00 707

原创 Spring(三)对bean的详解

FactoryBean是Spring提供的一种整合第三方框架的常用机制,和普通的bean不同,配置一个FactoryBean类型的bean,在获取bean的时候得到的并不是class属性中配置的这个类的对象,而是getObject()方法的返回值,通过这种机制,Spring可以帮我们把复杂组件创建的详细过程和繁琐细节都屏蔽起来,只把最简洁的使用界面展示给我们。我们发现此时bean没有初始化,因为有多个对象,所以没有必要刚开始就进行bean初始化。bean对象初始化之前操作(由bean的后置处理器负责)

2023-05-31 13:07:23 633

原创 Spring(二)获取bean和依赖注入

我们运行之后如下所示:我们发现运行之后,如下所示:面对这种情况,我们要确保只有一个,即为单例的。若没有任何一个类型匹配的bean,此时抛出异常:NoSuchBeanDefinitionException若有多个类型匹配的bean,此时抛出异常:NoUniqueBeanDefinitionException3.根据bean的id和类型获取:获取bean,获取bean所需要的类型和id注意:当根据类型获取Bean时,要求ioc容器中指定类型的bean有且只能有一个。

2023-05-30 19:16:19 1558

原创 泛型(一)

泛型:标签(类型参数)所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实际的类型参数,也称为类型实参)。我们运行之后出现如下所示:我们了解到由于类型没有确定,导致出现错误。

2023-04-26 04:00:00 423 1

原创 集合(十四)LinkedHashMap详解

【代码】集合(十四)LinkedHashMap详解。

2023-04-24 04:00:00 148

原创 枚举类&注解

*** 一、枚举类的使用* 1.枚举类的理解:类的对象只有有限个,确定的,我们称此类为枚举类* 2.当需要定义一组常量时,强烈建议使用枚举类* 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式* 二、如何定义枚举类* 方式一:jdk5.0之前,自定义枚举类* 方式二:jdk5.0,可以使用enum关键字定义枚举类*///自定义枚举类//1.声明Season对象的属性:private final修饰//2.私有化类的构造器,并给对象属性赋值。

2023-04-17 04:30:00 216 1

原创 线程通信:生产者消费者例题

生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品,店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的产品,店员会叫生产者停一下,如果店中有空位放产品了再通知生产者继续生产;如果店中没有产品了,店员会告诉消费者等一下,如果店中有产品了再通知消费者来取走产品。通过本题,我们需要设置生产品这个类,设置店员这个属性,消费者为类,而产品为共享数据。生产者比消费者快时,消费者会漏掉一些数据没有取到。消费者比生产者快时,消费者会取相同的数据。

2023-04-14 04:30:00 65

原创 线程安全之卖票问题

我们进行编码如下所示:我们运行之后如下所示: 我们采用Runnable解决如下所示:运行之后如下所示: 我们发现以上方式会出现同一张票被多个窗口进行售卖,我们进行修改如下:同步代码块:我们利用同步代码块来进行修改如下所示:我们利用实现Runnable接口解决如下所示:运行之后如下所示: 我们利用Thread进行如下所示:我们运行之后如下所示:使用同步方法解决实现Runnable接口的代码如下:运行之后如下所示:2. 使用同步方法解决继承Thread的代码:

2023-04-12 08:00:00 64

原创 对象的封装

运行之后如下所示:我们程序设计追求“高内聚,低耦合”高内聚:类的内部数据操作细节自己完成,不允许外部干涉低耦合:仅对外暴露少量的方法用于使用。

2023-03-28 04:30:00 973

原创 常用类(五)System类

1.Date:精确到毫秒,代表特定的瞬间2.SimpleDateFormat:格式和解析日期的类SimpleDateFormat格式化和解析日期的具体类。它允许进行格式化(日期-->文本)、解析(文本->日期)和规范化我们查看类的关系继承图:我们查看他的方法,发现里面有很多方法,同时也有很多过时的方法:我们了解里面properties的相关:properties指的并不是我们的字段,而是如果我们的类里面有get和set的相关方法,就会把后面的名称自动当作一个properties。

2023-02-20 04:00:00 175

原创 常用类(四)Math类和Arrays类

Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数我们查看math类的常用方法:我们查看他的源码如下所示:我们查看他的类图:他的这些方法基本都是静态的:我们运行之后如下所示:我们了解到规律如下所示:获取一个a-b之间的一个随机整数。

2023-02-17 04:30:00 703

原创 常用类详解(三)StringBuilder

此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全的),该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。StringBuilder(单线程)和StringBuffer(多线程)均代表可变的字符序列,方法是一样的,所以使用和StringBuffer一样。(5)如果从效率来看,StringBuilder的效率最高。(2)String:不可变字符序列,效率低,但是复用率(常量池里面有的内容可以被多个对象使用)高。

2023-02-14 04:00:00 769

原创 常用类详解(二)StringBuffer

/4.因为StringBuffer字符内容是存在char[] value,所以在变化(增加(如果数据存储不下来,即进行双倍扩容,同时将数据拷贝过来,更改地址,即改变指向)或删除)时不用每次都更换地址(即不是每次都创建新的对象),所以效率高于String。(2)StringBuffer保存的是字符串变量,里面的值可以修改,每次StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率较高 //char[ ] value;我们会直接抛出空指针异常。

2023-02-13 04:00:00 2346

原创 常用类详解(一)包装类和String类详解

包装类的分类 (Wrapper)基本数据类型包装类booleanBooleancharCharacterdoubleDoubleintIntegerbyteByteshortShortfloatFloatlongLong后六个的父类都为Number。(1)我们查看Boolean的源码:我们进入类图如下所示:Boolean实现了Serializable和Comparable接口。

2023-02-08 04:00:00 474

原创 Java集合(八)Map接口

我们来查看Map接口:里面的k-v和set集合的不同之处在于:key仍然是一个对象,但是对于set来说value是一个常量,set里面的value放的是 静态性质的PRESENT。而map的value是自己传进去的。map接口是一个双列集合,set接口是一个单列集合。

2023-02-02 04:00:00 1496 3

原创 Java集合(七)LinkedHashSet

添加第一次时,直接将数组table扩容到16,存放的结点类型是LinkedHashMap$Entry,table是HashMap$Node内部类数组的这样子一个类型,但是他里面存放的真实的元素是LinkedHashMap$Entry这种类型,他们之间有继承或者实现关系,Entry继承或者实现了Node。(3)在添加一个元素时,先求hash值,在求索引,确定该元素在table的位置,然后将添加的元素加入到双向链表(如果已经存在,不添加【原则和hashset一样】)我们还可以进行查看head和tail。

2023-02-01 04:00:00 1700

原创 Java集合(六)Set接口和常用方法

(1)无序(添加和取出的顺序不一致),没有索引(2)不允许重复元素,所以最多包含一个null(3)JDK API中Set接口的实现类有:EnumSetHashSetTreeSetSet接口的常用方法:和List接口一样,Set接口也是Collection的子接口,因此,常用方法和Collection接口一样Set接口的遍历方式:同Collection的遍历方式一样,因为Set接口是Collection接口的子接口1.可以使用迭代器2.增强for3.不能使用索引的方式来获取。

2023-01-31 04:00:00 1308

原创 Java集合(五)LinkedList底层扩容源码分析

(1)LinkedList底层实现了双向和双端特点(2)可以添加任意元素(元素可以重复),包括null.(3)线程不安全,没有实现同步。

2023-01-30 20:30:00 942

SSM整合,包含利用ssm框架实现一个分页具体的功能

分页

2024-04-18

SpringMVC(十一)异常处理器和注解配置SpringMVC

本章相关代码

2024-01-31

SpringMVC(十)拦截器

本章代码详解

2024-01-28

SpringMVC(九)文件上传和下载

SpringMVC(九)文件上传和下载

2024-01-21

SpringMVC(八)处理AJAX请求

SpringMVC(八)处理AJAX请求

2024-01-21

SpringMVC(七)RESTful案例

restful里面的static资源

2024-01-14

AJAX(二)jQuery

AJAX本章的全部代码

2023-12-27

配置环境变量.md+jdk的安装

JDK的安装

2021-11-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除