jsp不能获取id的值

时间:2021-08-28 16:11:06
<%
int id = Integer.parseInt(request.getParameter("id"));
NoteDao ndao = new NoteDao();
int sumcount = ndao.queryCount(mid);
ModuleDao mdao = new ModuleDao();
List<Module> list = mdao.queryAll();
Child_moduleDao cdao = new Child_moduleDao();
List<Child_module> list1 = cdao.queryChild_module();
for (Module m : list) {
%>

<TH class=new colspan="3">

<h2><%=m.getMname()%></h2>
</TH>
<th class="new">
ceshi1
</th>
</tr>

<%
for (Child_module c : list1) {
%>

<tr>
<td style="padding-left: 55px">
<a href="Second_levelServlet?id=<%=c.getC_mid()%>"><%=c.getC_mname()%></a>

这段代码我一获取id的值,id总是空值,而且网页总是报500,请大侠们帮我解决。

23 个解决方案

#1


检查一下你跳转这个页面的时候传的参数id有没有。

#2


有呀,而且在浏览器的左下角会显示不同的id的值

#3


int id = Integer.parseInt(request.getParameter("id"));

这样写肯定有问题啊,如果里面的值是空的,那肯定报错,导致500了

定义成Integer 或者 加个if判断

String idStr = request.getParameter("id")
int id = (idStr ==null || idStr.trim().equals(""))?0:Integer.parseInt(idStr)


id是空的那肯定是没带过来,也不知道你是怎么超链接到这个页面的

#4


500的错误表示你的代码有问题了。
int id = Integer.parseInt(request.getParameter("id"));

看你后台有没有id的set方法?

#5


id区分大小写的,
1.检查是否大小写不一致
2.检查id的值是否为整数
3.检查跳转到本页面的方式 可能参数在中转中丢掉

#6


引用3楼:加了一个if判断,但是Id的值还是空值。

#7


引用4楼:这个在jsp页面中直接获取表单的值,好像不用set的方法哦。500的错误就是id是空值,报了一个空异常

#8


引用5楼:这个是主页面,因为要获取id,并且要调用DAO里面的方法。但是无论怎么改,都是报了个空异常,让人头大。

#9


看控制台 具体报的是什么错

#10


你这个id从始至终也没用上啊,不知道你搞什么?
int sumcount = ndao.queryCount( mid);
难道写错了,不行你就直接赋个值试试报不报错。

#11


首先,正如10楼所说,id后面没用上,而且又冒出来一个mid,不知道是什么想法?
其次,最好把具体问题(控制台具体错误)也贴出来,要不要不好对症下药。
最后,id为空,应该是传值那端出问题了。
    在接受参数,并进行类型强制转换之前,需要对参数类型进行判断。

#12


会不会是名字冲突了

#13


异常:严重: Servlet.service() for servlet jsp threw exception
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:415)
at java.lang.Integer.parseInt(Integer.java:497)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:118)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)

我解释下:mid是最开始有初始值的,不过我当时为了更好的让大家帮我解决,就简化了,当时就没有注意,不好意思。这个是这段代码的异常。

#14


int id = Integer.parseInt(request.getParameter("id"));
改成这样:
先在后台增加代码:
request.setAttribute("id",request.getParameter("id"));
然后前台这样取值;
request.getAttribute("id");

#15


这个异常是说你的id是非Integer类型,强转就报错了, 这要还你后台是怎么写的,你应该是个初学者把,现在用小脚本写的少了,我们在项目里这样写是要挨骂的,jstl就不错吗!

#16


这句话中   int id = Integer.parseInt(request.getParameter("id"));的
request.getParameter("id");中的String类型的id很可能是NULL
这样写
String id= request.getParameter("id");
if(id != NULL)
{
     int id = Integer.parseInt(request.getParameter("id"));
}
else
{  
      其它处理
}

其它代码没问题

#17


id怎么传的,是从servlet,jsp,还是其他。确定传了值。有可能的话,在url中显示试试看

#18


int id = Integer.parseInt(request.getParameter("id"));

应该这样取吧
request.getAttribute("id");

#19


int id = Integer.parseInt(request.getParameter("id")); 
//这里如果值不为空的话,这里能够执行, 那么第三那句mid是那里来的?
NoteDao ndao = new NoteDao();
int sumcount = ndao.queryCount(mid);

#20


传值代码的错误,把传值的代码贴出来看看吧

#21


自己好好检查 吧

#22


你设置断点调试啊啊,debug一下!

#23


int id = Integer.parseInt(request.getParameter("id"));

亲,你在取这个ID的时候,是在什么地方,或者说在什么时候放入request中的呢?

#1


检查一下你跳转这个页面的时候传的参数id有没有。

#2


有呀,而且在浏览器的左下角会显示不同的id的值

#3


int id = Integer.parseInt(request.getParameter("id"));

这样写肯定有问题啊,如果里面的值是空的,那肯定报错,导致500了

定义成Integer 或者 加个if判断

String idStr = request.getParameter("id")
int id = (idStr ==null || idStr.trim().equals(""))?0:Integer.parseInt(idStr)


id是空的那肯定是没带过来,也不知道你是怎么超链接到这个页面的

#4


500的错误表示你的代码有问题了。
int id = Integer.parseInt(request.getParameter("id"));

看你后台有没有id的set方法?

#5


id区分大小写的,
1.检查是否大小写不一致
2.检查id的值是否为整数
3.检查跳转到本页面的方式 可能参数在中转中丢掉

#6


引用3楼:加了一个if判断,但是Id的值还是空值。

#7


引用4楼:这个在jsp页面中直接获取表单的值,好像不用set的方法哦。500的错误就是id是空值,报了一个空异常

#8


引用5楼:这个是主页面,因为要获取id,并且要调用DAO里面的方法。但是无论怎么改,都是报了个空异常,让人头大。

#9


看控制台 具体报的是什么错

#10


你这个id从始至终也没用上啊,不知道你搞什么?
int sumcount = ndao.queryCount( mid);
难道写错了,不行你就直接赋个值试试报不报错。

#11


首先,正如10楼所说,id后面没用上,而且又冒出来一个mid,不知道是什么想法?
其次,最好把具体问题(控制台具体错误)也贴出来,要不要不好对症下药。
最后,id为空,应该是传值那端出问题了。
    在接受参数,并进行类型强制转换之前,需要对参数类型进行判断。

#12


会不会是名字冲突了

#13


异常:严重: Servlet.service() for servlet jsp threw exception
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:415)
at java.lang.Integer.parseInt(Integer.java:497)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:118)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)

我解释下:mid是最开始有初始值的,不过我当时为了更好的让大家帮我解决,就简化了,当时就没有注意,不好意思。这个是这段代码的异常。

#14


int id = Integer.parseInt(request.getParameter("id"));
改成这样:
先在后台增加代码:
request.setAttribute("id",request.getParameter("id"));
然后前台这样取值;
request.getAttribute("id");

#15


这个异常是说你的id是非Integer类型,强转就报错了, 这要还你后台是怎么写的,你应该是个初学者把,现在用小脚本写的少了,我们在项目里这样写是要挨骂的,jstl就不错吗!

#16


这句话中   int id = Integer.parseInt(request.getParameter("id"));的
request.getParameter("id");中的String类型的id很可能是NULL
这样写
String id= request.getParameter("id");
if(id != NULL)
{
     int id = Integer.parseInt(request.getParameter("id"));
}
else
{  
      其它处理
}

其它代码没问题

#17


id怎么传的,是从servlet,jsp,还是其他。确定传了值。有可能的话,在url中显示试试看

#18


int id = Integer.parseInt(request.getParameter("id"));

应该这样取吧
request.getAttribute("id");

#19


int id = Integer.parseInt(request.getParameter("id")); 
//这里如果值不为空的话,这里能够执行, 那么第三那句mid是那里来的?
NoteDao ndao = new NoteDao();
int sumcount = ndao.queryCount(mid);

#20


传值代码的错误,把传值的代码贴出来看看吧

#21


自己好好检查 吧

#22


你设置断点调试啊啊,debug一下!

#23


int id = Integer.parseInt(request.getParameter("id"));

亲,你在取这个ID的时候,是在什么地方,或者说在什么时候放入request中的呢?