Java
文章平均质量分 57
我是坑货
这个作者很懒,什么都没留下…
展开
-
Java函数接口:Supplier
之前我们一提到Java8新特性,两个常提的stream和Lambda表达式,实际还有一个大的方向就是函数接口。但是stream和Lambda表达式,使用场景也比较多,基本一推出来,基本日常场景就能用到。但是函数接口就不一样,他需要他自己的使用场景,如果不理解,只背他的定义,实际没啥帮助。这里我就通过介绍使用场景的方式来说一下Supplier函数接口。原创 2022-11-14 10:44:39 · 3579 阅读 · 0 评论 -
Java注解:Java注解的基本认识
注解和别的源码对比,有的时候更难以理解,因为很多注解也是靠别的注解来实现的,相当于一层套一层,你对注解不熟悉,你对注解的组成注解使用以及用途肯定也不不会太熟悉。比如说我么们常用的spring注解,有的spring注解是通过别的spring注解构成的,别的spring注解是spring自定义的,自定义的注解是依靠,JDK的元注解(元注解就是用来定义注解的注解)。但是可能会对自己使用的一些注解,是干什么的,来自那个框架那个包有了解,但是具体这个注解是怎么实现,大致结构却是不清楚的。原创 2022-10-14 11:49:13 · 242 阅读 · 0 评论 -
Java默认方法的使用
首先接口在没有默认方法的时候,里面的方法都是没有实现的,需要实现类去继承,但是这时候会有一个问题,就是我有一个接口有很多个实现类,如果我们要修改增加一个属性,那就要所有的实现类都要去实现这个方法,这个工作量一下子就变大了。举个例子,Java集合框架之前是没有的foreach遍历的,那我现在想加一个foreach的方法,那就要对所有的实现类进行处理。下图是关于ArrayList的一个uml图,光这一个中间就要添加很多实现这个Collection类的实现和子接口有多少,中间实现差异有多少,这都无法解决。...原创 2022-07-26 15:42:56 · 642 阅读 · 0 评论 -
Java8函数式编程(一):
函数式编程是一个有且只有一个的抽象方法,然后可以有多个非抽象方法的接口。可以通过Lambda表达式来直接调用。实际上有段时间函数式编程还挺多推崇的,当然这都是要学习成本的,你最起码要知道什么是拉必达表达式。Java8提供了这种,实际上JDK1.8之前也有不少函数式接口可以使用:但是1.8专门加了一个function的函数接口,用来支持函数式编程,里面大概内容,虽然看着很多,但实际上主要的就是5个单词:Consumer Function Operator Predicate Supplier 通过各种类原创 2022-07-05 22:44:13 · 250 阅读 · 0 评论 -
Lombok的@AllArgsConstructor注解
lombok用了很长一段时间了,但是基本就是是只有使用@Data @Setter和@Getter这些现在都没怎么营养的东西,也没有去认真去看Lombok的文档,最近看到一个@AllArgsConstructor注解很新奇。Lombok的文档地址:Lombok官方文档首先我们拦一下它的定义:@AllArgsConstructor generates a constructor with 1 parameter for each field in your class.说人话,就是用这个注解修饰的原创 2022-04-26 22:36:22 · 26738 阅读 · 4 评论 -
Java连接远程服务器debug
日常我们debug是经常用的,但是本地还好说,远程debug就有点难度,而且有时候必须要在预演,测试环境的服务器去debug,举个例子,需要https,公网,域名之类的,测试服务器这些有些是配置的,但是你自己本地开发肯定不会有这些,就需要你自己想办法了。第一种情况就是你所用的是阿里云全家桶,或者是其他家的提供服务足够多的云服务商,你的公司又不差钱不墨迹,直接有啥用啥的话,实际上阿里云有一个toolkit的插件就可以,支持你镜像,kuberbets一大堆功能,他也可以做到远程调试。远程连接服务器前置知识原创 2022-04-19 17:58:42 · 1676 阅读 · 1 评论 -
Srpingboot注解:@ConditionalOnProperty的用法
在之前我就一直有一个想法,就是有的bean我不想注入,比如说有的时候用的是A的bean,可能换了一个不同的系统可能要用B的bean,我可不可以自己去配置什么时候注入A什么时候注入B, 而不是我都注入,用到那个用哪个。实际@Conditional@ConditionalOnProperty这一类的注解可以帮助我们,这里我们选择@ConditionalOnProperty来做。我们知道Spring有一个注解@Conditional,它的作用是按照一定的条件进行判断,配合@Bean注解,可以再条件规则的结果来判原创 2021-11-15 19:48:16 · 273 阅读 · 0 评论 -
Java的assert断言以及常见的Assert工具类
实际上Java有一个保留关键字assert,名字叫断言。断言这个东西可以看做是程序语言关于异常处理的一种高级方式。就是通过断言 <boolean表达式>这种形式以及其他形式捕获异常情况。Java中的assert也是有的,使用方法也大概是一下两种:直接接布尔表达式:assert <boolean表达式>或者在在后面加个错误信息表达式assert <boolean表达式> : <错误信息表达式>看起来很高级,很不错的样子,那为什么感觉日常看代码感觉没有原创 2021-10-19 14:27:05 · 9680 阅读 · 0 评论 -
Java的this关键字
实际上很多语言都有this这个关键字,说到底就是他到底代指什么,“哪个是哪个?”。Java是面向对象的,那this和对象是什么关系,该怎么用。先说结论:this == 当前对象(你this在那个对象里,你就是这个当前对象,比如我是一个人,人是一个类,我是人这个类别下new 出来的对象,当我做关于自己的事,我不会叫我自己的大名,而是找一个“我”来指代,我去上班,我的手机)由此展开this的用法也是围绕这个参照当前对象来使用this 当前对象本身 “我”this.方法名 调用当前对象的某个原创 2021-10-09 17:13:19 · 168 阅读 · 0 评论 -
Java的锁机制:synchronized和CAS
提到Java的知识点一定会有多线程,JDK版本不断的更迭很多新的概念和方法也都响应提出,但是多线程和线程安全一直是一个重要的关注点。比如说我们一入门就学习的synchronized怎么个实现和原理,还有总是被提到的CAS是啥,他和synchronized关系是啥?这里大概会让你对这些东西有一个认识。一 为什么要用锁我们使用多线程肯定是为了提高效率,压榨硬件的性能提高效率,假设多一个线程相当于多一个人干活,但是有时候人多了就不是很好管理,可能出现问题。比如我现在搞一个多线程的demo,我的本意是每个线程原创 2021-09-26 17:22:43 · 615 阅读 · 2 评论 -
有序的HashMap:LinkedHashMap
我们知道HashMap这个数据结构根据一个指定的值查找的时间复杂度是O(1),但是有一个问题就是HashMap是无序的比如你放进去第一个值A,但是遍历Map获取到对应的位置可能是第五个位置。那有时候我们会要求能像Map一样直接取的,但是它整体遍历下来还能是一个有顺序的数据结构。有没有这样的数据结构呢?有,这就是LinkedHashMap。LinkedHashMap在结构上是hashmap+双向链表的一个数据结构,HashMap就是存数据该咋存数据还是怎么存的,但是额外维护一个双向链表来存先后数据,最后遍原创 2021-09-13 16:31:34 · 770 阅读 · 0 评论 -
Spring的InitializingBean
之前知道spring的InitializingBean,但是没怎么关注,最近在一次代码改造的使用工厂模式和策略模式的情况下,发现InitializingBean。InitializingBean是spring为bean的初始化提供了一种新的方式,里面只有一个方法afterPropertiesSet,作用就是实现这个接口或者实现了继承InitializingBean的方法的bean都要执行这个方法。举了例子:@Componentimport org.springframework.beans.fact原创 2021-09-11 17:56:48 · 5959 阅读 · 0 评论 -
利用工厂模式和策略模式来替代if else
对于代码写到一定地步,肯定会遇到很多业务代码的繁琐的if else分支。简单的几个条件可以if else几个,但是一旦后面的条件越来越多,有没有更好的替代让代码看起来没那么臃肿。更好维护,而不是一个if一个if的看过去。其实是有的,就是工厂模式加策略模式来替代成坨的if else。一 设计模式理解首先来分析一下主要用到的两个设计模式工厂模式:实际上工厂模式写法很多,比如说根据产品还是工厂方法来区分简单工厂和工厂方法模式。根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。用于封装和管理对象的创建,原创 2021-09-11 17:08:02 · 2374 阅读 · 0 评论 -
Lombok学习和使用
之前对lombok的使用和了解就是@Data和对应的部分功能属性@Setter和@Getter,帮着我们不在自己手动创建setter代码和getter代码。但是最近去看源码发现lombok作用并不是那么单一。举个例子我们经常用的@Log和@Slf4j这两个常用的日志注解也是lombok的,而且spring官方和IDEA官方也是十分推荐使用lombok,那这个lombok具体是干什么的,都有什么功能,就很值得学习研究了。一 lombok是什么和原理官方解释Lombok 是一种 Java™ 实用工具,可用原创 2021-08-20 20:10:29 · 221 阅读 · 0 评论 -
利用hutool工具包获取API接口操作耗时
因为目前我们有一个获取关于某个逻辑的耗时情况,首先上我们可以通过最简单获取当前时间,在程序最后的结束的地方再获取一个时间,两者相减肯定能得到一个时间差来作为耗时时间。但是这个获取系统时间创建多个对象,或者是还要另外格式化时间。有没有现成的计时器工具包。其实hutool是有提供的计时器功能,而且可以分组计时(就是同时多个方法过程或者多线程同时有多个计时器,分别对应这些)。TimeInterval timer = cn.hutool.core.date.DateUtil.timer();/***原创 2021-08-17 14:12:01 · 3718 阅读 · 0 评论 -
mybaits如何防止SQL注入:mybatis的${}和#{}
其实这个mybatis的${}和#{}区别和使用,算是很古早很常见的一个基础问题了?先说结论:尽可能使用#,不使用$,因为#可以防止SQL注入。如果记不清楚,就记一句话或者是口诀:不是所有事都能靠钱能解决($号是货币符号)为什么#可以防止SQL注入?#{} 占位符,${} 拼接符#占位符对应的SQL是占位作用的,也就是形成的SQL对应的位置会用引号括起来,对于SQL来说就是一个参数而已。$它是拼接符号,不是引号括起来的,它对应一串字符是可以与SQL拼在一起的,相当于成为SQL的一部分,这就很危险原创 2021-08-16 17:48:32 · 2254 阅读 · 1 评论 -
关于redirect重定向的使用以及和二维码的结合
redirect叫做重定向,重定向其实就是最后跳转是靠浏览器去跳转的。对比的就是转发,所有的跳转都是有web服务器来跳转。上面这个图说的不全面,因为除了页面,接口请求也是可以跳转的,比如请求接口1,接口1返回一个接口2,浏览器重定向接口2.说了一下重定向的含义,说一下他的基本用处。一 页面跳转我们知道常见的servlet跳转的方式就两种,转发和重定向,转发解释收到请求返回数据跳转到指定的页面,旧的SSM或者一些spring mvc会用到,重定向也一样,只不过他返回一个别的路径,让浏览器再请求一次。原创 2021-07-28 14:37:05 · 1331 阅读 · 0 评论 -
Java Stream API
之前写过函数表达式介绍过stream的创建和一些基本使用方法,但是后来发现除了简单map,filter,distinct等API方法。实际上这些可以API组合在一起使用,有时候会有特别的思路。比如最近看的一个写法for(int i = 0 ; i< index ; i++){ List<T> insertList = list.stream.skip(i*size).limit(size).collect(Collectors.toList()); if( CollUt原创 2021-07-21 10:53:00 · 95 阅读 · 0 评论 -
Java Sort方法
Java的sort方法就是排序,而且排的是升序,你要想降序可以先获得升序的,然后倒过来或者你重新写比较器Comparator的接口就可以。一 sort 排序方法本身这里讲的sort方法,都是以Arrays类里面的方法为准,因为很多类的sort方法都是引用的Arrays类的方法,有的就是加一个比较器作为参数就完事了,比如说ArrayList的sort方法。以下是ArrayList的排序方法 @Override @SuppressWarnings("unchecked") publ原创 2021-05-07 15:42:53 · 11991 阅读 · 1 评论 -
@NotNull,@NotEmpty和@NotBlank使用和区别
实际上关于参数校验我们经常会遇到@NotNull,@NotEmpty和@NotBlank,几乎涉及到校验的工具包都会有它们的身影不管是Hibernate工具包还是Apache的校验工具包或者其他常用的工具包都会出现,有时候感觉这几个是差不多可以互相替换的。那他们具体的使用场景和区别是什么呢?一 校验要求NotNullNotNull不能为null,但可以为empty,没有Size的约束,比如说ArrayList list = new ArrayList();这个list它不是null但size为0原创 2021-05-06 16:52:05 · 1812 阅读 · 0 评论 -
BigDecimal的使用
在计算金额的时候,实际上整数,浮点数有时候有点捉襟见肘。于是math包提供了一个Bigdecimal类,所以可以学习一下这个BigDecimal的源码和使用。首先是看一下他的构造方法:看起来构建的方式很多,但实际上之间的差别很大,举个例子就是构建一个BigDecimal,String,整型实际上是有差别的,不如下面例子打印的结果: BigDecimal val = new BigDecimal(0.1); System.out.println(val); System原创 2021-04-07 11:10:24 · 136 阅读 · 0 评论 -
Java热编译热部署插件:JRebel
修改代码时,会经常遇到一个问题,就是要修改代码,虽然如果是html,css,js这些会立即生效但是像Java代码还是不行,只要涉及到代码或者配置什么的要重启服务。类似与我修改一个文件,但是想要生效要不然就是单个文件重新run一下,或者服务器像tomcat重新启动。其实也没啥问题,单个文件测试方法或者是main方法还好。但是一个工程重新跑起来就需要点时间,而且有的时候要改好几次特别消耗时间,有没有什么别的好办法能帮助自己提高效率?实际上是有的,这涉及到一个热部署热编译的概念,就是改的过程中让idea帮助我们原创 2021-03-27 14:32:15 · 535 阅读 · 0 评论 -
Java的Exception和Error以及try catch的用法
写代码可定不可能一点错误都没有,有的错误是自己的原因造成的,实际上代码还是能正常跑起来,就是业务上留了个很大的坑。但还有一些错误是代码会报错,影响操作流程的。后者常见的有Error和Exception,代码出错,代码跑不下去。所以说先从认识两者开始。一 Exception和ErrorException和Error这两个类有共同的父类,就是Throwable类。而这个Throwable类是Java的异常处理一个重要组成部分,他是唯独一个可以throw和catch的,这个抛出或者捕获的能力是Throwab原创 2021-03-25 15:09:36 · 2108 阅读 · 0 评论 -
Java函数式编程(四)Stream的常见方法和操作
这个篇幅介绍的就是Stream常见的方法和操作,之前关于stream操作,我一般直接搜写法,然后按样子改写。主要的原因不是很了解这种链式编程,每个方法间的是使用和他们之间的顺序。但其实,看下来Stream常见的方法其实不是很多,也不是很难理解,整理清楚后,以后写起stream来底气就足了。(1)mapmap这个类似于把一个stream转换成另一个stream,比如说我有一个Student关于学生信息的实体bean,大概如下:Class Student{private int studentCode;原创 2021-03-23 17:35:22 · 793 阅读 · 0 评论 -
Java函数式编程(三)Stream与List的区别和创建
之前看一本关于JDK8的书,推荐stream的一个理由是,是stream经过优化的可以发挥多核处理器的优势(忘了,但大概印象是多核)充分利用设备资源。所以说stream除了简化编程代码,实际上也提高了效率。在没看资料之前,我使用stream都是网上找例子,比如去搜索“如何List转换成map这种”。在梳理了资料后,感觉对stream的写法有了一个新的认识。一 stream到底是什么看起来stream像是一个数据结构来存数据的,实际并不是,就拿我们日常见得最多的List作比较。首先List你要创建后往里原创 2021-03-16 20:10:53 · 523 阅读 · 1 评论 -
LocalDateTime和Date的比较(JDK8新特性:时间日期API)
最近在项目升级框架查资料会涉及到LocalDateTime,当时看到这个觉得为什么大家都在用这个,为什么?说到这里我们要知道这个LocalDateTime来自哪里,实际上这个LocalDateTime是JDK8的新特性之一,JDK8发布了新的date-time API,加强对时间日期的管理。(实际上JDK8的新特性可以总结一下出个系列,虽然现在11都出来好久,但是很多人还没享受JDK8带来的便利,像lambda,方法引用,新的stream API,默认方法,optional类等,但是新的框架都已经开始更新原创 2021-03-16 16:37:24 · 3913 阅读 · 1 评论 -
Java函数式编程(二)Lamdba是个啥
谈到函数式编程一定绕不开Lambda,这玩应到底是个啥?有资料的说法是,函数式编程是基于Lambda验算的理论,所以我们把函数支持编程的编码风格叫做Lambda表达式。抛开这个对不对不谈,也就是说我们函数式编程遇到的Lambda基本都说的是Lambda表达式这个东西,我看有的资料还把这个叫做闭包(整这些词还不如叫做lambda表达式,最起码能直接看出来)。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用了Lambda思想的Lambda表达式,在使用这个 Lambda 表达式原创 2021-03-01 18:33:48 · 168 阅读 · 0 评论 -
Java函数式编程(一)何为函数式编程
实际上函数式编程已经推出很长一段时间了,JDK8开始支持,类似于我们把NIO称之为New IO实际上NIO也推出好一阵子了,已经不new。平时写代码的时候也会用到函数式编程,采用steam,lambda写法,但是都是局限在知道,了解不全面,使用的用途和写法也都是固定的几个,所以抽出时间学习一下好好了解一下函数式编程。(学习大部分参考资料来自廖雪峰老师的廖雪峰的官方网站,作为主线)函数式编程更面向过程,就是我们像写函数一样写法比如:a=b+c抽象化更类似于我们的数学计算,是一种更高抽象级别的编程范式原创 2021-02-23 20:11:35 · 130 阅读 · 0 评论 -
Java的invoke方法
如果读一些Java或者相关框架的源码,实际上一定会经常出现invoke方法的调用,在自己或者团队封装框架时,如果有时候弄得不好经常也会报invoke相关的错。invoke方法是干什么的?有什么具体用途?首先要了解invoke方法干什么的以及具体用途,实际你要搞清他在源码那个class文件上,他在那个包里,追根溯源。invoke方法来自Method类,可能不会像我们经常用到的基础类型包装类,以及集合类还有他们的扩展和工具类使用的那么多。但是Method类所在的包可是大名鼎鼎的反射Reflact,不是有原创 2021-02-08 17:36:46 · 36317 阅读 · 4 评论 -
Java Spring注解四:@Controller和@RestController
今天是12月31日,马上元旦告别2020年,走入2021.2020可以说是特别的一年,可以说是比较动荡的一年,之前聊天总喜欢说今年是最差的一年,但是往后十年来看是最好的一年,但是经历了2020,我们经过了这么多磨难,很多都是历史性时刻,新冠,贸易战,美股四次熔断,长租暴雷,最富有看点的美国大选,马拉多纳逝世等等,恨不得一年顶十年,多次见证历史,可以说我们都挺过来,相信这个世界会变好的。好了,进入正题,新的一年要把这个注解系列丰富起来:基本上Controller和RestController应该是我们sp原创 2020-12-31 18:02:35 · 318 阅读 · 0 评论 -
Java AES加密解密报错 “java.security.InvalidKeyException: Illegal key size”
项目中正常都会用到AES加密解密的问题,因为有的时候来不及设置公钥私钥,搞不对称加密,这种对称加密相对来说是比较方便的一个加密方式。与Base64比,AES相对来说破解难度要更高一些,同样你也可以往里面加盐,参与加密加强密码安全程度。但是问题也来了我们有时候用到AES加密解密会出问题,报错“java.security.InvalidKeyException: Illegal key size”,怎样排查解决出现问题的原因一,检查原始数据以及参与加密的key像这种最好就是debug一下,看一下参与加密原创 2020-12-14 17:09:00 · 1871 阅读 · 2 评论 -
JNI到底是个啥
JNI可能你看点Java的书或者JVM的书,都会提到,但是好像很多就是点到为止,也不具体说一下到底是啥,干什么的,真的是“不讲武德”。JNI全程是Java Native Interface,一句话来说就是Java的本地接口,和我们常见的很多Java方法,很多实现是由Java本身来实现的,有的时候还需要本地方法来提供相关的功能。说一句白话,就是我们平常一提到Java就说,“跨平台,可移植性强”,但是问题也来了,很多平台专门提供的能力有时候你就用不到了,A家有B家没有,你又想在A家平台用,也就说这些功能实际原创 2020-12-04 17:59:37 · 726 阅读 · 0 评论 -
Java Spring注解二:参数请求@RequestParam和@RequestBody
作为一名crud boy,关于web请求,接口处理基本是家常便饭,涉及到这些中间肯定少不了请求参数。毕竟要根据请求参数才能进行相应的操作,返回预想的结果。一般来说我们web请求参数是不能直接通过http请求来代码识别的,所以你必须要通过注解来告诉代码“不要傻等着参数像之前那样,方法间参数传递那样直接获取,作为一个成熟的web请求代码,要自己去http请求里找参数”这里用到的注解可以是@RequestParam也可以是@RequestBody,分情况来选择。但是你不用的话,那你最后得到参数可能永远都是nu原创 2020-11-12 15:37:55 · 1023 阅读 · 0 评论 -
Maven报错“找不到符号”
可能刚开始接触Maven,会遇到“找不到符号?”的报错一般来说是三种情况,一是编码不统一,二是JDK版本和maven对不上,三是pom依赖的的问题。实际项目开发中,前两种可能出现比较少,或者出现一次,调整以后就不再出现了,毕竟编码格式和版本一旦没问题,不会有人总去试图去改变的。主要是后者会可能出现,尤其是刚开始接触maven的人,举个例子:一个项目的依赖情况是这样的:zp-handsome-core-----》zp-handsome-common-----》zp-handsome-web如果涉及到三原创 2020-06-08 10:58:21 · 1307 阅读 · 0 评论 -
springboot启动图案更换
科技以换壳为生,我们看到很多自研框架,一启动就会有一个自己的logo显示出来,显得有逼格。但是一深究发现其实包装的东西不多,,甚至干脆就是把一部分独立出来做个jar包去被其他工程依赖一下。那问题来了,那么这个启动图案是在springboot上是怎么做的呢?一 首先你要有一个springboot工程这个IDEA上的new project的时候直接直接spring initiazer就可以,它实际背后也是spring.io那一套二在resource下面添加一个banner.txt三 然后去相关的网站定原创 2020-06-04 15:00:19 · 342 阅读 · 0 评论 -
Maven:快照的制作和使用
Maven可以说解决了包依赖版本这个大问题,只要是在pom文件上声明好就可以,大家拿同一份文件就不会出现缺包少宝,版本不一致的情况。现在更深一步使用Maven,举个例子我们可能回自己打一个包,这个可能是我们提供给别人的服务之类的jar包,或者是SDK,但是你在开发中不可能是一次就完美通过,涉及到版本迭代测试的情况。也就是说我们打的包不是一成不变的,所以要兼顾版本,以及测试。版本问题,迭代问题 ...原创 2019-10-12 14:09:41 · 405 阅读 · 0 评论 -
冒泡排序和插入排序
看书《数据结构与算法分析》看到插入排序时,发现怎么跟冒泡排序这么像,看得我一脸懵逼。看时间复杂度都是O(n2),但是插入排序要比冒泡排序有效率的多,看书上的定义十分痛苦,也区分不了之间有什么区别。其实两者之间的区别还是很大,冒泡排序的目的是每次排序都能把对应的一个元素送对应的位置,就像冒泡一样,第一次排序把最大的那个送到第一位,第二个把第二大的元素送到第二位置,以此类推。插入排序时,第一次原创 2018-02-05 16:31:54 · 266 阅读 · 0 评论 -
树的高度和深度的理解
树的高度和深度的理解最近回头看了一下数据结构,看到树的地方,发现之前学的东西只记住了个名字。发现很多地方对这个都有点分歧,所以我整理总结一下关于树的深度高度理解。其实基本在书上和网上看到的分歧,大概就是深度和高度到底是不是一个东西?深度和高度怎么算?(一)首先先看第一个问题,这两个东西是不是说的是一个概念。我看到知乎一个回答,是一本书的截图,他把深度和高度归结成一个概念,即树中节点的最原创 2018-01-31 10:53:51 · 2411 阅读 · 1 评论 -
Struts的校验方式
Struts的校验 Struts验证:JS,框架验证,Actionsupport验证 JS验证不用多说,要注意的是使用Struts标签时注意该赋值ID,name什么的别忘记。 框架验证,通过对类写一个对应的校验XML配置文件,文件中把条件限制写进去还有对应的提示语 Actionsupport验证,struts有对应的validate()和validateXXX()来代码校验,他会先执行对应的原创 2017-05-08 01:28:25 · 492 阅读 · 0 评论 -
Eclipse XML报错 cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be fou
Eclipse XML报错 cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element我相信很多人会遇到这个烦恼,导入工程,工程本身没有任何问题,但是会XML报错一片红。点开XML文件发现一大堆错,有关于拦截器的,有关于action,反正就是XML上一大堆的e原创 2017-06-29 01:43:13 · 5655 阅读 · 0 评论