Spring
文章平均质量分 58
Outlier_Lin
这个作者很懒,什么都没留下…
展开
-
mybaties的核心配置文件
在mybaties的核心配置文件中,我们可以在根标签configruation里面配置的标签有:properties 属性:该标签可以加载外部的properties文件settings设置typeAliases类型别名:设置类型别名typeHandlers类型处理器objectFactory对象工厂plugins插件environnents环境:数据源环境配置标签。它内部还有其他的子标签:environment:环境变量的配置。transactionManager:配置事原创 2022-05-13 12:02:13 · 226 阅读 · 0 评论 -
spring的事物控制(利用注解开发)
准备工作这些在这个博客:Spring的事物控制(利用xml进行开发)_Outlier_Lin的博客-CSDN博客我们前面知道有新注解,原始注解,我们可以通过这两种完全的替代xml文件,但是我这里就很简单,没用有新注解,所以有些就没有替代。...原创 2022-05-10 19:13:08 · 154 阅读 · 0 评论 -
Spring的事物控制(利用xml进行开发)
首先我们要知道,SpringMVC的事物控制其实就是利用了aop的思想。所以在开发过程中我们要知道谁是切点?谁是通知?配置切面?在这里的切点就是我们需要进行事物控制的方法,通知在这个事物控制里面就是事物控制。然后再进行织入的过程。接下来我们用一个转账的例子来详细解释利用xml来进行事物的控制。准备工作:先在pom中导入我们需要的坐标: <dependencies> <dependency> <groupId>junit<原创 2022-05-10 18:35:55 · 285 阅读 · 0 评论 -
spring-aop(利用注解开发)
开发步骤:1创建目标接口和目标类(内部有切点)2创建切面类(内部有增强方法)3将目标类和切面类的对象创建权交给spring4在切面类中使用注解配置织入关系5在配置文件中开启组件扫描和AOP的自动代理6 测试下面代码实例:第一步:创建目标接口和目标类(内部有切点)(由于在前一篇博客讲的很详细这里我们只需要把以前的一些Xml配置变成注解就行)@Component("target")public class Target implements TargetInterface..原创 2022-05-07 20:13:17 · 338 阅读 · 0 评论 -
spirng-aop(以xml的形式完成开发)
首先我们要知道aop分为哪几种代理?分为两种,一种是jdk代理。它是根据接口来进行开发的。第二种是cglib代理,它是通过继承的关系来进行开发的。那么AOP底层到底使用那种代理方式?在spring中,框架会根据目标类是否实现接口来决定采用那种动态代理的方式。(所以我们不用自己考虑)我们再了解一下AOP的相关术语:Target(目标对象)︰代理的目标对象(意思就是我们需要增强的对象)Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类Joinpoint(连接点)︰所谓原创 2022-05-07 19:28:04 · 309 阅读 · 0 评论 -
SpringMVC异常处理
在SpringMVC中我们可以专门用一个组件来完成处理异常。系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试等手段减少运行时异常的发生。异常抛出的过程:(都是向上抛,最后全部交给前端控制器找到异常处理器进行异常处理)系统的Dao、Service、Controller出现都通过throws Exception向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理,如下图:我们进行了原创 2022-05-06 16:51:06 · 562 阅读 · 0 评论 -
SpringMVC拦截器快速入门
拦截器(interceptor)的作用Spring MVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。就相当于是在访问之前可以进行业务逻辑的判断,判断出到底能不能访问。拦截器的详细使用:拦截器( Interceptor)是 SpringMVC框架自己的,只有使用了SpringMVC 框架的工程才能用在<mvc:mapping path=“”/>中配置了/**之后,也可以多所有资源进行拦截,但是可以通过<mvc:exclude原创 2022-05-06 14:32:29 · 199 阅读 · 0 评论 -
Spring之jdbc-template的简单应用
后面学了mybaties这个其实就没什么用了,还是简单的写一下,经典白学。JdbcTemplate概述它是spring框架中提供的一个对象,是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和ltbernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。JdbcTemplate开发步骤1导入spring-jdbc和spring-tx坐标2创原创 2022-05-05 19:08:23 · 745 阅读 · 0 评论 -
请求数据之文件上传
文件上传的三要素1 表单项type=“file”2表单的提交方式是post3文件上传的具体代码实现过程:准备过程:首先我们先创建一个jsp文件:记住文件上传的重点:方法必须是post,提交的时候必须是多部分表单。第一步:导入fileupload和io坐标 <dependency> <groupId>commons-fileupload</groupId> <artifactId&g.原创 2022-05-04 12:41:15 · 462 阅读 · 0 评论 -
SpringMVC请求数据之获得Servlet相关API
就相当于以前说的springmvc框架自动注入。效果:控制台:原创 2022-04-27 21:19:41 · 123 阅读 · 0 评论 -
SpringMVC获得请求参数之自定义类型的转换器
自定义类型的转换器开发步骤:1定义转换器类实现接口Converter2 在配置文件中声明转换器3 在<annotation-driver>中引用转换器代码实例:效果:控制台:虽然这样没报错但是你的参数改为:这样就报错了。因为每个人的书写习惯不同,这时候我们就需要转换器了。第一步:定义转换器类实现接口Converter第二步:在配置文件中声明转换器 <bean id="ConversionService" cla..原创 2022-04-27 21:13:28 · 125 阅读 · 0 评论 -
SpringMVC请求数据之Restful风格的参数
代码实例:这个注解的要求就是这两个地方一定要相同。然后请求方式也不像以前通过?username=zhangsan来完成,而是直接通过user/quick17/zhangsan这样来传递。这只是get请求方式,我们可以通过requestMappring来完成不同的请求方式,因为requestMappring里面有属性method。通过这样的方式来完成,不同的请求方式。...原创 2022-04-27 20:12:04 · 131 阅读 · 0 评论 -
Springmvc请求参数之参数绑定注解
当我们直接通过获得普通数据的请求参数的时候,我们直接就可以获得到例如:但是当我们给的请求参数不是username而是name时,就不能打印出正确的参数,而是打印的是null,所以现在我们就可以使用参数绑定注解来完成当请求参数名称与Controller的业务方法参数名称不一致的时候,我们就需要通过@RequestParam注解显示的绑定。代码实例:效果:控制台:关于@RequestParam内部属性:我感觉这个注解有点鸡肋。就如上面这个代码的例子。如原创 2022-04-27 19:41:43 · 538 阅读 · 0 评论 -
获得请求参数之配置全局乱码过滤器(解决乱码的问题)
在获得请求参数的时候我们如果书写中文的时候,就会发生乱码的问题,例如:控制台打印的就是:就出现了乱码的问题。当post请求的时候,数据会出现乱码的问题,我们可以设置一个过滤器来进行编码的过滤代码实例:代码解释:首先的calss:是告诉springmvc框架它在哪儿。然后名字随便取。然后init-param是告诉它我要用什么编码格式。然后要为这个过滤器配置映射(也就是在哪儿执行)下面的pattern的/*代表的是针对于全部然后再运行:控制台:原创 2022-04-27 17:22:44 · 174 阅读 · 0 评论 -
SpringMVC获得请求数据
SpringMVC可以接收如下类型的参数:1基本数据类型2 POJO类型参数(就是普通的JavaBean对象)3 数组类型的参数4 集合类型参数服务器端获得请求参数,有时还要进行数据的封装。一下是代码实例讲解和解析:获得基本数据类型的参数:Controller中的业务方法的参数名称要求与请求参数的name一致,参数值会自动映射。例:我要获得下面的参数username,和age在Controller中业务方法的参数就为:首先@RequestMapping()原创 2022-04-27 17:08:44 · 235 阅读 · 0 评论 -
SpringMVC的数据响应之回写数据
回写数据的方式:1直接返回字符串2返回对象或者集合下面是代码实例和具体解析:方法1:通过response来完成:运行效果:方法2:上面的发方法是通过response来完成的,但是跟以前的方法没什么区别,也不能体现出框架的作用,接下来我们通过方法来直接返回我们通过注解@Responseboby来告诉SpringMVC返回的字符串,不是用来跳转的,而是直接在http响应体中返回的。如果没有这个注解,spring就会去视图跳转。运行结果:返回一定格式的字符.原创 2022-04-26 19:23:23 · 474 阅读 · 0 评论 -
SpringMVC的数据响应之页面跳转
页面跳转分为:1,直接返回字符串:此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转2,ModelAndView对象返回下面是代码实例和详细解析:直接返回字符串:这个视图解析器其实SpringMVC框架自己有,但是我们这样写就相当于重写了,然后根据我们自己的实际需要去进行配置。ModelAndView对象:(通过这种形式有很多的方法,下面一 一 讲解)方法1:代码解释:我们要返回ModelAndView,那么返回值肯定就要是ModelAndVie.原创 2022-04-26 16:59:21 · 1254 阅读 · 0 评论 -
关于组件扫描的详细解析
以前在学spring框架的时候,我们也用过组件扫描,现在我们学SpringMVC我们同样也会用组件扫描,当然你写在哪个配置文件中都可以完成扫描,但是我们为了好管理,我们都是各自扫各自负责的层的业务。但是扫描的时候我们怎么避免多个配置文件怎么扫描重复呢?接下来我们就详细的解说首先我们要明白组件扫描在context命名空间下。base-package就是我们要扫描的包的名字。如果这样写我们就会跟以前Spring的配置文件扫描重复,这时候我们在中间就会加入一些条件,来避免扫描重复现在我原创 2022-04-25 19:41:50 · 1398 阅读 · 0 评论 -
关于注解RequestMapping注解的解析
@RequestMapping的作用:建立请求URL和处理请求方法之间的对应关系一般用在的位置:类上:请求URL的第一级访问目录,此处不写的话,就相当于应用的根目录方法上:请求URL的第二级访问目录,与类上的使用@RequestMapping标注的一级目录一起组成访问虚拟路径下面是应用实例:应用在方法上:效果:应用在类上:效果:值得注意的是:为什么我应用在类上的时候返回值前面加了一个“/”如果不加“/”就回报404错误,找不到资源这是为什么呢?原创 2022-04-25 17:07:17 · 1767 阅读 · 0 评论 -
SpringMVC的执行过程
第一步:首先是客户端向前端控制器(DispatcherServlet)发出请求第二步:前端控制器(DispatcherServlet)向处理器映射器(HandlerMapping)请求查询Handler第三步:处理器映射器(HandlerMapping)向前端控制器(DispatcherServlet)返回HandlerExcutionChain第四步:前端控制器(DispatcherServlet)向处理器适配器(HandlerAdaptor)请求执行Handler第五步:处理器适配器(H原创 2022-04-26 15:46:26 · 189 阅读 · 0 评论 -
Spring集成WEB环境(进阶解耦合)
我们以前获取配置文件都是通过这两句代码,由于你的配置文件也就是applicationContext.xml,它的名字不一定叫这个名字,因为这个名字是可以自定义的,只是我们大家都约定熟成为这个名字,所以我们就相当于是耦合死了。而且每次都会创建一个容器,也会影响性能接下来我们就开始解耦合。我们使用Spring提供的获取应用上下文(也就是配置文件)的工具我们是相当于通过监听器,来创建容器,只要项目一运行,我们就创建容器,把它放到一个大家都能取到的地方(servletContext域原创 2022-04-15 21:43:20 · 488 阅读 · 0 评论 -
Spring集成WEB环境(简单应用)
创建项目:我们刚开始可以创建一个WEB项目(当然也可以创建一个普通的JAVA项目,然后引入WEB也行,博客最后面会展示)创建了项目之后,我们引入MAVEN框架(不会引入的,可以看我这个博客Spring程序的开发步骤创建项目以及最简单的实现_Outlier_Lin的博客-CSDN博客)然后创建一个Dao层的接口以及实现类再创建一个service层的接口和实现类这里我用了依赖注入(通过set方法),去实例化userdao(不会依赖注入的同学可以看我这个博客关于Spri原创 2022-04-15 18:16:32 · 843 阅读 · 0 评论 -
Spring集成junit
首先,我们要了解的是,基本上在利用spring开发的时候基本上每个测试类都会有如下问题这两行代码又是少不了的,因为一行是加载配置文件(配置类),一行是获得对象,所以这两行都是少不了的,整合junit就是为了解决这个问题上述问题的解决思路:Spring集成junit步骤:第一步:导入spring集成Junit坐标我们先去MAVEN的依赖关系去看一看,发现里面没有spring-test的jar包,因为spring-test就是spirng集成Junit的包现在我们导入原创 2022-04-15 12:13:03 · 891 阅读 · 0 评论 -
Spring注解开发(新注解)
为什么要用新注解呢?因为有些东西是原始注解无法替代的,前面我们使用原始注解都是在自己定义的类,可以随意增加属性和方法,但是当我们用第三方类的时候(也就是别人已经定义好的类)这个我们是无法去给它添加属性,方法,也不能去找到别人的源码去里面添加注解,还有在spring的配置文件中我们也无法给类添加组件扫描,这时候我们就要用到新注解。无法用原始注解来替代的:关于Spring的新注解:我们使用新注解要有一个思想,这个思想就是替代思想,我们要用一个核心配置的类去替代XML核心文件。.原创 2022-04-13 18:20:31 · 553 阅读 · 0 评论 -
Spring的注解开发(原始注解)
为什么要用注解来进行开发,只用配置文件不是很好?原创 2022-04-13 13:04:21 · 295 阅读 · 0 评论 -
Spring配置数据源(连接池)
首先数据源就是为了提高程序的性能而出现的。连接池的作用是为了提高性能,避免重复多次的打开数据库连接而曹诚性能的下降和系统资源的浪费;连接池是将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建和销毁的过程。这样以提高系统的性能。数据源的开发步骤:1,导入数据源的坐标和数据库驱动坐标2,创建数据源对象3,设置数据源的基本连接数据4,使用数据源获取连接资源和归还连接资源使用连接池的优势:1、资源复用:由于数据库连接得到重用,避免了频繁创建原创 2022-04-12 22:18:00 · 4301 阅读 · 1 评论 -
Spring的相关API
ApplicationContext:接口类型,代表应用上下文,可以通过其实例来获得Spring容器中的Bean对象后面的new ClassPathXmlApplicationContext,其实就是ApplicationContext的实现类,我们通过多态的方式来进行接收。ApplicationContext的实现类:主要有三种第一种new ClassPathXmlApplicationContext(),它是从根路径下加载配置文件(推荐使用这种)第二种:FileSystemXmlAp原创 2022-04-12 20:08:39 · 325 阅读 · 0 评论 -
关于Bean的子标签
constructor-org:<bean>元素的子元素,可以使用此元素传入构造参数进行实例化,也是依赖注入的时候使用的一种方式这里面的属性name的参数,指得是构造器的形式参数ref属性指的是在容器中的引用(是另一个Bean的ID)property:<bean>元素的子元素,用于调用 Bean 实例中的 setter 方法来属性赋值,从而完成依赖注入。对象的依赖注入如果通过set方法来注入就会使用这个子标签。这里的name属性里的参数指的是set方法原创 2022-04-12 19:47:08 · 426 阅读 · 0 评论 -
关于Bean标签的一些属性以及getBean()方法
id属性:Bean 的唯一标识符,Spring 容器对 Bean 的配置和管理都通过该属性完成,就相当于给 它起一个名字,到时候调用的时候就通过id来调用class属性:该属性指定了 Bean 的具体实现类,它必须是一个完整的类名,即类的全限定名。就 相当于是把类给引入进去scope属性:用于设定 Bean 实例的作用域,属性值可以为 singleton(单例)、prototype(原型)、request、session 和 global Session。其默认值是 singleton。原创 2022-04-12 19:31:02 · 685 阅读 · 1 评论 -
关于Spring的依赖注入
一 对象的依赖注入 通过set方法 (通过Bean注入,就是后面的ref)需要注入的类中要有一个属性,这个属性就是被注入的类,还要创建该属性的set方法,因为我们是通过set方法进行注入的,所以进行如下的书写然后在Spring 的核心配置文件中开始进行编写注入需要注意的是 property标签中的name属性里面填的是set方法的名字,但是要去掉set并且首字母小写,虽然看似就是属性的名字,其实不是,如果你把set方法后面的名字进行修改了,这个name里面的值也应该修改,然后后面的r原创 2022-04-12 15:49:32 · 815 阅读 · 0 评论