分类 软件开发 下的文章

背景

项目中使用了Date,前端传递的格式为:yyyy-MM-dd。而全局配置了时间格式为:yyyy-MM-dd HH:mm:ss。导致接口请求报错。
修改过程中,查询到可以使用@DateTimeFormat注解进行参数格式化。但经过测试,发现无效。

原因

经查询,原因如下:@DateTimeFormat只会在类似@RequestParam的请求参数,也就是url传参时才会起作用。而body中以Json格式传递的参数,需要使用@JsonForma进行注解。

解决方案

如果是Url传参,使用以下方式:

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date end;

如果是Body中,以Json传参,使用:

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date end;

使用IDEA过程中,碰到了这个菜鸟级别的问题,不过鉴于我第一次使用,还是记录下。

问题

IDEA新建了Web 应用,在配置了Tomcat后,直接运行没有问题,正常启动了,但是使用调试运行过程中,出现了无法打开Debugger port的问题。
QQ截图20200612151429.png

15:11    Error running 'Tomcat 9.0.36': Address localhost:8080 is already in use

15:11    Error running 'Tomcat 9.0.36': Unable to open debugger port (127.0.0.1:8123): java.net.SocketException "Interrupted function call: accept failed"

因为在左下角弹出了错误提示,只有上面的第二个错误信息,以为是那个8123的端口被占用,来来回回改了好几个都一样。后来点开了日志,才发现是8080被占用了。

解决方案

方案一

知道了问题就好办了,这个端口明显是tomcat配置的,打开tomcat安装目录,找到conf/server.xml。修改其中的<Connector port="9888" protocol="HTTP/1.1"将port端口修改一个未被占用的,保存后重新debug就可以了(还是不行,可以重启tomcat服务试试)。
修改端口号.png

方案二

查找占用了8080端口的进程,结束掉。该方法简单暴力,但最好确认占用端口的进程是否可以随意结束。

背景

最近想学习使用下Java,下载了IDEA,配置了tomcat后,发现输出的日志信息,竟然是中文乱码,如下图所示,起初以为是IDEA的编码问题,Setting里设置了各种编码和语言,并没有起作用。
中文乱码.png

经过

网上搜了相关文章,但是试了几个并没有起作用。其中大部分是修改IDEA中Setting里面相关设置。

后来突然意识到,这应该是Tomcat输出的日志信息本来就是乱码造成的,于是有了如下解决办法。

解决

在Tomcat安装目录下,找到conf/logging.properties文件,打开后,找到 java.util.logging.ConsoleHandler.encoding的配置项,将其值修改为GBK即可。
修改前:
java.util.logging.ConsoleHandler.encoding = UTF-8

修改后:
java.util.logging.ConsoleHandler.encoding = GBK

中文乱码解决.png

解释

根据字面意思,很容易猜出来,改配置项是设置的tomcat控制台输出的log文本的编码,正是我们出现中文乱码的地方。

参考知乎 https://www.zhihu.com/question/325948326/answer/700753639

修正并简化后可分一下几步:

1、将如下内容另存为wt.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows Terminal Here"
"Extended"=""
"Icon"="C:\\Users\\Walt\\AppData\\Local\\terminal\\wt_32.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\Walt\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"

其中 "Extended"="" 为设置安装Shift右键才显示,如要直接右键即可显示,删除此项即可。
其中Walt为计算机用户名,请自行修改。

2、修改配置

0.5版本之前,如需在当前目录启动,还需要将配置中的startingDirectory项删除。
然而0.5版本之后,删除此项并不起作用,其运行目录仍在用户目录下。想要在当前目录下运行,需设置:

"startingDirectory": null