![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
qcw_
Poor student of Xuchang College
展开
-
匿名内部类的概念和使用详解
顾名思义,内部类就是在一个类里再定义类。内部类是类的五大成员之一,五大成员包括:属性、方法、构造方法、代码块、内部类。内部类的访问特点:内部类可以直接访问外部类的成员,包括私有。而外部类要访问内部类的成员必须要创建对象原创 2022-11-26 15:59:46 · 1906 阅读 · 1 评论 -
SpringMVC配置异常处理
HandlerExceptionResolver接口的实现类有:DefaultHandlerExceptionResolver和SimpleMappingExceptionResolver。SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver。SpringMVC提供了自定义的异常处理器SimpleMappingExceptionResolver。原创 2022-10-04 09:37:37 · 354 阅读 · 0 评论 -
SpringMVC拦截器的配置及其细节
preHandle()按照配置的顺序执行,而postHandle()和afterCompletion()按照配置的反序执行。preHandle():在控制器方法执行之前执行,其返回值表示对控制器方法的拦截(false)或放行(true)拦截器的preHandle()返回false之前的拦截器的afterCompletion()会执行。拦截器的preHandle()返回false和它之前的拦截器的preHandle()都会执行。所有的拦截器的postHandle()都不执行。原创 2022-10-03 22:44:29 · 547 阅读 · 0 评论 -
SpringMVC的文件上传与下载的实现
在SpringMVC的文件上传与下载的实现要比在原生的servlet中实现更加容易,配置文件做一些配置就能解决一些功能。原创 2022-10-02 22:06:11 · 314 阅读 · 0 评论 -
SpringMVC处理Ajax请求及处理和响应json格式的数据
首先在maven工程里创建新的module(其他方式均可),然后在pom文件中导入依赖,在其中包括我们上文所写到的jackson的依赖,然后配置web里的web.xml编码过滤器、处理请求方式过滤器以及SpringMVC的前端控制器。c>在处理请求的控制器方法的形参位置,直接设置json格式的请求参数要转换的Java类型的形参,使用@RequestBody注解标识即可。method:"", //请求方式(以name=value&name=value的方式发送的请求参数,a>导入Jackson的依赖。原创 2022-10-01 08:53:55 · 1616 阅读 · 0 评论 -
RESTful的介绍和简单实现
资源:资源是一种看待服务器的方式,即,将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的概念,所以它不仅仅能代表服务器文件系统中的一个文件、数据库中的一张表等等具体的东西,可以将资源设计的要多抽象有多抽象,只要想象力允许而且客户端应用开发者能够理解。与面向对象设计类似,资源是以名词为核心来组织的,首先关注的是名词。一个资源可以由一个或多个URI来标识。URI既是资源的名称,也是资源在Web上的地址。原创 2022-09-28 19:50:25 · 216 阅读 · 0 评论 -
SpringMVC中的视图
当控制器方法中所设置的视图名称以"forward:"为前缀时,创建InternalResourceView视图,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,而是会将前缀"forward:"去掉,剩余部分作为最终路径通过转发的方式实现跳转。若使用的视图技术为Thymeleaf,在SpringMVC的配置文件中配置了Thymeleaf的视图解析器,由此视图解析器解析之后所得到的是ThymeleafView。SpringMVC视图的种类很多,默认有转发视图和重定向视图。原创 2022-09-28 14:30:10 · 569 阅读 · 0 评论 -
向会话域和应用域共享数据
向session域和application域中共享数据使用ServletAPI的方式。原因是步骤简单,而对于request域共享数据是不推荐。原创 2022-09-28 12:12:01 · 207 阅读 · 0 评论 -
使用ModelAndView向request域对象共享数据
在SpringMVC中向域对象共享数据的方法有多种2.使用Model向请求域共享数据3.使用ModelMap向请求域共享数据4.使用Map向请求域共享数据其中2、3、4的方式底层也都是BindingAwareModelMap实现代码如下:原创 2022-09-27 20:34:30 · 621 阅读 · 0 评论 -
SpringMVC通过pojo获取请求参数
要在控制器方法的形参位置设置实体类类型的形参,要保证实体类中的属性的属性名和请求参以通过实体类类型的形参获取请求参数。这里我们先创建一个User实体类。原创 2022-09-27 10:51:52 · 250 阅读 · 0 评论 -
SpringMVC通过控制器方法的形参获取请求参数
在使用SpringMVC框架后,在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在DispatcherServlet中就会将请求参数赋值给相应的形参。-defaultValue:设置当没有传输value所对应的请求参数时,为形参设置默认值,此时和required属性值无关。若设置为false,则表示value所对应的请求参数不是必须传输,若未传输则形参值为null。只需要在控制器方法的形参位置,设置一个形参,形参的名字和请求参数的名字一致即可。原创 2022-09-27 10:06:46 · 433 阅读 · 0 评论 -
@RequestMapping注解的属性的使用及具体细节详解
需要在@RequestMapping注解的value属性所设置的路径中,使用{xxx}的方式表示路径中的数据再通过@PathVariable注解将占位符所标识的值和控制器方法的形参进行绑定。作用:通过请求的请求头信息匹配请求,即浏览器发送的请求的请求头信息满足headers属性的设置 (用法与params属性的用法一样)作用:通过请求的请求参数匹配请求,即浏览器发送的请求的请求参数必须满@params属性的设置。@RequestMapping标识一个类:设置映射请求的请求路径的初始信息。原创 2022-09-26 17:36:27 · 3295 阅读 · 0 评论 -
SpringMVC的初步使用
MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为实体类Bean:专门存储业务数据的,如 Student、User 等;一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据。原创 2022-09-24 11:15:59 · 112 阅读 · 0 评论 -
基于注解的声明式事务实现事务功能
存在的缺陷:细节没有被屏蔽:具体操作过程中,所有细节都需要程序员自己来完成,比较繁琐;代码复用性不高:如果没有有效抽取出来,每次实现功能都需要自己编写代码,代码就没有得到复用。既然事务控制的代码有规律可循,代码的结构基本是确定的,所以框架就可以将固定模式的代码抽取出来,进行相关的封装。在没有使用Spring框架之前,通过编程式事务实现事务的管理即自己写代码实现功能。在需要被事务管理的方法上添加@Transactional注解,该方法就会被事务管理。2、标识在类上,该类中所有的方法都会被事务管理。原创 2022-09-21 21:04:33 · 202 阅读 · 0 评论 -
Spring整合Junit4和JdbcTemplate实现查询添加
要做的准备工作有加入依赖、创建jdbc.properties、配置Spring的配置文件。Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作。最后基于User表创建User类可以实现测试。原创 2022-09-20 09:46:52 · 250 阅读 · 0 评论 -
基于XML的AOP实现
基于xml的AOP的实现与基于注解的实现原理一致,只需要了解。参考基于注解的AOP环境。原创 2022-09-15 16:33:22 · 163 阅读 · 0 评论 -
基于注解的AOP环绕通知
环绕通知本质上就是环绕通知的这一个方法实现了包括前置通知、返回通知、异常通知、后置通知所有的方法的实现。与动态代理实现的方式一样(方法的内容)这里前面的方法类不再给出,可以参照上一篇文章。原创 2022-09-15 11:05:58 · 874 阅读 · 0 评论 -
基于注解的AOP各种通知的使用
在通知方法的参数位置,设置joinPoint类型的参数,就可以获取连接点所对应的方法的信息。@AfterReturning:返回通知,在目标对象方法返回之后执行。@After:后置通知,在目标对象方法的Finnally字句中执行。第一行的写法是写死的,只针对add方法 第二行是用于所有方法。@Before:前置通知,在目标对象方法执行之前执行。//@Pointcut:声明一个公共的切入点表达式。//获取连接点对应方法的签名信息。表示任意的访问修饰符和返回类型。//获取连接点所对应方法的参数。原创 2022-09-15 10:58:11 · 242 阅读 · 0 评论 -
代理模式之动态代理
动态代理的实现主要是通过newProxyInstance():创建一个代理实例,通过newProxyInstance里的三个参数配置实现。在以后的AOP面向切面编程的底层就是动态代理。要求必须有接口,最终生成的代理类和目标类实现相同的接口在com.sun.proxy包下,类名为¥proxy2。最终生成的代理类会继承目标类,并且和目标类在相同的包下。原创 2022-09-13 21:29:41 · 199 阅读 · 0 评论 -
代理模式之静态代理
它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用。让不属于目标方法核心逻辑的代码从目标方法中剥离出来——解耦。调用目标方法时先调用代理对象的方法,减少对目标方法的调用和打扰,同时让附加功能能够集中在一起也有利于统一维护。个人理解:就是在一些方法实现中一些功能比如带日志的实现类,需要在类中实现日志输出的代码。它对核心业务功能有干扰,分散在各个业务功能方法中,不利于统一的封装和维护。使用代理模式通过代理类来实现这些分散的方法并调用目标方法。原创 2022-09-13 15:49:35 · 157 阅读 · 0 评论 -
Spring基于注解的自动装配
基于XML的自动装配是在配置文件的bean里设置autowire属性,有byType,byName的方式。c>若byType、byName的方式都无法实现自动装配,即IOC容器中有多个类型匹配的bean。b>若有多个类型匹配的bean,此时会自动转换为byName的方式实现自动装配的效果。通过该注解的value属性值,指定某个bean的id,将这个bean为属性赋值。且这些bean的id和要赋值的属性的属性名都不一致,此时会抛出异常。c>标识在为当前成员变量赋值的有参构造上。b>标识在set方法上。原创 2022-09-12 19:55:37 · 718 阅读 · 0 评论 -
Spring基于注解管理bean
使用注解的方式需要在配置文件中配置扫描,通过注解+扫描所配置的bean的id,默认值为类的小驼峰,即类名的首字母为小写的结果(可以通过标识组件注解的value属性值自定义id)和 XML 配置文件一样,注解本身并不能执行,注解本身仅仅只是做一个标记,具体的功能是框架检测到注解标记的位置,然后针对这个位置按照注解标记的功能来执行具体操作。本质上:所有的一切操作都是由Java代码完成的,XML和注解只是告诉框架中的Java代码如何执行。以下为具体的代码实现。原创 2022-09-12 19:39:05 · 116 阅读 · 0 评论 -
Spring基于XML的自动装配
1.no,default:表示不装配,即bean中的属性不会自动匹配某个bean为属性赋值,此时属性使用默认值。根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类型属性赋值。3.byName:将要赋值的属性的属性名作为bean的id在IOC容器中匹配某个bean,为属性赋值。总结:当使用byType实现自动装配时,IOC容器有且只有一个类型匹配的bean能够为属性赋值。2.byType:根据要赋值的属性类型,在IOC容器中匹配某个bean为属性赋值。原创 2022-09-12 19:19:52 · 245 阅读 · 0 评论 -
Spring中FactoryBean
FactoryBean是Spring提供的一种整合第三方框架常用的机制。和普通的bean不同,配置一个FactoryBean类型的bean,在获取bean的时候得到的并不是class属性中配置的这个类的对象,而是getObject()方法的返回值。通过这种机制,Spring可以帮我们把复杂组件的创建的详细过程和繁琐细节都屏蔽起来,只把最简介的使用界面展示出来。将来我们整合mybatis时,Spring就是通过FactoryBean机制来帮助我们创建SqlSession Factory对象的。原创 2022-09-12 18:40:20 · 231 阅读 · 0 评论 -
Spring中Bean的生命周期
bean的后置处理器会在生命周期的初始化前后添加额外的操作,需要实现BeanPostProcessor接口,且配置到IOC容器中,需要注意的是,bean后置处理器不是单独针对某一个bean生效,而是针对IOC容器中所有bean都会执行。最后在测试文件中创建ioc容器,获取bean。若bean的作用域为单例时,生命周期的前三个步骤会在获取IOC容器时执行。若bean的作用域为多例时,生命周期的前三个步骤会在获取bean时执行。原创 2022-09-11 12:22:01 · 86 阅读 · 0 评论 -
Spring中Bean的作用域
另外,在WebApplicationContext环境下还会有另外两个作用域(不常用),一个是request,一个是session。singleton(默认):在IOC容器中,这个bean的对象始终为单实例。也就是表示获取该bean所对应的对象都是同一个。prototype:这个bean在IOC容器中有多个实例。也就是表示获取该bean所对应的对象都不是同一个。可以得到结果获取到的bean所对应的对象是同一个。在Spring中可以通过配置bean标签的。来指定bean的作用域范围。原创 2022-09-11 12:00:05 · 138 阅读 · 0 评论 -
Spring依赖注入之为数组和集合类型赋值
创建一个teacher类,在里面定义tid,tname两个属性。之后再student类中设置一个Map集合类型的teacherMap。这里我们在创建的学生类里定义一个string类型的数组hobby。在clazz中添加list集合属性。原创 2022-09-11 11:45:54 · 236 阅读 · 0 评论 -
Spring依赖注入为字面量类型赋值的方式
这里由于构造器注入可以直接利用构造方法实现赋值,不过由此产生了当在Student类中由多个构造类可以匹配时无法匹配我们想要的属性,解决方式就是在constructor-arg标签中加上name属性。和构造器注入(不常用),另外字面量中涉及到特殊字符的赋值,有两种解决方式:用其对应的标识和XML中的一个特殊的标签CDATA节。这里两种方式实现""给sname的赋值。为字面量赋值一般用两种方式处理。下面是具体的代码解释。原创 2022-09-08 11:44:15 · 244 阅读 · 0 评论 -
Spring获取bean的三种方式
根据id获取的bean一定是唯一的,但是一般需要强转对象来获取到。根据类型获取是用到最多的,一般在配置文件种一个类对应一个id。如果组件类实现了接口,根据接口类型可以获取 bean 吗?答:可以,前提是bean唯一。原创 2022-09-07 18:13:12 · 2794 阅读 · 0 评论 -
MyBatis的逆向工程
逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:Java实体类、Mapper接口、Mapper映射文件。正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。核心配置文件mybtis-config.xml在创建项目是就可以创建,可以把它写进idea的模板里。运行完成后,查看目录就会发现,自动生成了Java实体类、Mapper接口、Mapper映射文件。在context标签中的targetRuntime属性中的两个参数。这里配置的数据库连接与生成包的名字需要根据情况配置。原创 2022-09-06 14:34:52 · 230 阅读 · 0 评论 -
MyBatis的缓存
二级缓存是SqlSessionFactory级别,通过同一个SqlSessionFactory创建的SqlSession查询的结果会被。一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就。a>在核心配置文件中,设置全局配置属性cacheEnabled=“true”,默认为true,不需要设置。先查询二级缓存,因为二级缓存中可能会有其他程序已经查出来的数据,可以拿来直接使用。①eviction属性:缓存回收策略,默认的是 LRU。原创 2022-09-06 14:12:33 · 69 阅读 · 0 评论 -
MyBatis动态SQL处理增删改查
这里没有给具体的方法实现,使用时可以先用sql标签记录一段,在需要用的地方使用include标签引用。prefixOverrides,suffixOverrides属性:在标签的前面或后面去掉指定内容。b.会自动将where标签中内容前多余的and去掉,不过其中内容后多余的and无法去掉。通过 test属性中的表达式判断标签中的内容是否有效(是否会拼接到sql中)-separator:设置每次循环的数据之间的分隔符。是动态SQL中的循环标签。这里介绍动态sql的六个标签以及它们的使用。原创 2022-09-03 20:06:21 · 517 阅读 · 0 评论 -
MyBatis处理一对多映射关系的两种方法
这里以实现部门信息表t_dept与员工信息表t_emp所对应的接口中的方法为例,部门表中有不同的部门,一个部门对应员工信息表中多个员工。显而易见,部门与员工之间是一种一对多的关系。原创 2022-09-01 20:21:53 · 1892 阅读 · 1 评论 -
MyBatis自定义映射属性resultMap的解析
resultMap:设置自定义的映射关系 id:唯一标识;type:处理映射关系的实体类类型常用的标签id:处理主键和实体类中属性的类型result:处理普通字段和实体类中属性的映射关系association:处理多对一的映射关系(处理实体类类型的属性)collection:处理一对多的映射关系(处理集合类型的属性)...原创 2022-08-30 19:56:36 · 587 阅读 · 0 评论 -
MyBatis处理多对一映射关系的三种方法
1.级联方式处理2.association标签3.分步查询这里是基于t_emp,t_dept员工信息表与部门信息表对应的mapper接口实现方法,在员工信息表中有部门信息id这一字段,而在部门信息表中id字段与部门名称字段是一 一对应的。所以员工信息与部门信息是多对一的关系(多个员工可能在一个部门)...原创 2022-08-30 13:13:07 · 620 阅读 · 0 评论 -
Mybatis处理字段名和属性名不一致的几种方法
在mybatis核心配置文件中设置全局配置来自动将下划线映为驼峰;使用resultMap自定义映射。原创 2022-08-29 17:39:23 · 673 阅读 · 0 评论 -
Mybatis添加用户信息同时获取自增的主键
Mybatis添加用户信息同时获取自增的主键。原创 2022-08-29 09:46:13 · 161 阅读 · 0 评论 -
Mybatis动态表名查询用户信息
Mybatis动态表名查询用户信息。原创 2022-08-29 09:43:36 · 129 阅读 · 0 评论 -
Mybatis处理批量删除
{}的本质是字符串的拼接, #̲{}的本质为占位符。原创 2022-08-26 17:51:50 · 237 阅读 · 0 评论 -
Mybatis中的模糊查询
这里以实现SpecialSQLMapper接口的方法为例,来用代码展示myBatis中的模糊查询。原创 2022-08-26 17:32:17 · 301 阅读 · 0 评论