JSP问题 求解

huangrongxiaobao 2010-09-10 08:27:34
关于修改日志的,用的MVC模式
代码:
jsp:
<%
int id=Integer.parseInt(request.getParameter("id"));
ArticleDao ad=new ArticleDao();
List<Article> list=ad.select(id);
Article article=list.get(0);
%>

<table><tr><td>
<div align="left">
<div>编辑日志</div>
<hr style="color:#CCCCCC;height:1px;width:760px;">
<form action="ArticleServlet?mothod=updateArticle" method="post" name="form1">
<div>
<span>标题:</span>
<span><input type="text" name="title" value="<%=article.getTitle() %>"></span>
</div><br>
<div>
<span>内容:</span><br>
<span><textarea rows="45" cols="60" name="content" style="width: 729px; height: 505px"><%=article.getContent() %></textarea></span>
</div><br>
<div>
<span>关键字:</span>
<span><input type="text" name="information" value="<%=article.getInformation() %>"></span>
</div><br>
<div>
<input type="submit" value="修改" name="submit">
</div>
</form>
</div></td></tr></table>

servlet:
//修改日志
public void updateArticle(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("gbk");
PrintWriter out=response.getWriter();
String title=request.getParameter("title");
title=new String(title.getBytes("ISO-8859-1"),"gb2312");
String content=request.getParameter("content");
content=new String(content.getBytes("ISO-8859-1"),"gb2312");
int id=Integer.parseInt(request.getParameter("id"));
String information=request.getParameter("information");
information=new String(information.getBytes("ISO-8859-1"),"gb2312");
Article article=new Article();
article.setTitle(title);
article.setContent(content);
article.setId(id);
article.setInformation(information);

ArticleDao rd=new ArticleDao();
boolean flag=rd.updateArticle(article, id);
if(flag)
{
out.print("<script>alert('修改成功!');window.location.href='blog/showArticle.jsp';</script>");
}
else
{
out.print("<script>alert('对不起,修改失败!');window.location.href='blog/updateArticle.jsp';</script>");

}
}

DAO:
//修改日志
public boolean updateArticle(Article article,int id)
{
boolean flag=false;
try
{
String sql="update article set title=?,content=?,information=? where id=?";
con=db.getConnection();
pstmt=con.prepareStatement(sql);
pstmt.setString(1, article.getTitle());
pstmt.setString(2, article.getContent());
pstmt.setString(3, article.getInformation());
pstmt.setInt(4,id);
int result=pstmt.executeUpdate();
if(result>0)
{
flag=true;
return flag;
}

}catch(Exception e)
{
e.printStackTrace();
}

return flag;
}



报错:
严重: Servlet.service() for servlet ArticleServlet threw exception
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:415)
at java.lang.Integer.parseInt(Integer.java:497)
at cn.jmi.blog.servlet.ArticleServlet.updateArticle(ArticleServlet.java:97)
at cn.jmi.blog.servlet.ArticleServlet.service(ArticleServlet.java:49)
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:228)
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:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:595)
...全文
40 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangrongxiaobao 2010-09-10
  • 打赏
  • 举报
回复
恩 O(∩_∩)O好的 谢谢啊 DEBUG了下 的确是空的
sustbeckham 2010-09-10
  • 打赏
  • 举报
回复
int id=Integer.parseInt(request.getParameter("id"));

在这句吧
你想把传入的字符串cast成整形 但是ID是空值。。。
Bati2008 2010-09-10
  • 打赏
  • 举报
回复
int id=Integer.parseInt(request.getParameter("id"));
id可能为空。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧