Servlet.service() for servlet [jsp] in context with path [/mvcTest] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException这是在用tomcat写一个小应用时遇到的错误,在网上看了不少没看明白,最终试错n次后发现了问题,前端
其实这个问题(我遇到的那种状况,可能这个报错不止我遇到的这种状况致使)的根本缘由是:.jsp页面代码致使的,由于为了实现java
前端和后台的交互,在有些jsp代码中须要后台传入相应的数据到该jsp中,因此jsp代码中就有了接收的代码段,而当咱们想跳转到该数据库
jsp页面时却没有传入相应的数据就会报上面所示的错误:空指针(由于后端没有参数传入时那么jsp中的参数就是一个空值,而后端
空值是不能进行不少操做的)。咱们有时直接跳到jsp页面成功是由于该jsp页面是不须要传入数据的。浏览器
如何处理这个问题:固然是传入相应的数据了,注意用request对象传数据时,requset对象 域空间中的数据只能存活于一个请求中,tomcat
那么就可能须要屡次setAttribute()和屡次getAttribute()mvc
固然若是在jsp页面中对 用到传入参数的相关代码块作判断也是能够的,即知足相应的条件时再执行该代码块jsp
即在jsp页面端时判断时要加上判断接收到的数据是否为null,不为空的话再执行含有参数的代码块;post
你也能够本身测试,若是你想跳到相应的页面,则直接在浏览器中访问看是否能够访问到,访问出错,那确定就说明该jsp页面是不能直接测试
访问的,可能须要传入参数,固然前提是你的代码要是正确的;
说到这里你明白的话就没必要往下看了,下面是我遇到的场景
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
固然致使这个问题的缘由可能不止我下面所说的这一种。下面我先说一下我出错时的应用场景:
我用一个servlet来管理全部的操做(简单的增删改查),其中须要查询 和 注册(增)的内容是经过表单提交的,而删除和修改
(应用中是经过id)是经过与记录绑定来实现是删除那条记录的,下面是具体的一个效果
固然进行编辑操做时须要跳转到另一个页面(modify.jsp)由于编辑是和对象绑定的在前端是这样来写的:
这句话的做用是:点击编辑时跳到 servlet中去执行modify方法,在servlet配置时我将<url-pattern>这一项配置为 *udo,而在dopost方法中我作了一些出来,
截取方法名,利用反射经过方法名来调用具体的方法(这个地方能够不用纠结,固然后面我会在其余文章中另外说这个问题),modify()方法中,我跳转到了modify.jsp页面,而且携带上了记录的id信息,因此在写modify.jsp代码的时候,确定就会出现接收id的相关信息,直接看运行吧
首先看我经过正确的方法访问到该页面:主要看浏览器的地址栏,传入了id,固然这里id是先传给servlet,servlet中的方法再转发到相应的modify.jsp页面去的,
转发的话地址栏是不会改变的,因此地址栏没有变为localhost:8080/mvcTest/modify.jsp?id=5;对这个地方不理解得话能够看一下转发与重定向的区别。
再看一下我直接访问modify.jsp页面,看到这里你可能会想我直接在url上传值过去能够访问吗?
答案固然能够:例如能够这样:localhost:8080/mvcTest/modify.jsp?id=10;可是可能会形成其余的问题,我这里是修改,若是我传入
的id数据库中没有怎么办,我仍是去测试一下:
直接传id的截图:id=100在个人数据库中是没有的,结果浏览器页面就这样一直空白