spring构建tomcat10注意事项,tomcat控制台乱码

起因

先说一下各项版本

  • SpringMVC5.x
  • JDK11
  • Tomcat8/10

最近在学SpringMVC的时候,看到了Tomcat8.x解决了get乱码的问题,但是post乱码的问题没有解决。Tomcat10.x解决了这个问题,本以为很快就能将其构建好,结果…
在这里插入图片描述

在这里插入图片描述
总之就是各种各样的报错,期间查阅了很多文档,万分感谢

原因

  • Tomcat基于Jakarta EE 9,其中api的包名从javax更改到Jakarta
  • 对于SpringMVC5.x来说,DispatcherServlet属于javax包下

解决方案

  • 降低Tomcat到10以前版本
  • 升级到SpringMVC6.x(还未攻克)

SpringMVC6.x支持相关JDK版本
你好
可以看到Spring6.x 仅支持jdk17及以上的版本(这是我瞎搞了两三天才看到的…),而我是jdk11,算了不搞了…

tomcat10注意事项

tomcat10有了很多新特性,有了许多新的坑。下面我说一下这两天我了解到的一部分。

导入tomcat10依赖

注意,这里是jakarta不是javax

		<dependency>
            <groupId>jakarta.servlet.jsp</groupId>
            <artifactId>jakarta.servlet.jsp-api</artifactId>
            <version>3.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>5.0.0</version>
            <scope>provided</scope>
        </dependency>

tomcat10 web.xml文件

在这里插入图片描述
tomcat10与之前版本的web.xml是不同的,可以自行在tomcat安装包目录下的conf文件下的web.xml文件中找到配置文件(大概在18行左右),当更改配置文件不出意外的的话,应该会出现标签报红的情况。需要在找到tomcat安装包下的bin/servlet-api.jar文件,将其部署到项目src/main/webapp/WEB-INF/lib中。

tomcat 乱码问题

写在前面:刚开始不管怎么设置都乱码,后面不管怎么样设置都正常…

之前在学javaweb的时候,tomcat在控制台乱码的问题已经解决了,这次又出现了这个问题。查阅了很多的资料,都没有解决这个问题,甚至原先正常的get方式获取的数据也变成了乱码

乱码原因

  1. tomcat控制台输出文件默认编码格式为UTF-8
  2. windows默认编码格式为GBK
  3. idea默认文件编码格式为GBK
    在这里插入图片描述

所以乱码问题从启动方式上可以分为两种

  1. startup.bat启动的tomcat,因为原因1,2造成
  2. idea控制台server乱码的原因,因为原因1,3造成

解决方法

startup.bat启动乱码

这种不是很有必要解决,因为我们平常也不会从startup.bat文件中启动tomcat,如果你真的想改,可以把conf/logging.properties文件中的UTF-8改为GBK,但是控制台会乱码(我的idea是这样的)
在这里插入图片描述

控制台乱码

在这里插入图片描述

  1. 将conf/logging.properties文件中的GBK改为UTF-8
  2. idea点击Help=>Edit Custom VM Options,添加

-Dfile.encoding=UTF-8
-Djdk.util.zip.ensureTrailingSlash=false
-javaagent:C:\Users\Public.jetbrains\jetbrains-agent-v3.2.1.c46b.ed7=by https://zhile.io

  1. 重启idea,如果还不行,可以试一下格式化idea,重新操作一下(重装能解决大部分问题…)

get乱码

如果你的tomcati是8之前的版本,那么页面在通过get方法传输数据时,你获取的数据可能会乱码。这是因为8之前的版本传输数据用的是西欧的ISO-8859-1编码集,8-9解决了get方式的乱码,10解决了get和post方式的乱码。
在conf/server.xml文件如下图位置加入URIEncoding=“UTF-8”,post乱码在项目web.xml文件中设置编码过滤器即可(应该也能直接解决get问题)
在这里插入图片描述

<!--配置Spring的编码过滤器-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

ps:后续文章还会更新,如有错误,还望指正

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
tomcat乱码控制台白字是指在Tomcat控制台中,输出的白色字体出现了乱码的情况。这个问题可以通过以下解决方案解决。 首先,我们可以尝试修改Tomcat的配置文件,将字符编码设置为UTF-8。在Tomcat的conf目录下找到catalina.sh(或catalina.bat),打开文件,在文件中找到JAVA_OPTS选项,添加一行代码:-Dfile.encoding=UTF-8,保存并重新启动Tomcat。这样做的目的是确保Tomcat使用UTF-8字符编码来处理输出的文本,从而避免乱码问题。 如果上述方法没有解决问题,我们可以尝试修改Idea的配置来解决乱码。可以在Idea的安装目录下找到bin目录,打开idea.exe.vmoptions(或idea64.exe.vmoptions)文件,添加一行代码:-Dfile.encoding=UTF-8,保存文件并重启Idea。这样做的目的是确保Idea使用UTF-8字符编码来处理输出的文本。 另外,还可以尝试在具体的项目中修改编码设置。在Idea中打开项目,找到项目的配置文件,一般是web.xml或者application.properties文件,将字符编码设置为UTF-8。例如,在web.xml中添加以下内容: ```xml <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 这样可以确保项目在处理请求和输出响应时使用UTF-8字符编码。 综上所述,如果遇到Tomcat乱码控制台白字的问题,可以尝试修改Tomcat的配置文件、Idea的配置文件或者具体项目的配置文件来解决。根据具体情况选择适合的解决方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值