0
点赞
收藏
分享

微信扫一扫

Web前端,那些年我们经历的bug

书坊尚 2021-09-22 阅读 50

当我们还在学javaSE的时候,仿佛感觉调试这个工具离我们很遥远,因为谈不上有什么难以解决的bug,无非就是一些空指针异常、书写上少写了一个分号、不小心把1写成了小写字母l等。可是到了web阶段,就值得专门写一篇文章讨论这个问题了。

一、web前端的乱码问题

之所以把这个列为第一位,是因为在web前端,这个bug想不遇到都难。这些bug如何解决?我的方法是分而治之。

情况一:打开.java文件,还没写代码就已经出现乱码。


解决方法:

A:(低级版)将乱码的文字直接删了,这不失为一种非常好的笨方法;

B:(高级版)点击本文件,鼠标右击选择properties,找到下面这个地方没?就是这,一般改成utf-8就行了。


情况二、前端输入了汉字,传到后端服务器出现乱码(或者后端传到前端出现乱码)。

讲真,遇到这种问题最好的办法就是写一个编码过滤器codeFilter,以后写项目的时候,直接将这个文件丢到你的filter包里面,你就可以高枕无忧了。至于什么是过滤器,聪明的你一定知道。当然,核心代码我是一定要给出来的,不然显得我不够专业,哈哈。


情况三、后端数据传到mysql数据库,在数据库中出现乱码

聪明的你一定还记得下面这一段代码:

此时你只需要添加在后面加上下面这段代码,百分之九十九就能解决上面问题,如果不能解决怎么办?你就要开始怀疑自己的人品了。


情况四、在数据库中插入一条带中文的数据时,存入之后出现乱码

解决方法:不妨在插入数据之前,加上这样一条sql语句试试?set names "GBK";

二、你还在重启tomcat服务器或者eclipse吗?

很多人有时候实在找不到bug的时候,动不动重启服务器或者eclipse,有时候确实真的能解决问题,但是这样真的好吗?以我多年(也就两个月)的找bug经验,除非eclipse卡死,正常情况下是不需要重启eclipse的。所以下次重启eclipse之前,想清楚到底是什么原因导致的。

不过经常重启tomcat服务器还是可以理解的,以我的经验来看,这两种情况是一定要重启服务器的:

A:你需要重新发布另一个项目到服务器上,这时候你不仅需要重启服务器,为了保险起见,还要把之前发布的项目从服务器中移除,否则也会出现出乎意料的问题。

B:当我们从jsp页面跳转到后端servlet的时候,肯定是需要配置路径的,路径配置好之后,一定要重启服务器,否则可能会出现404错误。首先,你的路径未必是对的,其次,服务器之前的缓存记录并没有清除。

三、SQL语句出现语法错误是什么鬼?

话不多述,请看下面:


上面有两句正确,两句错误,你能找出来吗?如果你能找出来且鬼魅一笑,说明我懂你。如果找不出来,请看下面:

当然SQL语句还有其他需要注意的地方:

A:某一项你设置ID为自增的时候,插入一条数据需要注意。

B:关于Date类型,往往需要注意java.sql.Date和java.util.Date两种类型的转换。

四、前端jsp需要注意的种种问题

A:在你写<c:if></c:if>的时候一定要想起导入核心标签库,还要注意到标签库版本的问题,版本不同也是不起作用的。还有还有,jstl/core与"之间一定不要有空格,否则一定会出错!

B:路径跳转一定要注意相对路径和绝对路径的区别,强烈建议用绝对路径,不容易出错。

一般这么写:{pageContext.request.contextPath}/main.do

C:如果你修改了CSS样式,结果浏览器的呈现的样式并没有发生改变时,一般你清空一下浏览器缓存就行了。

D:当你想获取下拉框选中的那个值的时候,一定不要用onclick方法而是用onchange方法,这对我来说是血的教训。

五:终极版调试经验

为此,我将bug分为七个等级,分别为倔强青铜、持续白银、荣耀黄金、尊贵铂金、永恒钻石、最强王者、荣耀王者

倔强青铜:空指针异常。如果不知道怎么解决,复习一下javaSE。

持续白银:语法错误。包括java语法、javascript语法、jquery语法、mysql语法。java语法和mysql语法错误的话,看后台报错提示就可以了,javascript和jquery的话,按F12看前端开发人员选项,也应该能够找出来。

荣耀黄金:书写错误。书写错误有时候是特别难找的,我一个朋友之前不小心把{pageContext.request.contextPath}写成了{pagecontext.request.contextPath},结果怎么也找不出来,因为前端调试比后端调试难度大。

尊贵铂金:前端javascript中出错。要求熟练掌握前端开发者人员选项的调试工具,就可以解决。

永恒钻石:后端出现逻辑错误。要求严格掌握后台调试工具。

最强王者:代码丑陋,这在我看来也是一种bug,因为代码可读性查、可扩展性弱,这也算不上好代码,还不如不写。

荣耀王者:代码冗长。当你啥时候能够将长长的代码提炼出来成为一个工具类,而不必每次写一个同样的功能再把同样的代码写一遍,大大节省了时间,你应该就算是web阶段的荣耀王者了。

调试心得:以我自己个人解决bug的经验来看,如果出现倔强青铜级bug,我会会心一笑,直接锁定报错的那一行,轻微地修改一下;如果出现持续白银级bug,我会先检查一下语法,如果一眼看出错误,直接修改,如果看不出来,百度一下,轻松解决;如果出现荣耀黄金级bug,我会尽快锁定书写错误的位置逐一排查,可能会慢一点,但是一定能够找到;如果遇到尊贵铂金级bug,我会优雅地打开开发者人员选项,用用控制填,用用source,偶尔用用netWork看看数据有没有正确传输,有没有收到返回值等等;如果遇到后端逻辑错误,我不会一开始就用调试工具,因为那样有点浪费时间,我会先锁定位置,在那个地方用System.out.print()输出一下自己怀疑的数据,如果不是自己想要的,问题就找到了,实在解决不了,一定要用调试工具,逐步调试,虽然耗费时间,但一定能够找到;至于最后两种,就需要个人对代码的艺术追求了,暂且可以不考虑。

本文章并不能详细告诉web前端出现的各种bug,但是对你找bug的心法一定是大有裨益的。写文章也只是分享我自己的找bug心得,难免出现疏漏差错之处,况且我个人能力有限,希望诸位同仁多多补充,以便后人乘凉。

举报

相关推荐

0 条评论