💕"Echo"💕
作者:Mylvzi
文章主要内容:Servlet使用过程中常见问题总结
前言:笔者在学习Servlet的过程中遇到了很多问题,这里总结一下
1.乱码问题
如果我们在响应报文中传输中文"你好",那么在浏览器之中显示就是"??",表示乱码
想要解决乱码问题,我们首先要清楚乱码是如何产生的,一般来说,如果出现了乱码问题,就说明有多个过程参与了编码,并且编码的方式不同,比如构造数据时使用utf8,解析数据时使用gbk,这样就会产生乱码的问题
具体来说可以通过一下两个步骤来解决乱码问题:
- 梳理清楚,程序在运行的过程中,都有哪些过程参与了编码
- 明确这些过程的具体编码方式
首先,在构造数据时是通过idea进行构造数据的,idea的编码方式是utf8
解析数据是通过浏览器进行解析的,浏览器的编码方式默认是和操作系统一致的,我的操作系统是windows简体中文版,默认的编码方式是gbk,所以浏览器的编码方式也是gbk,所以会产生乱码问题
要想解决乱码问题,就要统一编码方式,我们建议将gbk改为utf8(更容易),只需在响应报文的头部中进行设置即可
这样响应报文中的头部中就明确了编码方式为utf8,重新启动程序
乱码问题成功解决
2.出现404
404表示用户访问的资源不存在,一般来说,出现404的情况有两种:
1.写错了URL
URL 由ContextPath 和 ServletPath组成,输错,就会产生404
2.webxml配置错误
当web.xml文件中的代码输入错误时,也会触发404
3.出现405
405表示方法不允许,这在初学期经常出现,比如请求报文的方法是GET,但是没有重写doGet方法就会触发405
还有一种情况也可能会出现405
没有删除 super.doGet(req, resp);
如果没有删除,此时代码就会执行父类中的方法,同时也是方法不允许(因为父类方法中没有重写任何方法)
4.出现500
出现500,服务器内部错误,一般是你写的服务器代码中没有正确处理好异常
比如,在代码中添加:
String s = null; System.out.println(s.length());
报错:
这条消息还告诉你出错的异常类型以及所在的位置
5.出现空白界面
出现空白界面就证明没有响应报文被返回,检查代码中是否返回了响应报文
如果注释掉这部分,就会出现空白界面
// resp.getWriter().write("你好");
6.出现无法访问此网站
表示你写的服务器不能运行,一般来说是你的tomcat没有正常运行,此时就要检查tomcat是否正常运行,如果正常运行就需要检查写的ip和端口号是否正确
以上就是本文的所有内容!