![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springmvc
文章平均质量分 87
波波仔86
生活与技术并发!
展开
-
一文了解JPA、Hibernate、Spring Data JPA之间的爱恨情仇
前言 我们都知道Java 持久层框架访问数据库的方式大致分为两种。一种以 SQL 核心,封装一定程度的 JDBC 操作,比如: MyBatis。另一种是以 Java 实体类为核心,将实体类的和数据库表之间建立映射关系,也就是我们说的ORM框架,如:Hibernate、Spring Data JPA。今天咱们就先来了解一下什么是Spring Data JPA?JPA是啥 在开始学习Spring Data JPA之前我们首先还是要先了解下什么是JPA,因为Spring Da...转载 2022-04-05 21:17:07 · 479 阅读 · 0 评论 -
RestTemplate 用法详解
上篇文章带大家学习了一下基本的微服务环境搭建,由 provider 提供服务, consumer 通过 DiscoveryClient 先去 eureka 上获取 provider 的服务的地址,获取到地址之后再去调用相关的服务。在服务的调用过程中,使用到了一个工具,叫做 RestTemplate,RestTemplate 是由 Spring 提供的一个 HTTP 请求工具。在上文的案例中,开发者也可以不使用 RestTemplate ,使用 Java 自带的 HttpUrlConnection 或者经典的转载 2020-12-01 20:48:45 · 705 阅读 · 0 评论 -
Spring如何解决循环依赖的问题
1.什么是循环依赖? what? (1)循环依赖-->循环引用。--->即2个或以上bean互相持有对方,最终形成闭环。 eg:A依赖B,B依赖C,C又依赖A。【注意:这里不是函数的循环调用【是个死循环,除非有终结条件】,是对象相互依赖关系】2.Spring中循环依赖的场景?where?①:构造器的循环依赖。【这个Spring解决不了】 StudentA有参构造是StudentB。StudentB的有参构造是StudentC,St...转载 2020-07-09 22:31:10 · 436 阅读 · 0 评论 -
面试官:你连SSO都不懂,就别来面试了
一、什么是单点登录?单点登录的英文名叫做:Single Sign On(简称SSO)。在初学/以前的时候,一般我们就单系统,所有的功能都在同一个系统上。后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。回顾:分布式基础知识比如阿里系的淘宝和天猫,很明显地我们可以知道这是两个系统,但是你在使用的时候,登录了天猫,淘宝也会自动登录。简单来说,单点登...转载 2020-04-07 23:23:59 · 237 阅读 · 0 评论 -
Spring项目中使用两种方法动态切换数据源,多数据源切换
本文介绍两种动态切换数据库的方法。方法一:数据源信息配置在xml中,适用于一般数据库切换。执行完某操作,切换数据库,执行另一个操作。方法二:数据源信息配置在默认数据源中,适用于切换数据库操作同一方法,相当于批量执行方法。两种方法核心都是AbstractRoutingDataSource,由spring提供,用来动态切换数据源。我们需要继承它,来进行操作。源码分析可以看下一篇文章源码分析...转载 2020-04-07 22:40:20 · 3032 阅读 · 2 评论 -
Spring国际化
国际化国际化也称作i18n,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数。由于软件发行可能面向多个国家,对于不同国家的用户,软件显示不同语言的过程就是国际化(举个例子,人们玩的电子游戏,通常可以选择多个语言版本,适应于多个国家的玩家)。通常来讲,软件中的国际化是通过配置文件来实现的,假设某个软件要支撑两种语言,那么就需要两个版本的配置文件。...转载 2020-04-06 18:12:01 · 287 阅读 · 0 评论 -
SpringMVC redirect中文乱码
用spring redirect中文会乱码:如下示例public String redirectTest(){ redirect:/payment/alipay?body="中文";}浏览器会出现 body=??中文乱码解决方案1、spring mvc 有自定义的org.springframework.ui.Model类用与封装url携带的参数具体方式:public S...原创 2020-03-25 22:06:07 · 616 阅读 · 0 评论 -
Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
前后端数据交互出现json数据类型不符合此种情况为前端与后端json格式不统一导致1.json 分为两种类型;(1) json 对象类型,即前端定义的Content type 为 application/x-www-form-urlencoded等(2) json字符串类型,即前端定义的Content type 为 application/json当前端定义为 application/...转载 2020-01-04 10:16:26 · 45594 阅读 · 4 评论 -
Spring @Autowired 、@Inject、@Resource三者区别
一、@Autowired1、@Autowired是spring自带的注解,通过‘AutowiredAnnotationBeanPostProcessor’ 类实现的依赖注入;2、@Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier;3、@Autowired有个属性为required,可以配置为false,如果配置为false之后,当没有找...转载 2019-12-24 14:24:49 · 234 阅读 · 0 评论 -
spring事物——try{...}catch{....}中事物不回滚的几种处理方式
当希望在某个方法中添加事务时,我们常常在方法头上添加@Transactional注解@ResponseBody @RequestMapping(value = "/payment", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) @Transactional publ...转载 2019-10-29 18:52:02 · 354 阅读 · 0 评论 -
Spring4 MVC 多文件上传(图片并展示)
SpringMVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolve实现的。Spring使用Jakarta Commons FileUpload技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。 SpringMVC上下文默认没有装配MultipartResolver,...转载 2018-12-03 21:32:45 · 234 阅读 · 0 评论 -
SpringMVC路径匹配中使用通配符
原文源自:http://elim.iteye.com/blog/2409316/@RequestMapping中指定的路径也可以使用通配符*,表示任意字符。如下的处理器方法可以映射请求/antstyle/a,可以映射请求/antstyle/b,但是它不能映射请求请求/antstyle/a/b,因为它只能映射一级路径。@RequestMapping("/antstyle/*")publi...转载 2018-12-02 11:43:26 · 4110 阅读 · 1 评论 -
freemarker报 java.io.FileNotFoundException:及TemplateLoader使用
原文源自:https://zwllxs.iteye.com/blog/996244使用过freemarker的肯定其见过如下情况: java.io.FileNotFoundException: Template xxx.ftl not found. 模板找不到。可能你会认为我明明指定了文件,并且文件存在,但是为什么就是说找不到呢? 经过研究官方的API,原来freemarker在...转载 2018-12-28 20:58:00 · 3244 阅读 · 0 评论 -
SpringMVC POI导出excel
1、Excel的基本概念工作薄:所谓工作薄是指excel环境中用来存储并处理工作数据的文件。也就是说excel文档就是工作薄。它是Excel工作区中一个或多个工作表的集合,其扩展名为xls。工作表:工作表时excel完成工作的基本单元。每张工作表是列和行所构成的“存储单元”所组成。这些存储单元被称为“单元格”,输入的所有数据保存在单元格中。2、POI核心类工作薄: HSSFW...原创 2019-03-14 16:36:54 · 621 阅读 · 0 评论 -
Spring MVC接收数组参数
Spring MVC Controller 接收ajax传来的数组参数var arry = ['1','2','3'];//就是最普通的jquery ajax向后台直接发送数据$.ajax({type:'post',url:'/demo/path',//traditional默认是false,如果是false,则传递的参数为://data[]:1//data[]:2//data...转载 2019-08-23 19:40:34 · 324 阅读 · 0 评论 -
java freemark生成doc报表(包含表格、图片)
1、技术方案freemark生成doc word文本中的图片通过调用phantomjs执行echarts,返回图片的base64编码。2、具体步骤2.1创建word模板创建一个word文档,设计好报表内容及格式,使用占位符替换掉内容。2.2word另存为xml这里选择word2013,没有选择word2003,因为2003图片一致无法渲染成功。使用nodpad++...原创 2019-08-24 10:52:10 · 821 阅读 · 0 评论 -
java基于freemark生成docx文档
之前的一平文档介绍了基于freemark生成doc的技术,但是生成的doc底层还是xml文件,在转化为pdf后,pdf内容全部为xml,参考网上的生成docx教程,自己尝试下,记录如下:1、新建一个docx文档新建一个docx文档:test.docx,内容还是使用占位符。2、修改后缀为zip,把里面word目录下的document.xml作为模板。3、生成docx...原创 2019-08-24 14:00:15 · 467 阅读 · 0 评论 -
java中word转pdf遇到的中文字体问题
记一次将word文档转为PDF文档中遇到的Maven依赖问题,在网上查找解决方案时选择了。 <dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>org.apache.poi.xwpf.converter.pdf</ar...转载 2019-08-24 21:59:28 · 6386 阅读 · 7 评论 -
SpringMVC生成zip并下载
利用JDK自带的zip相关类,在util目录下。1、生成zip文件public String createLog() throws IOException { String zipFileName = null; String logFolderPath = PathConst.LOG_PATH; File[] logFiles = tas...原创 2019-09-15 16:36:06 · 1776 阅读 · 0 评论 -
Spring MVC数据校验
应用程序在执行业务逻辑前,必须通过数据校验保证接收到的输入数据是正确合法的。很多时候,同样的数据验证会出现在不同层中,这样会导致代码冗余。为了避免这样的情况,最好将验证逻辑和相应的域模型进行绑定,将代码验证的逻辑集中起来管理。JSR303是java为Bean数据合法性校验所提供的标准框架,核心接口是javax.validation.Validator,该接口根据目标对象类中所标准的校验注解进行原创 2018-01-02 09:53:52 · 369 阅读 · 0 评论 -
JavaWeb RSA密码加密登录
原文源自:https://blog.csdn.net/qq_30038111/article/details/79261743思路:每次登录前,向后端发送请求,由RSA生成一对公钥和私钥,用redis或者数据库保存用户名对应的私钥,获取公钥中的modulus和publicExponent,分别调用String#toString(int)方法,然后传到前端,前端使用security.js加密密码...转载 2018-09-16 17:12:25 · 1239 阅读 · 1 评论 -
servlet获取ajax post请求中参数以form data和request payload形式传输的方法
HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以name=value&name1=value1的形式在请求体中。通过chrome的开发者工具可以看到,如下:get请求:RequestURL:http://127.0.0.1:8080/test/test...原创 2018-09-07 21:42:23 · 4821 阅读 · 0 评论 -
SpringMVC集成Hibernate Validator进行参数校验
1、JSR303 JSR303是java为Bean数据合法性校验所提供的标准框架,它已经包含在java EE6.0中。JSR303通过在Bean属性上标注类似于@NotNull、@Max等标准的注解指定校验规则,并通过标准的验证接口对Bean进行验证。Hibernate Validator是JSR303的一个参考实现,除支持所有标准的校验注解外,它还支持扩展注解。2、S原创 2018-02-07 19:20:19 · 700 阅读 · 0 评论 -
Spring AOP 记录操作日志
第一步,定义两个注解,Controller层注解,Service层注解。package com.iie.log;import java.lang.annotation.*;/** * Created by bo on 2017/12/25. * 用户拦截Controller层操作注解,起切点表达式作用,明确切面应该从哪里注入 */@Target({ElementType.PAR原创 2018-02-01 16:01:57 · 4642 阅读 · 7 评论 -
SpringMVC缓存注解@Cacheable、@CacheEvict、@CachePut使用
从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们缓存的方法对于转载 2018-01-05 10:48:23 · 4404 阅读 · 1 评论 -
SpringMVC使用dozer将po、dto转为vo
一、什么是dozerdozer是一个对象转换工具。Dozer可以在JavaBean与JavaBeanz之间进行递归数据复制,并且这些JavaBean可以是不同的复杂的类型。所有mapping,dozer将会很直接的将名称相同的fields进行复制,如果fields进行复制,如果field名不同,或者有特别的对应要求,则可以在xml中进行定义。二、为什么使用dozer分析多层架构的J2E原创 2017-12-27 11:09:10 · 4643 阅读 · 0 评论 -
Spring AOP对嵌套方法不起作用
今天在调研系统操作记录日志时,好多教程都是借助于Spring AOP机制来实现。于是也采用这种方法来实现。在Service中的删除日志方法上注解自定义的切点,但是执行没有生效。代码如下://尝试删除溢出日志 public synchronized void tryDelOverflowLog() { logNum++; if (logNum - LogC原创 2017-12-25 20:28:32 · 2372 阅读 · 0 评论 -
Servlet3 + SpringMVC零配置:去除所有的xml
转载来自:http://blog.csdn.net/xiao__gui/article/details/46803193编辑删除在一些基于Spring/Spring MVC的Java Web项目中,总是会有一些xml配置文件,如web.xml、applicationContext.xml等,本文的目标即消灭这些xml配置文件,用代码和注解来代替。由于本文是基于S转载 2017-12-16 11:46:28 · 1278 阅读 · 0 评论 -
@EnableWebMVC
转载源自:https://www.cnblogs.com/duanxz/p/4875153.html1、启用MVC Java config 或 MVC XML namespace想要启用MVC Java contiguration,只需要将@EnableWebMvc添加到你的一个@Configuration class即可。@Configuration@EnableWebMvcpu转载 2017-12-21 21:20:19 · 2810 阅读 · 0 评论 -
Spring资源抽象接口Resource
JDK所提供的访问资源的类(如java.net.URL、File等)不能很好的满足各种底层资源的访问需求,比如缺少从类路径或者Web容器的上下文中获取资源的操作类。为此,Spring设计了一个Resource接口,它为应用程序提供了更强的访问底层资源的能力。先来了解一下Resource 接口的主要方法:boolean exists():资源是否存在;boolean isOpen()原创 2017-12-21 19:46:32 · 565 阅读 · 0 评论 -
Spring 多线程
Spring通过任务执行器(TaskExecutor)来实现多线程和并发编程。使用ThreadPoolTaskExecutor可以实现一个基于线程池的TaskExecutor。而实际开发中任务一般是非阻碍的,即异步的,所以我们要在配置类中通过@EnableAsync开启对异步任务的支持,并通过在实际执行的Bean的方法中使用@Async注解来声明其是一个异步任务。1、首先实现Asy...原创 2018-02-28 10:11:04 · 582 阅读 · 0 评论 -
Spring条件注解@Conditional
通过活动的profile,我们可以获得不同的Bean。Spring 4提供了一个更通用的基于条件的Bean的创建方式,即使用@Conditional注解。 @Conditional根据满足某个特定的条件创建一个特定的Bean。比如,当某一个jar包在一个类路径下时,自动配置一个或者多个Bean。或者只有一个Bean创建时,才会创建另一个Bean。总的来说,就是根据特定条件来控制Bea...原创 2018-02-28 14:30:25 · 628 阅读 · 0 评论 -
Spring MVC使用jstl标签无效
1、Maven中引入依赖的jar:jstl.jar和standard.jar<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version>原创 2018-07-31 20:44:00 · 1583 阅读 · 0 评论 -
SpringMVC 用@RequestBody接收post json对象(415 Unsupported media type)
在Controller里面的参数声明成@RequestBody,前端传参必须以json格式传入,否则报415错误。1、后台controller中声明@ReuqestBody: //更新通信日志审计规则 @RequestMapping(value = "/update-comm-rule", method = RequestMethod.POST) @ResponseBody ...原创 2018-06-11 10:49:03 · 1555 阅读 · 0 评论 -
Spring整合Redis
一、前言 redis是一种特殊类型的数据库,称之为key-value存储。和HashMap有很大相似度。在大部分情况下,我们开发java项目通常会结合Spring进行整合操作。我们可以利用Spring Data面向模板的数据访问来使用Redis数据库。Spring Data Redis提供四个Redis客户端实现的连接工厂1、JedisConnnectionFactory2、Jred...原创 2018-04-13 17:26:51 · 205 阅读 · 0 评论 -
Spring缓存 @CachePut、@Cacheable和@CacheEvict
@Cacheable:当重复使用相同参数调用方法的时候,方法本身不会被调用执行,即方法本身被略过,取而代之的是方法的结果直接从缓存中找回并返回了。@CachePut:这个注释可以确保方法被执行,同时方法的返回值也被记录到缓存中个,实现缓存与数据库的同步更新。@CacheEvict:这个注释来标记要清空缓存的方法,当这个方法被调用后,即会清空缓存。查询方法上可以标注@Cacheble,更新方法可是标...原创 2018-04-15 16:43:47 · 345 阅读 · 0 评论 -
Spring 整合Ehcache
一、ehcache简介 EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点...原创 2018-04-15 15:41:11 · 180 阅读 · 0 评论 -
彻底解决Spring MVC中文乱码问题
我们在web项目中可能需要传递一些中文的参数,这时如果不进行处理,后台接收到的参数是乱码导致不能获得预期的效果。对于这种情况,首先确保我们jsp页面时utf-8编码。1、对于post请求,我们可以在web.xml配置文件中添加过滤器:<filter> <description>字符编码过滤器</description> <f...原创 2018-03-21 17:24:44 · 7139 阅读 · 0 评论 -
SpringMVC接收日期类型参数转换
在做Web开发的时候,页面传入的都是String类型参数,SpringMVC可以对一些基本的类型进行转换,但是对于日期类型的转换可能就需要我们配置,大概有3中方式可以实现。1、如果查询类是我们自己写,那么在属性前面加上@DateTimeFormat(pattern="yyyy-MM-dd"),即可将String转换为Date类型,如下:@DateTimeFormat(pattern...原创 2018-03-21 16:12:58 · 1061 阅读 · 0 评论 -
Spring整合Junit测试后配置事务
很多时候我们不希望单元测试的结果玷污了数据库,即执行的测试数据不去修改数据库,只需要告诉我们最终的测试结果即可,那么怎样也让我们的单元测试也具有事务功能呢?1、方法级别的在测试方法上添加注解@Rollback(true)。public class FooServiceTest{ @Autowired private FooService fooService; @Test...原创 2018-03-19 21:39:56 · 525 阅读 · 0 评论