MyEclipse下Servlet的简单Debug调试

网上的一些调试,大都是关于Eclipse下的java调试,但是新手在接触动态页面时往往会因为一个逗号,括号的原因而报错。这个时间调试就显得极其重要,问老师后写下此篇简单图文调试。

背景:新闻发布系统用户上传和添加图片功能时报错

操作步骤:1->进入上传图片页面

 

操作步骤:2->点击选择文件,上传图片后如下所示(比如xxx.jpg)

操作步骤:3->点击选择按钮上传图片后如下(比如xxx.jpg)

结果:上传图片未成功,Myeclipse下Console显示报错,原因如下,这里关于Java.lang.NumberFormatException问题的分析思路来源于:https://blog.csdn.net/duyusean/article/details/81183384

不在赘述解决思路,(可详细翻阅以上链接查看),此篇着重于Debug,报错信息提示我们在NesAddPicServlect的76行有错

 

开始Debug:首先我们的tomcat会是Run状态,我们在准备Debug时首先应当停止其服务,再设置断点,随后以debug的状态启动tomcat,图文操作如下

1:查看tomcat服务(Run状态)

2:停止tomcat服务,右键Tomcat 7.x,点击Stop Server,结果如下(我表示还不会截那个状态图。。。先用文字凑合下)

3:未设置断点之前(看24行最左边蓝色的竖状区域状态

4:开始设置断点(鼠标左键双击24行最左边的蓝色区域会出现一个小圆点,代表断点),即程序会从断点处开始debug

 

5:tomcat以debug状态启动,右键Tomcat 7.x,点击Debug Server,结果如下

 

6:接下来重复操作步骤1和2(注意不是Debug里面的1、2!),我们会看到MyEcplise有响应,进入MyEcplise

7:Eclipse弹出窗口,点击yes

8:Debug页面如下(不要慌,不需要看全部的英文,看keyword,比如我们的错误是null,那么我们只需要在Varibles界面里面看看哪个变量为空值即可,也就是keyword->null

9:主要使用这三个按钮,一般自己写的方法选择Step Into,遇到什么System.out.println()之内的系统自带的,就选择Step Over

参考来源:https://www.cnblogs.com/cat80/p/eclipse-debugging-beginning.html 

用命不是蛮规范,为了好记,我觉得直接翻译好些

 1)Step Into F5  进入 如有方法则进入。快捷键F5()

 2)Step Over F6 跨过 但遇到方法如果方法 内无断点则不会进行方法。快捷键F6

 3)Step Return F7退出当前调试方法 ,返回被调用的方法。快捷键F7

 

 

10:我们开始Step over,一边观察程序执行到了哪里,一边找我们的keyword,null,执行到75行,还没有执行76行代码时,我们的变量状态是这样的,可以发现并没有null的出现,页面也可以继续运行下去,只不过没有出现我们想要的结果。(PS:想让窗口最大化只需要双击左键即可,使其从最大化变为一般状态时,同理双击左键

11:Step over执行76行报错,我们可以想到是id值未取到

int id = Integer.parseInt(request.getParameter("id"));//取不到id 可是前面一个页面能够取到id值 = = 解决!

可利用System.out.println("图片test2" + request.getParameter("id"));来检验id是否为空,结果发现为null值,会在MyEclipse的控制台显示,此时我们返回到newsAddPic.jsp的页面查看其id值(newsAddPic.jsp页面的逻辑是由NewsAddPicServlet控制的,也就是说NewsAddPicServlet的值是从newsAddPic.jsp提交的数据中获取的,即id源于newsAddPic.jsp

 

12:可以看到newsAddPic.jsp也会取到id值,此时我们在20行在添加一个断点配合System.out.println()进行调试(正在进行调试的时间->点击红色按钮终止调试->添加断点->run debug)

红色按钮如下

 

13:调试进入newsAdd.jsp页面(首先进入newsAdd.jsp,再进入NewsAddPicServlet),可以发现id不为空,那么我们现在只需要考虑传输的时间是否带了id值进去,也就是我们由序号1->序号2的操作,发现问题所在!

14:代码更改如下(注意此时去掉newsAdd.jsp里面的断点,只保留NewsAddPicServlet里面的断点)

15:继续测试NewsAddPicServlet,可发现76行安全执行

16:成功!(注意76行后面的语句进入了内部或者次数太多,可以使用Step return或者直接关闭debug,使用run状态执行检验)

尾声:序号1表示MyEclipse示图,序号2表示MyEcplise示图,左键点击即可切换

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员象漂亮

感谢老板打赏!我会多多更新!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值