Servlet.service() for servlet jsp threw exception

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet.service() for servlet jsp threw exception相关的知识,希望对你有一定的参考价值。

谢谢你刚给我回答。因为是新手,下午查了好久的资料,也没解决。提示的错误都是Servlet.service() for servlet jsp threw exception
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
这一类的。
<?xml version="1.0" encoding="UTF-8"?>
我的web.xml里面有
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>RPS</servlet-name>
<servlet-class>com.blj.netsales.servlet.RegProcessServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RPS</servlet-name>
<url-pattern>/servlet/RPS</url-pattern>
</servlet-mapping>这一类的
是不是还要添加加其他啥的,看网上的关于web.xml完整的配置说明,太多了,看不明白

这个是数据类型不匹配导致的类型转换异常

看你的异常信息 应该是例如这样的

JSP 页面:有个 <input name="aa">
Servlet 中:
int a = Integer.parseInt(request.getParameter("aa") + "");【还有可能这里的变量名aa写错了】
这样的 当你不在jsp 页面上的 input 写值的时候 那么 request.getParameter("aa");接到的对象值 就是null
这样 再转为整型 就会出这个异常
参考技术A Servlet.service() for servlet jsp threw exception这个异常是由于service方法内部报错抛出的,遇到这种情况最好启用debug模式调试一下。
HTTP Servlet 的service() 方法介绍:
service() 方法是 Servlet 的核心。
每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。

在 HttpServlet 中已存在 service()方法.缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。
例如,如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet()。

service方法是接口中的方法,servlet容器把所有请求发送到该方法,该方法默认行为是转发http请求到doXXX方法中,如果你重载了该方法,默认操作被覆盖,不再进行转发操作!
service()是在javax.servlet.Servlet接口中定义的, 在 javax.servlet.GenericServlet中实现了这个接口, 而 doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的, javax.servlet.http.HttpServlet 是javax.servlet.GenericServlet 的子类.
参考技术B 大哥,错误类型已经很明显了,就是在进行类型转换的时候出现了异常。
Servlet.service() for servlet jsp threw exception
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
也就是说你的程序中某一个地方在进行parseInt操作的时候可能传入的参数是字符串或者null,检查一下代码吧
参考技术C 找到你出错的行,看看代码是什么贴出来,基本上你那里使用了一个变量。那个变量为null或者“” 参考技术D 把不是数值类型的变量转成数值出错

Servlet.service() for servlet [jsp] in context ....错误

 

Servlet.service() for servlet [jsp] in context with path [/mvcTest] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException这是在用tomcat写一个小应用时遇到的错误,在网上看了很多没看明白,最终试错n次后发现了问题,

其实这个问题(我遇到的那种情况,可能这个报错不止我遇到的这种情况导致)的根本原因是:.jsp页面代码导致的,因为为了实现

前端和后台的交互,在有些jsp代码中需要后台传入相应的数据到该jsp中,所以jsp代码中就有了接收的代码段,而当我们想跳转到该

jsp页面时却没有传入相应的数据就会报上面所示的错误:空指针(因为后端没有参数传入时那么jsp中的参数就是一个空值,而

空值是不能进行很多操作的)。我们有时直接跳到jsp页面成功是因为该jsp页面是不需要传入数据的。

如何处理这个问题:当然是传入相应的数据了,注意用request对象传数据时,requset对象  域空间中的数据只能存活于一个请求中,

那么就可能需要多次setAttribute()和多次getAttribute()

 

当然如果在jsp页面中对 用到传入参数的相关代码块做判断也是可以的,即满足相应的条件时再执行该代码块

即在jsp页面端时判断时要加上判断接收到的数据是否为null,不为空的话再执行含有参数的代码块;

 

你也可以自己测试,如果你想跳到相应的页面,则直接在浏览器中访问看是否可以访问到,访问出错,那肯定就说明该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在我的数据库中是没有的,结果浏览器页面就这样一直空白

 

以上是关于Servlet.service() for servlet jsp threw exception的主要内容,如果未能解决你的问题,请参考以下文章

Servlet.service() for servlet [jsp] in context ....错误

Servlet.service() for servlet jsp threw exception

Servlet.service() for servlet [...] in context with path [/...] throw exception [Servlet execution t

Servlet service for Servlet jsp threw exception javax serv

Servlet.service() for servlet UserServlet threw exception java.lang.NullPointerException 空指针异常

严重: Servlet.service() for servlet [jsp] threw exception java.lang.NullPointerException