一个新闻发布系统,这是生成新闻的jsp   程序   
    
  Tomcat5.0.14   调试错误显示:   
  exception     
    
  org.apache.jasper.JasperException   
  org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)   
  org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)   
  org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)   
  javax.servlet.http.HttpServlet.service(HttpServlet.java:856)   
    
    
  root   cause     
    
  java.lang.NullPointerException   
  org.apache.jsp.office.news.admin_005fnews.AddNews_jsp._jspService(AddNews_jsp.java:63)   
  org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)   
  javax.servlet.http.HttpServlet.service(HttpServlet.java:856)   
  org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)   
  org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)   
  org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)   
  javax.servlet.http.HttpServlet.service(HttpServlet.java:856)   
    
    
    
    
    
  jsp   程序AddNews.jsp:   
    
    
  <%@   page   contentType="text/html;   charset=gb2312"   language="java"   import="java.sql.*,java.lang.*"   errorPage=""   %>   
    
  <jsp:useBean   id="cs"   scope="page"   class="sqlconn.sql"/>   
  <%   
    
  String   title="",writer="",newstext="";   
  int   bclassid=0;   
  title=new   String(request.getParameter("title").getBytes("ISO8859-1"),"gb2312");   
  writer=new   String(request.getParameter("writer").getBytes("ISO8859-1"),"gb2312");;   
  bclassid=Integer.parseInt(request.getParameter("bclassid"));   
    
  newstext=new   String(request.getParameter("newstext").getBytes("ISO8859-1"),"gb2312");   
  String   strSql="insert   into   news(id,type,title,addtime,author,content)   values("+bclassid+",'"+title+"',"+","+writer+"','"+newstext+"'";   
  try{   
    
  cs.executeUpdate(strSql);   
  cs.closestmt();   
      cs.closeconn();   
  }   
  catch(Exception   e){   
  e.printStackTrace();   
  }   %>   
    
  <script>   
  function   on()   
  {   
  var   f=document.add   
  f.HTML.value=f.newstext.value;   
  }   
    
    
  function   writer(tag){   
  var   f=document.add.writer   
  f.value=tag+f.value   
  f.focus()   
  }   
    
  function   bs(){   
  var   f=document.add   
  f.newstext.value=f.HTML.value;   
  if(f.title.value.length==0){alert("标题没写");f.title.focus();return   false}   
  if(f.classid.value.length==0){alert("请选择新闻类别");f.classid.focus();return   false}   
  if(f.newstext.value.length==0){alert("正文没写");f.newstext.focus();return   false}   
  }   
    
  </script>   
  </head>   
    
  <body   bgcolor="#FFFFFF"   text="#000000"   onload="on();">   
  <form   name="add"   method="post"   onsubmit="return   bs()"   onreset="return   br()"   action=AddNews.jsp>   
      <table   width="588"   cellspacing="0"   cellpadding="0"   align="center">   
          <tr>     
              <td   colspan="2">     
                  <div   align="center">新闻增加</div>   
              </td>   
          </tr>   
          <tr>     
              <td   width="80">标题:</td>   
              <td   width="506"><input   type=text   name=title   >   
                  图文:   是   
  <input   type="checkbox"   name="tw"   value="1">   
              </td>   
          </tr>   
          <tr>     
              <td   width="80">版权信息:<br>   
              </td>   
              <td   width="506">     
                <input   type=text   name=writer   size=10>   
              [   <a   href="javascript:writer('转载自:')">转载自:</a>   ]&nbsp;   </td>   
          </tr>   
          <tr>     
              <td   width="80">新闻类别:<br>   
              </td>   
              <td   width="506">   <select   name="bclassid"   onChange="javascript:changeitem(document.add);">   
                      <option   value=0>请选择类别</option>   
      <option   value=1>校内新闻</option>   
      <option   value=2>教学信息</option>   
                    </select>     
                    
              </td>   
          </tr>   
          <tr>     
              <td   height="15"   width="80">新闻正文:<br>   
              </td>   
              <td   height="15"   rowspan="4">     
                  <OBJECT   id=HTML   data=editor/editor.html   width=500   height=293   type=text/x-scriptlet></object><textarea   style="DISPLAY:none"   name="newstext"></textarea>   
              </td>   
          </tr>   
          <tr>     
              <td   width="80">&nbsp;</td>   
          </tr>   
          <tr>     
              <td   width="80">&nbsp;</td>   
          </tr>   
          <tr>     
              <td   width="80">&nbsp;</td>   
          </tr>   
          <tr>     
              <td>     
                  <div   align="left">   </div>   
              </td>   
              <td>     
                  <input   type="submit"   name="ok"   value="提交">   
                  <input   type="reset"   name="Submit2"   value="重置">   
              </td>   
          </tr>   
      </table>   
  </form>   
  </body>   
  </html> 

解决方案 »

  1.   

    title=new   String(request.getParameter("title").getBytes("ISO8859-1"),"gb2312");   
      writer=new   String(request.getParameter("writer").getBytes("ISO8859-1"),"gb2312");;   
      bclassid=Integer.parseInt(request.getParameter("bclassid"));   
        
      newstext=new   String(request.getParameter("newstext").getBytes("ISO8859-1"),"gb2312");  可能是这四个里面有的在上个页面中没定义,导致传过来为NULL
      

  2.   

    同上
    看一下 request.getParameter("xxx") 的xxx是否也前一页面的名字一致
      

  3.   

    使用了未定义的变量 NullPointerException
      

  4.   

    java抛出的异常等于没有抛出
    没有任何参考价值
    建议调试。跟踪页面的执行过程
      

  5.   

    String   strSql="insert   into   news(id,type,title,addtime,author,content)   values("+bclassid+",'"+title+"',"+","+writer+"','"+newstext+"'";   
    ………………查查
      

  6.   

    我的笨方法就像调js,在页面里加个System.out.println("数字"),然后定位到底异常出在什么地方。
      

  7.   

    建议楼主分开调试,先看传过来的值是不是对的,打印出来看看。
    再看看,语言有没有问题,如果有SQL语句,打印出来执行一下。不让其他代码干扰打印就行了
      

  8.   

    title=new   String(request.getParameter("title").getBytes("ISO8859-1"),"gb2312");   
      writer=new   String(request.getParameter("writer").getBytes("ISO8859-1"),"gb2312");;   
      bclassid=Integer.parseInt(request.getParameter("bclassid"));   
        
      newstext=new   String(request.getParameter("newstext").getBytes("ISO8859-1"),"gb2312");   你能保证这几个参数传过来肯定有值吗?尤其是第一次进入的时候。建议更改如下(这里用了3目运算符,如果你想用if判断也可以):
    title= request.getParameter("title")==null? "": new   String(request.getParameter("title").getBytes("ISO8859-1"),"gb2312");   
      writer=request.getParameter("writer")==null? "":new   String(request.getParameter("writer").getBytes("ISO8859-1"),"gb2312");;   
      bclassid= request.getParameter("bclassid")==null? 0:Integer.parseInt(request.getParameter("bclassid"));   
        
      newstext=request.getParameter("newstext")==null? "":new   String(request.getParameter("newstext").getBytes("ISO8859-1"),"gb2312");