Java开发中涉及的各种问题

Java

跨域等问题
package com.liby.bpm.spm.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import com.liby.bpm.spm.intercept.ExcleFilterIntercept;



@Configuration
public class WebConfigurer implements WebMvcConfigurer  {
    //注入已经写好的拦截器类
   @Autowired
    private ExcleFilterIntercept excleFilterIntercept;
    //@Autowired
    //private RunRegisterIntercept runRegisterIntercept;
   
   //跨域问题处理
    public void addCorsMappings(CorsRegistry registry) {
       registry.addMapping("/**")
       .allowedOrigins("*")// 放行哪些原始域
       .allowCredentials(true)// 是否发送Cookie信息
       .allowedMethods("GET","POST", "PUT", "DELETE")// 放行哪些原始域(请求方式)
       .allowedHeaders("*")// 放行哪些原始域(头部信息)
       .exposedHeaders("Access-Control-Allow-Origin")// 暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
       .allowCredentials(false).maxAge(3600);
    }
    // 这个方法是用来配置静态资源的,比如html,js,css,等等
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
       registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }
 
    
    // 这个方法用来注册拦截器,我们自己写好的拦截器需要通过这里添加注册才能生效
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
       //注册第两个个拦截器,excludePathPatterns是取消拦截的路径                 
  
         registry.addInterceptor(excleFilterIntercept).addPathPatterns("/**/index")
         .excludePathPatterns("/index.html","/static/**");

    }
}
嵌套关闭资源

**参考:**https://blog.csdn.net/java8cn/article/details/22761855?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs

**解释:**在try( …)里声明的资源,会在try-catch代码块结束后自动关闭掉

例:

try(OutputStream out = new FileOutputStream(filepath);) {
            global_out = out;
            out.write((filepath+"inside try catch block").getBytes());
        } catch (Exception e) {
            e.printStackTrace();
        }

Mybatis

spring nvarchar 和 char

**作用:**传入的数据为null。NVARCHAR 不会对 null 进行处理,CHAR 反之

例:

 select
      #{i.id,jdbcType=CHAR}, #{i.orgid,jdbcType=NVARCHAR}, #{i.bindid,jdbcType=CHAR},
      #{i.createdate,jdbcType=TIMESTAMP}, #{i.createuser,jdbcType=NVARCHAR}, #{i.updatedate,jdbcType=TIMESTAMP},
      #{i.updateuser,jdbcType=NVARCHAR}, #{i.processdefid,jdbcType=CHAR}, #{i.isend,jdbcType=NUMERIC},
      #{i.item,jdbcType=NVARCHAR},
      #{i.warehouse,jdbcType=NVARCHAR}, #{i.plant,jdbcType=NVARCHAR}, #{i.code80Replace,jdbcType=NVARCHAR},
      #{i.maxProdQty,jdbcType=NVARCHAR}, #{i.prodPriority,jdbcType=NVARCHAR}, #{i.remark,jdbcType=NVARCHAR}
      from dual
<![CDATA[ sql ]]>

**作用:**自动转义 > <

例:

<![CDATA[
            INSERT INTO ${tableNames.mainTable}(ID,BINDID,ITEM,CHANNEL,WAREHOUSE_DESC,SUB_CHANNEL)

            SELECT GET_UUID(), #{bindid,jdbcType=CHAR}, ITEM, CHANNEL, WAREHOUSE_DESC, SUB_CHANNEL FROM
            (
                SELECT ITEM,CHANNEL,WAREHOUSE_DESC,SUB_CHANNEL FROM BO_ACT_DPM_FCSTSUM_BACKUP
                WHERE VERSIONID <= (SELECT CREATEDATE FROM BO_EU_SPM_SUPPLAN_PROCESS WHERE BINDID = #{bindid,jdbcType=CHAR})
                    AND CAMPAIGN IN (SELECT * FROM TABLE(F_CAL_CAMPAIGN(#{yearMonth,jdbcType=CHAR}, #{months,jdbcType=CHAR})))
                    AND (CLASS_DESC, SUB_CHANNEL) IN (SELECT CU.CLASS_DESC, CU.SUB_CHANNEL
                FROM BO_EU_SPM_SUPPLAN_PROCESS PRO
                LEFT JOIN BO_EU_SPM_CLASS_CHANNEL_USER CU
                    ON PRO.CREATEUSER = CU.USERID AND PRO.CLASS_DESC = CU.CLASS_DESC
                WHERE CU.CHANNEL = #{tableNames.channel,jdbcType=CHAR})

                UNION

                SELECT ITEM,CHANNEL,WAREHOUSE_DESC,SUB_CHANNEL FROM BO_EU_SPM_FCSTASS_BACKUP
                WHERE VERSIONID <= (SELECT CREATEDATE FROM BO_EU_SPM_SUPPLAN_PROCESS WHERE BINDID = #{bindid,jdbcType=CHAR})
                    AND CAMPAIGN IN (SELECT * FROM TABLE(F_CAL_CAMPAIGN(#{yearMonth,jdbcType=CHAR}, #{months,jdbcType=CHAR})))
                    AND (CLASS_DESC, SUB_CHANNEL) IN (SELECT CU.CLASS_DESC, CU.SUB_CHANNEL
                FROM BO_EU_SPM_SUPPLAN_PROCESS PRO
                LEFT JOIN BO_EU_SPM_CLASS_CHANNEL_USER CU
                    ON PRO.CREATEUSER = CU.USERID AND PRO.CLASS_DESC = CU.CLASS_DESC
                WHERE CU.CHANNEL = #{tableNames.channel,jdbcType=CHAR})
            )
        ]]>

Oracle

不要使用LONG,使用CLOB

参考:官网:https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT513

LONG和CLOB的差别:https://www.geeksforgeeks.org/difference-between-longs-vs-lobs/[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IWRQUvGJ-1626258218840)(D:\学习资料\学习笔记\image\工作技术文档\image-20210622170821430.png)]

无法在源表获得一组稳定的行

解决方案:在on的条件中加上ID判断

例子:

MERGE INTO ${tableNames.detTable} DET USING(
            SELECT CAL.GT_FCSTADVICE_QTY, CAL.MATKLE,CAL.ZONE,CAL.CAMPAIGN,CAL.WAREHOUSE,DET.ID FROM
            (SELECT ID,ITEM,SUB_CHANNEL,CAMPAIGN,WAREHOUSE_DESC FROM ${tableNames.detTable} WHERE BINDID = #{bindid,jdbcType=CHAR}) DET
            LEFT JOIN BO_EU_SPM_79ADJUSTSALE_GT_CAL CAL
            ON DET.ITEM = CAL.MATKLE AND DET.SUB_CHANNEL = CAL.ZONE AND DET.CAMPAIGN = CAL.CAMPAIGN AND DET.WAREHOUSE_DESC = CAL.WAREHOUSE
            ) TEMP
    
    
            ON (DET.ITEM = TEMP.MATKLE AND DET.SUB_CHANNEL = TEMP.ZONE AND DET.CAMPAIGN = TEMP.CAMPAIGN AND DET.WAREHOUSE_DESC = TEMP.WAREHOUSE AND DET.ID = TEMP.ID)
    -- 加上了ID的判断
    
    
            WHEN MATCHED THEN
            UPDATE SET DET.ASGN_FCSTADVICE_QTY = NVL(TEMP.GT_FCSTADVICE_QTY,0)
            WHERE BINDID = #{bindid,jdbcType=CHAR}
保存小数点前无‘0’的问题

**参考:**https://www.cnblogs.com/zcy_soft/archive/2012/01/06/2314102.html

例子:

-- 实际开发中的使用
select rtrim(to_char(ROUND(1/2,5), 'FM90D9999'), to_char(0, 'D')) from dual;
条件判断合集

例:select 1 from dual where field > 0

例:^((?:19|20)\d\d)(0[1-9]|1[012])$

例:

UPDATE BO_EU_SPM_CLASS_CHAN_USER_OPS SET VERIFY_RESULT = CONCAT(VERIFY_RESULT,'品类编码不存在;')
WHERE NOT EXISTS(SELECT DEF2 FROM BO_ACT_DPM_HANA_CPBMSJ_FULL WHERE DEF2 = CLASS_CODE);

例:``

取两值中最大的

方法一:

**作用:**比较两个值,获取最大的那个

语法:DECODE(SIGN(A - B), 1, A, B)

例:

SELECT DECODE(SIGN(NULL-11),1,'10','11') AS TEMP FROM DUAL;

方法二:

**作用:**比较()内的数据并取最大值

例子:

select GREATEST(1,232,2.3,2-4,3*3,0) from dual;
-- 结果为232
加减乘除问题

**作用:**数值运算

注意:数字 * NULL = NULL,数值 与 NULL 值进行任何数学运算,结果都为**NULL**

例:

SELECT
    CASE
    WHEN MAIN.SKU_FOR_SPECIAL_SUP = '否' THEN ROUND(D.FSCTWHOLEMONTH_UTD_QTY, 5)
    WHEN MAIN.SKU_FOR_SPECIAL_SUP = '是' THEN
    ROUND(NVL(D.FSCTNONMONTH_UTD_QTY, 0), 5) +
    (ROUND(NVL(MAIN.SALES_QUARTER_AVG, 0), 5) * 0.5) +
    (ROUND(NVL(D.FSCTWHOLEMONTH_UTD_QTY, 0), 5) * 0.5)
    END AS ASGN_FCSTADVICE_QTY,D.ID
FROM dual;
ROUND

**作用:**Round函数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。除数值外,也可对日期进行舍入运算。

语法:ROUND(number,num_digits)

例:

Round(数值,保留的小数位数)
Number:需要进行四舍五入的数字。
Num_digits:指定的位数,按此位数进行四舍五入。
其中,如果 num_digits 大于 0,则四舍五入到指定的小数位。
如果 num_digits 等于 0,则四舍五入到最接近的整数。
如果 num_digits 小于 0,则在小数点左侧进行四舍五入。

=ROUND(2.649, 1)2.649 四舍五入到一个小数位 (2.6)
=ROUND(-5.574, 2)-5.574 四舍五入到两小数位 (-5.57)
Clob

**作用:**存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集

**语法:**sql : (bigData).getClobVal()

参考:Oracle clob怎么存储超过4000长度的数据,你了解吗_蓝关故人-CSDN博客

例:

select 
    (VERSIONID_CAMPAIGN_TYPE_XML).getClobVal()    --换一种Clob格式
from 
dual;
IN

注意: COLUMN NOT IN ('',COLUMN) 相当于 COLUMN != '' & COLUMN != COLUMN ,如果()中包含NULL'',那么返回来的集合是空集。因为 column != '' 永远为 false。解决方案:使用 exists()

例:

-- 错误
select 1 from dual where 333 NOT IN (SELECT MATKLE FROM BO_ACT_DPM_QD_XL_CPBMSJ);

-- 正确
select 1 from dual where NOT EXISTS (SELECT MATKLE FROM BO_ACT_DPM_QD_XL_CPBMSJ WHERE MATKLE = '333');
MERGE INTO

语法:

oracle Merge Into 用法 - 简书 (jianshu.com)

oracle:https://oracle-base.com/articles/9i/merge-statement

例子:

MERGE INTO catalog1 s1 USING catalog2 s2 ON (s1.id = s2.id) 
WHEN MATCHED THEN UPDATE SET s1.price = s2.price  
WHEN NOT MATCHED THEN INSERT (id, item, price) values (s2.id, s2.item, s2.price)
时间格式化

语法:

TO_CHAR(CREATEDATE, 'YYYY-MM-DD HH24:MI:SS') AS CREATEDATE

时间问题

当月第一天:

TRUNC(TO_DATE('2021-07-01','YYYY-MM-DD'),'MONTH')

当月最后一天:

2021-07-31 00:00:00:TRUNC((last_day(sysdate)))TRUNC(ADD_MONTHS(TO_DATE('202106', 'YYYYMM'),1),'MONTH') - 1/86400)

某一天的最后一秒:

2021-07-31 23:59:59:(TO_DATE('2021-07-31', 'YYYY-MM-DD')+1 - 1/86400)

行转列

语法:PIVOT (?)

SQL行转列,列转行 - 简书 (jianshu.com)

例:

例子:
SELECT *
    FROM (
        SELECT M.EPLATFORM,
               M.WAREHOUSE,
               M.CAMPAIGN,
               M.MONTHDMDREQ,
               M.NATURALWEEK1,
               M.NATURALWEEK2,
               M.NATURALWEEK3,
               M.NATURALWEEK4,
               M.NATURALWEEK5,
               M.NATURALWEEK6,
               M.MATNR,
               N.MONTHDMDREQ LASTMONTHDMDREQ
        FROM BO_EU_DPM_EC_EPDEMANDDET M
                 LEFT JOIN BO_EU_DPM_EC_EPDEMANDLATEST N
                           ON M.EPLATFORM = N.EPLATFORM AND M.CAMPAIGN = N.CAMPAIGN AND M.WAREHOUSE = N.WAREHOUSE AND
                              M.MATNR = N.MATNR
        WHERE M.BINDID = 'fe1bdb43-90ce-41bf-a1d6-9a5c2c3f9a88') PIVOT ( MAX(MONTHDMDREQ) MONTHDMDREQ,
            MAX(LASTMONTHDMDREQ) LASTMONTHDMDREQ,MAX(NATURALWEEK1) NATURALWEEK1,MAX(NATURALWEEK2) NATURALWEEK2,
            MAX(NATURALWEEK3) NATURALWEEK3,MAX(NATURALWEEK4) NATURALWEEK4,MAX(NATURALWEEK5) NATURALWEEK5,
            MAX(NATURALWEEK6) NATURALWEEK6 FOR CAMPAIGN IN (202104))
转换

语法:N'' -> SELECT N'' test from daul

例:

SELECT N'' AS MATNR, 0.0 AS MATNR FROM BO_EU_DPM_EC_EPSUMADJUST WHERE BINDID = 'cfb619d5-88fa-4cf8-a423-a33b76629019' AND CAMPAIGN = '202104';
replace

语法:replace(字符串,'要替换的字符','替换后的字符')

例:

SELECT replace('1-2-3','-','') MONTH FROM dual;
concat

语法:concat(字符串1, 字符串2)

例:

SELECT CONCAT('字符串1', '字符串2') FROM dual;

-- 结果:
-- 字符串1字符串2

instr

**语法:**instr(需要判断的字段, 关键字)

例:

-- instr(字段,’关键字’)>0相当于 字段 like ‘%关键字%’ 
-- instr(字段,’关键字’)=1相当于 字段 like ‘关键字%’ 
-- instr(字段,’关键字’)=0相当于 字段 not like ‘%关键字%’ 

SELECT * FROM A WHERE instr(STATUS,'这是个空字段')=0 

-- 特殊用法
select id,name  from  user where instr(901678,901669, id) > 0-- 它等价于 
select id,name  from  user where id = 901678 or id = 901669

decode

语法:decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

decode(X,A,B,C,D,E)

这个函数运行的结果是,当X = A,函数返回B;当X != A 且 X = C,函数返回D;当X != A 且 X != C,函数返回E。 其中,X、A、B、C、D、E都可以是表达式。


exists

**语法:**exists(子查询)

例:

表示()内子查询语句返回结果不为空说明where条件成立就会执行主sql语句,如果为空就表示where条件不成立,sql语句就不会执行。

not existsexists相反,子查询语句结果为空,则表示where条件成立,执行sql语句。负责不执行。


nvl

语法:NVL(E1, E2)

解释:如果E1为NULL,则函数返回E2,否则返回E1本身


nvl2

语法:NVL(E1, E2, E3)

解释:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2


Sec-?-?:Header

https://www.cnblogs.com/fulu/p/13879080.html


DB link

语法:

create database link 自定义要连接的数据库名字
  connect to username identified by password
  using '(DESCRIPTION =                       
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ip/域名)(PORT = 端口号))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = bpmdvp)
    )
  )';

查询当前数据库已创建哪些连接:

select * from dba_db_links

参考网站:

https://www.cnblogs.com/Marydon20170307/p/8831134.html

MINUS

**语法:**表1 minus 表2

**解释:**取两表的差集。表1 - 表2 = 差集


创建函数/自定义返回类型

语法:

CREATE OR REPLACE TYPE "BPMQA"."T_CAMPAIGN" AS OBJECT(CAMPAIGN    VARCHAR2(10)); -- 创建类型CREATE OR REPLACE TYPE "BPMQA"."T_CAMPAIGN_TABLE" AS TABLE OF T_CAMPAIGN; -- 根据类型创建收集类型-- 以上一定要按顺序下来

解释:在copy一个函数的过程中,出现了PLS-00201: 必须声明标识符 ‘XXX’,具体的提示是说函数返回类型没有定义,然后按照上面的代码创建类型和收集类型,然后保存,在查询中使用一次函数来检测是否能正常运行即可。

官方文档

listagg 列转行

语法:

listagg(列名, '连接符') within group(order by 列名)

例子:
SELECT listagg(EXTTEXT2, '/') WITHIN GROUP ( ORDER BY DICTKEY) FROM BO_ACT_DICT_KV_ITEM WHERE DICTKEY = 'DPM.EC.SALES.EP';

**解释:**先在BO_ACT_DICT_KV_ITEM中根据WHERE条件获取到结果集,然后在这个结果集的基础上进行分组WITHIN GROUP,随后获取分组后的结果集中的EXTTEXT2字段,并在每一个的EXTTEXT2字段后拼接/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4gEgBNpi-1626258218850)(D:\学习资料\学习笔记\image\工作技术文档\image-20210322143324834.png)]

UNION & UNION ALL

作用:

UNION:对多个结果集进行并集操作并且去除重复结果,同时进行默认规则的排序
UNION ALL:仅仅对多个结果集进行并集操作,不去除重复记录,不进行排序按照关联的次序显示数据
其他操作:
INTERSECT:对多个结果集进行交集操作并且去除重复结果,同时进行默认规则的排序
MINUS:对两个结果集进行差操作并且去除重复结果,同时进行默认规则的排序
游标

https://blog.csdn.net/mmake1994/article/details/86373918

Mysql

limit

**坑:**排序+分⻚

​ 可能出现重复数据。因为重复数据行有二义性。

解决方案:

-- 排序中存在相同的值时,需要再指定⼀个排序规则,通过这种排序规则不存在⼆义性。-- 可以在后⾯追加⼀个主键排序

spring

事务手动回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务手动回滚
限制上传文件大小
spring.servlet.multipart.maxFileSize=xxMB #设置单个文件大小

spring.servlet.multipart.maxRequestSize=xxMB #设置单次请求的总大小

用处:和 server.tomcat.max-http-post-size 这个一起用解决下面的问题[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iYcRtWL1-1626258218853)(D:\学习资料\学习笔记\image\工作技术文档\image-20210114103949005.png)]

HTTP POST内容大小
server.tomcat.max-http-post-size=2MB # Maximum size of the HTTP post content.设置HTTP post内容的最大大小
请求体大小
server.tomcat.max-swallow-size=2MB #Maximum amount of request body to swallow. 请求体吞吐量的总计大小

Git

预览删除文件

命令:git rm -r -n --cached 删除的文件路径

**作用:**预览将要删除的文件,-n不会执行删除操作

例:

git rm -r -n --cached src/main/webapp/WEB-INF/workfiles/*

结果:
rm 'src/main/webapp/WEB-INF/workfiles/10/2/6c92a225c3c2448aad3f143e2bb2132c.png'
rm 'src/main/webapp/WEB-INF/workfiles/10/2/9782d8c2b78342308a46bfa6d6f0ccde.png'
rm 'src/main/webapp/WEB-INF/workfiles/5/11/0b1f2fa39b4c4484a81609865d89e7e4.doc'
rm 'src/main/webapp/WEB-INF/workfiles/5/11/11f592bcc56b4307be5a414c6c599a8b.docx'
rm 'src/main/webapp/WEB-INF/workfiles/5/11/13b46a740e3a49149eb58f212f688b7b.docx'
rm 'src/main/webapp/WEB-INF/workfiles/5/11/22a547a1fb144b81997dbe9e5835ba3b.docx'
删除文件

命令:git rm -r --cached 删除的文件路径

作用:删除文件。将文件/文件夹及其内容在git仓库(本地)中删除,并取消追踪

例:

git rm -r --cached src/main/webapp/WEB-INF/workfiles/*

结果:
rm 'src/main/webapp/WEB-INF/workfiles/10/2/6c92a225c3c2448aad3f143e2bb2132c.png'
rm 'src/main/webapp/WEB-INF/workfiles/10/2/9782d8c2b78342308a46bfa6d6f0ccde.png'
rm 'src/main/webapp/WEB-INF/workfiles/5/11/0b1f2fa39b4c4484a81609865d89e7e4.doc'
rm 'src/main/webapp/WEB-INF/workfiles/5/11/11f592bcc56b4307be5a414c6c599a8b.docx'
rm 'src/main/webapp/WEB-INF/workfiles/5/11/13b46a740e3a49149eb58f212f688b7b.docx'
rm 'src/main/webapp/WEB-INF/workfiles/5/11/22a547a1fb144b81997dbe9e5835ba3b.docx'

删除远程分支

命令:git push <远程仓库名> --delete <要删除的远程分支名称>

作用:删除远程分支。将分支在远程仓库中删除

例:

git push origin --delete test3

Maven

仓库配置

**参考:**https://maven.aliyun.com/mvn/guide。阿里云Maven官方网址

手动安装jar包到本地仓库

命令:mvn install:install-file -DgroupId=com.oracle(看pom) -DartifactId=ojdbc6(看pom) -Dversion=11.2.0.4.0(看pom) -Dpackaging=jar(类型) -Dfile=ojdbc6.jar(要安装的jar文件名称)

**作用:**将外部jar包安装到本地仓库

例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n4idgKpi-1626258218861)(D:\学习资料\学习笔记\image\工作技术文档\image-20210223112102038.png)]

H:\jiashi\project\AWSBPM2\bin\jdbc>mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4.0 -Dpackaging=jar -Dfile=ojdbc6.jar
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom ---
[INFO] Installing H:\jiashi\project\AWSBPM2\bin\jdbc\ojdbc6.jar to C:\Users\wsw16\.m2\repository\com\oracle\ojdbc6\11.2.0.4.0\ojdbc6-11.2.0.4.0.jar
[INFO] Installing C:\Users\wsw16\AppData\Local\Temp\mvninstall5884046384908393654.pom to C:\Users\wsw16\.m2\repository\com\oracle\ojdbc6\11.2.0.4.0\ojdbc6-11.2.0.4.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.641 s
[INFO] Finished at: 2021-01-27T15:22:49+08:00
[INFO] ------------------------------------------------------------------------

Tomcat

IDEA乱码问题

更改地方:


​ idea的tomcat的VM options = -Dfile.encoding=UTF-8

​ tomcat安装目录的logging.properties

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值