JavaWeb阶段错误处理

问题一

问题描述

在配置Servlet的编码时出现错误, 如下所示

无法为上下文[/servlet]设置响应编码,因为该上下文已初始化

原因分析

IDEA配置的热部署没有生效或者浏览器存在缓存

错误处理

手动重启tomcat服务器

问题二

问题描述

tomcat在控制台中输出中文乱码

原因分析

windows 10中文系统的字符编码集默认为gbk

错误处理

  1. 修改windows 10系统的控制台的字符编码集

    区域与语言设置–>管理语言设置–>更改系统区域设置–>勾选utf-8

    ==仅仅修改上面的配置后, tomcat在控制台输出中文还是乱码==

  2. 在tomcat服务器的配置选项, 即Edit Configurations中的VM options设置-Dfile.encoding=UTF-8

    ==控制台中文输出乱码的问题被解决, 但是控制台的日志输出还是乱码==

  3. 配置IDEA启动JVM时的编码, 即在Help–>Edit Custom VM options中设置-Dfile.encoding=UTF-8

    ==控制台的中文乱码问题完全被解决, 但是发现网页显示出现乱码==

  4. 下载插件Charset修改浏览器的默认编码为utf-8

    ==缺点: 某些网站的登录页面可能是gbk编码, 此时会乱码==

问题三

问题描述

webapp目录下的index.jsp无法加入到out目录中, 导致网页无法定位到jsp文件

原因分析

因为将webapp目录移动到了main目录下, 但是项目projects structure中没有设置

错误处理

手动将所有的.jsp文件添加到生成的out目录中

问题四

问题描述

所有配置正常, 但是由tomcat生成的out目录中没有包含编译Servlet类后的字节码文件夹classes, 导致Servlet Not Found错误

原因分析

暂时未知, 可能是IDEA的bug, 或者是由于使用了maven父子工程来创建web项目

错误处理

  1. 找到项目对应的.iml文件, 该文件可能会由于一些之前的设置被隐藏
  2. 删除iml文件中的<component name="NewModuleRootManager"></component>部分的代码块

   转载规则


《》 熊水斌 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
JDBC阶段错误处理MySQL 8.0+版本 问题一问题描述在进行数据库连接时, 连接信息都已经”正确”配置, 结果报错 java.sql.SQLException: Access denied for user '24563
2022-11-11
下一篇 
Java简单语法命令行操作 dos命令 解释 dir 列出当前目录下的文件和文件夹 md 创建目录 rd 删除目录 cd 进入到指令目录 .. 上一级目录 . 当前目录 \ 根目录 del 删除文件
2022-11-11
  目录