- 博客(67)
- 资源 (2)
- 收藏
- 关注
原创 13,SpringMVC全局异常处理
SpringMVC全局异常处理V哥官网:http://www.vgxit.com本文对应视频教程:http://www.vgxit.com/course/231,概述在我们开发的时候,一般情况下,我们会用Controller调用Service,Service再来调用Dao。异常都是向上抛出的。最终DispatcherServlet接受到了异常,然后处理。DispatcherServlet的异常处理的确是很不友好。他给出来了一个页面,用户完全是看不懂。所以我们要用全局异常处理的机制来对异常进行处理。
2021-08-24 09:57:37 257
原创 12,文件上传
文件上传V哥官网:http://www.vgxit.com本博文对应视频教程:http://www.vgxit.com/course/231,概述在互联网应用中,像头像上传,证件图片上传等等文件上传的这样的操作,是非常常见的。这里就涉及到了文件上传的功能。SpringMvc为我们提供了更加方便的文件上传的Ai。我们用非常简单的方式,就可以实现文件上传的操作。2,引入两个依赖包<dependency> <groupId>commons-io</groupI
2021-08-24 09:55:00 237
原创 11,SpringMVC视图开发
SpringMVC视图开发V哥官网:http://www.vgxit.com本文对应视频教程:http://www.vgxit.com/course/231,概述之前我们学习了SpringMvc的视图解释方式。但是我们之前使用的是通过ModelAndView来实现的。但是在实际的开发中,我们使用ModelAndView其实是很少的。因为SpringMvc为我们提供了更简单的视图层的编码方式。内容如下:1,jsp视图的解析2,页面跳转3,json数据返回4,全局Json返回5,学习Jstl
2021-08-24 09:52:55 267
原创 10,数据验证
数据验证V哥官网:http://www.vgxit.com本文对应视频教程:http://www.vgxit.com/course/231,概述在实际的开发中,我们的Controller获取到了数据之后,第一步,就是验证数据的正确新。如果数据本身就存在问题,那么我们直接就报错给用户。比如我们有一个用户注册的需求,我们要求用户填写邮箱,但是这个时候用户填写一个abc。这个时候abc肯定不是正确的邮箱格式,这样的数据是不允许被插入到数据库的。按照我们之前学习的到的知识,我们可以自己写代码用正则表达式来
2021-08-24 09:48:47 253
原创 8,SpringMvc常用操作
SpringMvc常用操作V哥官网:http://www.vgxit.com本文对应视频教程:http://www.vgxit.com/course/231,概述介绍一些SSM的常用的API,包括页面重定向,Session,Cookie,Header的操作。2,URL重定向有的时候,我们处理完了一个逻辑之后,我们需要跳转到另外一个页面,这个时候,我们就可以使用URL重定向。@GetMapping("/test-redi1")public ModelAndView testRedi1() {
2021-08-24 09:40:21 170
原创 7,SSM整合案例
SSM整合案例V哥官网:http://www.vgxit.com本文对应视频教程:http://www.vgxit.com/course/231,概述有一些老师喜欢把SSM整合的知识放在最后来讲,但是,我觉得我们本来就学习了Spring和Mybatis的整合了,而SpringMvc和SPring的整合是不是天然的就很简单的就OK,所以,我们现在完全可以尝试一下整合SSM。2,整合步骤1,创建一个JavaWeb工程。2,配置依赖和插件:<?xml version="1.0" enco
2021-08-24 09:37:38 279
原创 6,SpringMvc获取请求参数
SpringMvc获取请求参数V哥官网:http://www.vgxit.com本文对应视频教程:http://www.vgxit.com/course/231,概述我们使用SpringMvc的控制器的时候,接受参数其实就是我们做业务开发的第一步。本节课开始,V哥就会细细的给大家讲SpringMvc接受参数。就是我们使用HttpServletReqeust本来也是可以接收参数的,但是SpringMvc为我们提供了更好的,更方便的接收参数的方式。2,通过参数名完全匹配的方式获取请求参数就是说,我
2021-08-24 09:32:06 248
原创 5,SpringMvc操作Session
SpringMvc操作SessionV哥官网:http://www.vgxit.com本文对应视频教程:http://www.vgxit.com/course/231,概述我们使用了SpringMvc之后,我们尽量就不要再来使用ServletApi了。那么Session的添加和获取,我们怎么做?这里V哥给大家说一下,就是SpringMvc给我们提供了设置session的Api,但是V哥用过了之后,觉得这个SpringMvc给我们提供的设置Session的Api反而不是太好用,有点麻烦,所以这里我们
2021-08-24 09:27:47 366
原创 4,ServletApi的使用
ServletApi的使用V哥官网:http://www.vgxit.com本文对应视频教程:http://www.vgxit.com/course/231,概述我们在真正开发的时候,我们不可能非常简单的,直接就写一个方法来提供服务,有的时候,我们需要获取参数,返回响应,session操作。这个时候,我们怎么来实现呢?我们在学习JavaWeb开发的时候,我们HttpServletRequest, HttpServletResponse, HttpSession类。那么这些Servlet为我们提供的
2021-08-24 09:26:06 201
原创 3,@RequestMapping详解
@RequestMapping详解V哥官网:http://www.vgxit.com本文对应视频教程:http://www.vgxit.com/course/231,概述在目前的开发过程中,几乎全部都会采用注解的开发方式,所以我们也采用注解为主的开发方式,使用注解在 Spring MVC 中十分简单,主要是以一个注解@Controller标注,一般只需要通过扫描配置 就能够将其扫描出来,只是往往还要结合注解@RequestMapping去配置它。2,RequestMapping:Reques
2021-08-24 09:23:36 411
原创 2,SpringMvc入门及分析
SpringMvc入门及分析V哥官网:http://www.vgxit.com本文对应视频教程:http://www.vgxit.com/course/231,环境搭建1,首先我们创建一个Maven的Web工程。2,引入对应的依赖:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/
2021-08-24 09:19:41 253
原创 03,spring IOC入门
IOC入门1,导入Jar包:Spring是Spring社区为我们提供的第三方的开源框架。我们首先来介绍一下Spring的三大核心组件:1,Spring core: Spring核心中的核心,为context在管理Spring中bean与bean之间关系时为其服务的。其实直白一点就是为Spring管理bean提交工具的一个工具类。2,Spring beans: 主要负责Bean的创建,Bean的定义,Bean的解析。该组件依赖于Spring core3,Spring context:在Sp
2021-06-18 00:10:51 278
原创 04,spring 构造方法注入和set注入
构造方法注入和set注入1,概述我们上节课讲了一下IOC入门,然后我们注入了一个对象到Spring容器,并且通过Spring容器获取到了这个对象。但是,我们思考一下,我们说道了注入就是我们创建一个对象然后把这个对象提交到Spring容器。那么我们思考一下他是如何创建这个对象的呢?2,无参构造方法注入所谓无参构造方法注入就是Spring会自动调用我们无参构造方法来创建一个对象,然后再把这个对象提交到Spring容器。像我们上节课讲的入门案例。我们创建Person对象不需要提交任何的参数。3
2021-06-18 00:10:30 478 1
原创 05,Spring Xml装配Bean
Xml装配Bean1,概述通过之前的学习,大家已经熟练的掌握了SpringIOC和理念,并且对Spring依赖注入的使用有一个初步的了解。这里我们再来深入的学习一下Bean的装配。在Spring中提供了三种方式来对Bean进行配置:在XML文件中配置 在Java的接口和实现类中配置 隐式Bean的发现机制和自动装配原则在现实的工作中,这三种方式都会被用到,并且在学习和工作中常常混合使用。所以我们这三种方式都要学习。本节课我们先学习XML装配Bean。2,分析bean标签<b
2021-06-18 00:09:54 276 1
原创 006,Spring注解方式装配Bean
Spring注解方式装配Bean1,概述通过之前的学习,我们己经知道如何使用XML的方式去装配Bean但是更多的时候我们已经不再推荐使用XML的方式去装配Bean(注意,XML装配Bean的知识你还是要会),更多时候会考虑使用注解的方式去装配Bean。使用注解的方式可以减少XML的配置,并且注解功能更为强大,它既能实现XML的功能,也提供了自动装配的功能,采用了自动装配后,程序员所需要做的决断就少了,更加有利于对程序的开发,这就是“约定由于配置” 的开发原则。在Spring中,提供了两种方式来发
2021-06-18 00:09:18 405 1
原创 007,Spring混合装配
混合装配1,概述之前的课程介绍了最基本的装配Bean方法,我们对XML的方式和注解的方式都进行了讲解。在现实中,使用XML或者注解各有道理,V哥建议在自己的工程中所开发的类尽量使用注解方式,因为使用它并不困难,甚至可以说更为简单,而对于引入第三方包的类,尽量使用XML方式,这样的好处是可以尽量对三方包或者服务的细节减少理解,也更加清晰和明朗。但是V哥给大家说一下,现在我们使用的是混合装配的方式。不过之后大家学习了Spring boot之后,XML的方式基本上是不会再使用了。都是注解的方式。
2021-06-18 00:08:46 247
原创 010,Spring 条件化装配Bean
条件化装配Bean1,概述有的时候我们在开发的时候需要按照条件来装配不同Bean。比如,我们开发一套人力资源管理系统。我们把这个系统分别提供给了公司A和公司B。但是公司A和公司B在导入用户数据的时候需求不同。公司A是导出了一个大的Json的文件给我们,让我们上传这个文件导入。而公司B是导出了一个Excel文件给我们,让我们导入这个文件。这个时候怎么办呢?...
2021-06-18 00:08:08 211 1
原创 009,Spring 加载属性配置文件
加载属性配置文件1,概述在实际的开发中往往有很多配置是写在properties类型的配置文件中的。我们使用Spring的时候,也需要能够加载并读取到配置文件。解决的思路是,spring应用在启动的时候,找到对应的配置文件,然后读取到内存中,要使用的时候,我们调用Spring为我们提供的Api进行读取。2,使用直接加载的方式加载读取properties文件:首先,我们在resources下面创建一个properties配置文件。这里我们就用之前用过的druid.properties文件就好了:
2021-06-17 17:33:31 269 1
原创 008,Spring 环境区分
1,概述在软件开发的过程中,敏捷开发模式很常见,也就是每次都提交一个小阶段的测试,那么可能是开发人员使用一套环境(开发环境),而测试人员使用另一套环境(测试环境),而这两套系统的数据库是不一样的,毕竟测试人员也需要花费很多的时间去构建测试数据,可不想老是被开发人员修改那些测试数据,这样就有了在不同的环境中进行切换的需求了。2,注解方式区分环境比如,我们在开发的时候,开发人员连接的数据库和测试人员连接的数据库是分开的。这个时候,我们可以用如下的方式来做1,首先我们定义两个方法,来获取两个环境不
2021-06-17 17:32:46 338
原创 011,Spring表达式(了解)
使用Spring表达式1,概述Spring还提供了更加灵活的注入方式。那就是Spring表达式,也叫做Spring EL。Spring EL非常强大。我们本节课会好好的学习。2,Bean属性设置默认值package com.vgxit.learn.spring.ktdm.el.beans;import lombok.Data;import org.springframework.beans.factory.annotation.Value;import org.springfram
2021-06-17 17:32:11 155
原创 012,Spring 面向切面,问题引入
面向切面-问题引入1,概述如果说IOC是Spring的核心,那么面向切面就是Spring最重要的功能之一了。在数据库事物中切面编程是广泛应用的。2,AOP的概念和使用原因我们就用我们的数据库编程来举例。比如,我们做了一个电商系统,我们要做一块使用账户余额支付的功能。这个功能一般情况下需要四个操作来支撑,分别是:1,商品库存减一。2,生成一个订单。3,账户余额扣款。4,生成一条交易记录。按照没用Spring之前的操作我们可能会写如下伪代码:商品扣库存;if(商品库存扣成功) {
2021-06-17 17:31:26 214
原创 013,Spring Aop基于AspectJ开发
Spring Aop基于@AspectJ开发1,选择切点Spring是一个方法级别的AOP框架。也就是我们可以再调用某个方法之前,之后,正常返回之后,异常返回之后来切入我们的代码。我们需要被拦截的方法就叫做一个切点。那么我们应该创建对应的切点。这里我们就直接把上节课讲的添加用户复制过来作为我们的切点。1,创建对应的PO:package com.vgxit.learn.spring.ktdm.springaop.po;import lombok.Data;@Datapublic c
2021-06-17 17:30:57 200
原创 014,spring AOP 连接点指示器
spring 连接点指示器1,概述上节课我们讲了一下连接点,相信大家已经能够熟练的使用,并且老师告诉大家,在实际的开发中,我们基本上使用上面讲的连接点相关的知识就够了。但是AspectJ注解还给我们提供了更多的功能。2,args()指示器:限制连接点匹配参数为指定类型的方法。比如我们把上节课的切面类改一下:@Pointcut("execution(* com.vgxit.learn.spring.ktdm.springaop.service.impl.UserService.add
2021-06-17 17:30:19 203
原创 015,Spring Aop环绕通知
Spring Aop环绕通知1,概述环绕通知是SpringAOP中最强大的通知,它可以实现前置通知和后置通知。它保留了调度被代理对象原有方法的功能,所以它强大又灵活。但是由于强大,它的可控制性不那么强,如果不需要大量改变业务逻辑 而言并不需要使用它。环绕通知说白了,就是把我们之前的,前置通知,后置通知,正常返回通知,异常返回通知合并到一起。2,具体实现package com.vgxit.learn.spring.ktdm.springaop.aspect;import org.as
2021-06-17 17:29:42 257
原创 016,Spring 通知传递参数
Spring 通知传递参数1,概述我们上面在执行切点方法的时候,我们可能会传入一些参数给对应的切点方法,比如我们UserService的add方法:package com.vgxit.learn.spring.ktdm.springaop.service.impl;import com.vgxit.learn.spring.ktdm.springaop.po.User;import com.vgxit.learn.spring.ktdm.springaop.service.IUserSe
2021-06-17 17:28:44 153
原创 017,spring Aop XML方式实现
spring Aop XML方式实现1,概述之前我们使用了注解的方式来开发AOP,以后我们在工作中,更多的也是使用注解的方式来开发AOP,但是Spring也给我们提供了XML开发AOP的方式。我们接下来用我们之前做过的例子给大家举例。2,前置,后置,正常返回和异常返回通知...
2021-06-17 17:27:51 186
原创 018,Spring 数据库编程
Spring和数据库编程1,概述:Spring最重要的功能毫无疑问就是操作数据。在Java互联网项目中,数据大部分存储在数据库和NoSQL工具中,我们接下来就要接触到基于Spring的数据库编程。数据库的编程是互联网编程的基础,Spring为开发者提供了JDBC模板模式,那就是它自身的jdbcTemplate,它可以简化许多代码的编程,但是在实际的工作中jdbcTemplate并不常用。Spring还提供了基于TransactionTemplate的支持事务的模板。只不过这些都不是常用技术。对于持久层
2021-06-17 17:27:14 192
原创 019,Spring整合JdbcTemplate
Spring整合JdbcTemplate1,概述我们之前之前也开发过做过很多JDBC查询数据库相关代码。我们可以看到。使用JDBC开发程序,我们是非常痛苦的。因为我们要经历创建连接,获取PreparedStatement,获取ResultSet,组装数据等各种一系列的问题。非常的麻烦。而Spring为我们提供的JdbcTemplate就为我们很好的提供了这一方式。但是V哥给大家说一下,这种JdbcTemplate的数据库编程的方式,在真的线上开发的时候,很少使用。大家还是喜欢使用mybatis,hib
2021-06-17 17:26:40 235 1
原创 020,Spring整合Mybatis
Spring整合Mybatis1,概述现在大部分的Java互联网项目,都是使用SpringMvc + Spring + Mybatis来搭建的。但是Spring官方并没有为我们提供整合Mybatis相关的方案。不过还好的是Mybatis社区为我们开发了Mybatis-Spring项目,可以用来实现Mybatis和Spring的整合。那么我们要整合Mybatis,首先我们需要引入对应的Jar包:<?xml version="1.0" encoding="UTF-8"?><proj
2021-06-17 17:26:07 236
原创 021,Spring整合Mybatis纯注解方式
Spring整合Mybatis纯注解方式1,定义Spring配置类:package com.vgxit.learn.spring.mybatis.bk.config;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScan("com.vgxit.lear
2021-06-17 17:25:36 190
原创 022,Spring编程式事物
Spring事物管理1,概述之前我们已经使用了Spring来整合JdbcTemplate和Mybatis。但是我们并没有配置事务,我们知道在互联网开发项目中,数据库事务的配置是非常重要的。那么接下来我们就要来学习Spring的事物管理。2,Spring数据库事务管理器设计思路在Spring中,数据库事务通过PlatformTransactionManager进行管理。然后,Spring再给我们提供了一个支持事务的模板TransactionTemplate。我们可以看看TransactionTem
2021-06-17 17:24:52 132
原创 023,Spring 声明式事物
声明式事物1,概述声明式式事物是一种约定性的事物,在大部分情况下,当数据库使用事物的时候。一般我们都是发生了异常就需要事物回滚,如果没有繁盛异常,那么久提交事物。从这一点出发,Spring给了我们一个约定,就是没有异常提交事物,有异常回滚事务。通过这种思想,为我们提供了声明式事物。2,具体实现:我们这里要实现必须通过一个注解@Transactional。被这个注解修饰的方法就自动的会按照Spring给我们的约定管理起了事务。1,我们首先在xml中开启申明式事务:<tx:annotatio
2021-06-17 17:24:27 196
原创 024,Spring Transactionl注解详解
Transactionl注解详解1,概述在我们真正的编程开发中,大部分情况下,我们都是使用的Transactionl注解来进行声明式事务开发的。所以,这个注解非常的重要,这里我们单独拿出来讲一讲。2,事务超时时间1,我们在定义@Transactionl注解的时候,加上超时时间的属性:@Transactional(timeout = 5)2,对应的业务代码:public void updateUser() { try { Thread.sleep(6000);
2021-06-17 17:23:56 207
转载 025,Transactionl注解失效问题
1、@Transactional 应用在非 public 修饰的方法上如果Transactional注解应用在非public 修饰的方法上,Transactional将会失效。之所以会失效是因为在Spring AOP 代理时,如上图所示 TransactionInterceptor (事务拦截器)在目标方法执行前后进行拦截,DynamicAdvisedInterceptor(CglibAopProxy 的内部类)的 intercept 方法或 JdkDynamicAopProxy 的 invoke 方
2021-06-17 17:22:25 158
原创 02,Spring IOC的概念
Spring IOC概念1,IOC思想:原始方式创建对象类比:老师用吃饭来举例。同学们肚子饿了,想要吃饭。像老师小时候是和我的外婆外公在农村生活。当时村里也没有什么饭店之类的。老师肚子饿了,外婆要给我做饭会怎么做?首先,家里面得有锅,碗,瓢,铲子等基本的工具。然后还要有盐,有肉,有蔬菜,有米饭等食材。然后还要有柴火用来生活。然后外婆还需要控制好炒菜的时候放多少油,放多少烟,放多少菜,放多少肉,放多少水。然后最终加工出一桌饭菜出来。这个过程我们可以看如下流程图:IOC创建...
2021-06-17 17:20:50 166
原创 01,认识Spring(了解)
认识Spring1,Spring的简单概述Spring在英文里面本来的含义是春天的意思。Spring框架用Spring命名也是非常非常贴切的。它为我们软件开发也带来了春天。在老师看来Spring是Java领域最成功的的框架。在企业实际应用中。基本上所有的项目都会使用到Spring。Spring之所以成功,来自原它的理念,它最核心的概念就是Ioc(控制翻转)和Aop(面向切面编程),其中Ioc是Spring的基础,而Aop是最重要的功能。并且Spring还能整合开源社区几乎所有的第三方框架和类库。
2021-06-17 17:19:59 238
原创 013,Mybatis基于Idea的逆向工程
Mybatis基于Idea的逆向工程1,概述:我们编写了Mybatis的很多代码了。我们会发现一个问题,我们基于单表的增删改查。很多代码模板都是属于差不多的。我们每次都要自己去写一遍是不是非常麻烦。这个时候Mybatis就给我们提供了一些很好用的工具,比如逆向工程。逆向工程的意思就是通过数据表来生成对应的Mapper的代码,这些代码里面就包含了单表的几乎所有操作。以前我们要实现逆向工程,需要依赖于外部脚本。但是现在的话Idea已经给我们提供了图形化的工具来生成。我们就使用一下。2,idea连接数
2021-05-29 01:59:18 237
原创 012,Mybatis TypeHandler类型转换器
TypeHandler类型转换器1,概述:我们思考一个问题,我们之前在是使用JDBC的时候,我们从ResultSet获取对应的数据,用到了对应getXXX方法。比如获取一个数据库为int的数据,我们可以使用rs.getInt(),如果我们获取数据库类型为varchar的数据,我们可以使用rs.getString()。而我们现在使用了Mybatis之后,从数据库里面查询出来了之后,他是如何把数据库的类型和Java类型对应起来的呢?这个地方Mybatis就用到了typeHandler来实现。2,
2021-05-29 00:46:29 214
原创 011,Mybatis动态Sql
Mybatis动态Sql1,概述:我们之前已经学习了如何编写Sql来查询对应的数据。但是有的时候真的开发的时候我们的Sql不会是完全固定的。比如我们有三个查询需求:通过年龄查询用户 通过性别查询用户 通过年龄和性别查询用户这个时候可能我们会学三个sql来解决上面问题:select * from user where age=#{age} select * from user where gender=#{gender} select * from user where age=
2021-05-29 00:46:09 283
原创 010,Mybatis缓存
Mybatis缓存1,概述:我们使用的数据库是把数据存储在磁盘上的,每次读取数据需要数据库从磁盘上把数据索引出来。从硬件的角度分析,索引磁盘是一个较为缓慢的过程,读取内存或者高速缓存处理器的速度要比读取磁盘速度快很多,有可能达到几十倍或者几百倍。但是内存和高速缓存存储数据空间有限,所以,我们一般只会把命中率高的数据缓存起来。mybatis也支持缓存,Mybatis的缓存分为一级缓存和二级缓存,我们接下来慢慢介绍。2,一级缓存:一级缓存是在SqlSession上的缓存。这个的意思就是,对于同一
2021-05-29 00:45:41 159
java基础课程视频教程(V哥主讲)
2021-02-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人