JSP中的Java代码报错该如何定位问题?

众所周知,JSP中是可以写Java代码的,只需要在JSP文件中加上<%%>即可。有时候我们程序出现异常,查看日志的时候,发现日志显示的异常代码行号跟实际问题代码位置完全对不上,这就很头大。

比如下面这个空指针异常,显示异常位置是在这个JSP文件的第319行

java如何在后台快速定位到错误信息 java报错怎么定位错误_tomcat

而实际这一行代码仅仅是个大括号,怎么可能出现空指针呢?可是如果不知道具体哪一行代码报错,我们该怎么定位问题呢!

java如何在后台快速定位到错误信息 java报错怎么定位错误_java_02

其实只要你仔细看一下日志信息就知道猫腻了,日志里写的报错文件名是EditUserForm_jsp.java,我们程序里源码文件名是EditUserForm.jsp,这是两个文件,当然代码行号不一样了。

JSP(全称Java Server Pages),文件中HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示。最终,JSP文件会通过Web服务器的Web容器先转化为一个Java文件(也就是上面报错日志里的EditUserForm_jsp.java),再编译成一个Servlet(.class文件),用来处理浏览器的各种请求。

所以我们应该找到EditUserForm_jsp.java这个文件,然后去看这个文件中的第319行是什么。那么这个文件放在什么位置呢?它其实在Tomcat的work目录下面。我们服务器Tomcat名字叫WEB,你的应该D:\DevTools\apache-tomcat-8.0.53\work\

java如何在后台快速定位到错误信息 java报错怎么定位错误_jsp_03

在这个目录下找到报错的那个文件,然后看第319行是什么,这个时候就很容易看出来,fields.get("per_city")这个值有可能为空,而对空值进行强转String可不就空指针了嘛!

java如何在后台快速定位到错误信息 java报错怎么定位错误_tomcat_04