一个新闻发布系统,这是生成新闻的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> ] </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"> </td>
</tr>
<tr>
<td width="80"> </td>
</tr>
<tr>
<td width="80"> </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>
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> ] </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"> </td>
</tr>
<tr>
<td width="80"> </td>
</tr>
<tr>
<td width="80"> </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>
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
看一下 request.getParameter("xxx") 的xxx是否也前一页面的名字一致
没有任何参考价值
建议调试。跟踪页面的执行过程
………………查查
再看看,语言有没有问题,如果有SQL语句,打印出来执行一下。不让其他代码干扰打印就行了
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");