当前位置: 代码迷 >> Java Web开发 >> 关于jsp的,跟课本一模一样,但是就是错了
  详细解决方案

关于jsp的,跟课本一模一样,但是就是错了

热度:318   发布时间:2016-04-16 21:41:17.0
关于jsp的,跟课本一模一样,但是就是错了,求助
p121a.jsp


<%!
public String Bytes(String str)
{
try
{
String strOld=str;
byte[] strNew=strOld.getBytes("ISO-8859-1");
String bytes=new String(strNew);
return bytes;
}
catch(Exception e){}
return null;
}
 %>




p135.jsp


<%@ page language="java" import="java.util.*"  contentType="text/html; charset=GB2312"%>
<html>
<head>
<title>商品搜索</title>
<style type="text/css">
<!--
.style1{font-size:12px}
.style2{color:#ff0000}
-->
</style>
</head>
<body>
<form name="form1" onsubmit="return check()" method="post" action="p137.jsp">
<table width="80%" border="0" align="center" bgcolor="#0099ff">
<tr bgcolor="#ffffff">
<th height="39" scope="row">
<div align="left">
<span style="font-weight:400"><font size="2">查询项目:</font>
</span>

</div> 
</th>
<td>
<select name="item" size=1>
<option value="">请选择</option>
<option value="p_type">p_type</option>
<option value="p_id">p_id</option>
<option value="p_name">p_name</option>
</select>
</td>
<td><font size="2">查询内容:</font></td>
<td><input type="text" name="content"></td>
<td><input type="submit" name="submit" value="查询"/></td>
</tr>

</table>


</form>

</body>
<script type="text/javascript">
function check()
{
if(form1.content.value=="")
{
alert("请输入查询内容!");
form1.content.focus();
return false;
}
}
</script>




</html>


p137.jsp


<%@ page language="java" import="java.util.*"  contentType="text/html; charset=GB2312"%>
<%@ page import="java.sql.*" %>
<html>
<head> <title>商品搜索结果</title></head>
<style type="text/css">
<!--
.style1{font-size:12px}
.style2P{color:#ff0000}
-->
</style>
  
<body>
<jsp:include page="p135.jsp"/>
<%@ include file="p121a.jsp" %>
<%
Connection conn=null;
ResultSet rsAll=null;
Statement stmt=null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  String strConn="JDBC:odbc:shopData";
 
  conn=DriverManager.getConnection(strConn);
 
  /*Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  String strConn="jdbc:sqlserver://localhost:1433;DatabaseName=Shop System";*/
 
  conn=DriverManager.getConnection(strConn,"sa","123456");
  stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
  String strItem=request.getParameter("item");
  String strContent=Bytes(request.getParameter("content"));
  String strSql="";
  if(strItem==null||strItem=="")
  {
  strSql="select p_id,p_type,p_name,p_price,p_quantity,p_time from product";
  }
  else
  {
  strSql="select p_id,p_type,p_name,p_price,p_quantity,p_time from priduct where "+strItem.trim()+"like'%"+strContent.trim()+"%'";
 
  }
  rsAll=stmt.executeQuery(strSql);
}
catch(Exception e)
{
e.printStackTrace();
}
 %>
 <table width="80%" border=1 cellspacing="0" align="center">
 <tr>
  <td><font size="2" color="#0000ff">商品编号</font></td>
  <td><font size="2" color="#0000ff">商品名称</font></td>
  <td><font size="2" color="#0000ff">商品类别</font></td>
  <td><font size="2" color="#0000ff">商品价格</font></td>
  <td><font size="2" color="#0000ff">商品数量</font></td>
  <td><font size="2" color="#0000ff">上架日期</font></td>
 </tr>
 <%
  String str=(String)request.getParameter("page");
  if(str==null)
  {
str="0";
}
  int pagesize=10;
  rsAll.last();
  int recordCount=rsAll.getRow();
  int maxPage=0;
  maxPage=(recordCount%pagesize==0)?(recordCount/pagesize):(recordCount/pagesize+1);
  int currentPage=Integer.parseInt(str);
  if(currentPage<1)
  {
  currentPage=1;
  }else
  {
  if(currentPage>maxPage)
  {
  currentPage=maxPage;
  }
 
  }
  rsAll.absolute((currentPage-1)*pagesize+1);
  for(int i=1;i<=pagesize;i++)
  {
 
  %>
  <tr>
  <td><font size="2"><%=rsAll.getString("p_id") %></font></td>
  <td><font size="2"><%=rsAll.getString("p_name") %></font></td>
  <td><font size="2"><%=rsAll.getString("p_type") %></font></td>
  <td><font size="2"><%=rsAll.getString("p_price") %></font></td>
  <td><font size="2"><%=rsAll.getString("p_quantity") %></font></td>
  <td><font size="2"><%=rsAll.getString("p_time") %></font></td>
  <td><a href="#"><font size="2">详情</font></a></td>>
  <td><a href="#"><font size="2">购买</font></a></td>>
  </tr>
  <%
   try
   {
   if(!rsAll.next())
   {break;}
  
   }catch(Exception e){}
   }
  
   %>
 </table>
 <p align="center"><font size="2">跳转到:<input type="text" name="page" size="3"/>当前页数:[<%=currentPage %>/<%=maxPage %>]&nbsp;
 <%
  if(currentPage>1)
  {
 
  %>
<a href="p137.jsp?page=1">第一页</a><a href="p137.jsp?page=<%=currentPage-1 %>">上一页</a> 
<%
}
if(currentPage<maxPage)
{
 %>
 <a href="p137.jsp?page=<%=currentPage+1 %>">下一页</a> <a href="p137.jsp>page=<%=maxPage %>">最后一页&nbsp;</a>
 <%
  }
  rsAll.close();
  stmt.close();
  conn.close();
  %>
 </font></p>
  
</body>
</html>


估计是p137.jsp错了,但是不知道错在哪,求大神指点迷津


------解决思路----------------------
错误不是都给你显示出来了吗?p137.jsp的第66行报空指针异常
就是说你代码里面得到的rsAll这个变量的值为null,检查一下rsAll=stmt.executeQuery(strSql);,我感觉应该是这个方法查询的时候返回的是null。
------解决思路----------------------
JSP页面把这个错误所发生的地方提示出来了呀,你仔细检查看看。

你或者用Myeclipse的Debug调试,然后打断点一步步跟踪,就知道了。
------解决思路----------------------
 strSql="select p_id,p_type,p_name,p_price,p_quantity,p_time from priduct where "+strItem.trim()+"like'%"+strContent.trim()+"%'";
这里你的表名字写错了吧。。 应该是from  product
------解决思路----------------------
我还是相信拷贝复制
------解决思路----------------------
引用:
Quote: 引用:

错误不是都给你显示出来了吗?p137.jsp的第66行报空指针异常。
就是说你代码里面得到的rsAll这个变量的值为null,检查一下rsAll=stmt.executeQuery(strSql);,我感觉应该是这个方法查询的时候返回的是null。



你在这个语句“rsAll=stmt.executeQuery(strSql);”后面把rsAll的值弹出来看看是否有值。
------解决思路----------------------

 strSql="select p_id,p_type,p_name,p_price,p_quantity,p_time from priduct where "+strItem.trim()+"like'%"+strContent.trim()+"%'";



大哥 你绝的你数据库字段用strItem.trim() 合适吗  改成数据库字段试一下
------解决思路----------------------
找到jsp编译后的java文件,看一下第146行为什么会报 NullPointer 吧
------解决思路----------------------
if(curentPage>1)---还要写上且 curentPage<maxPage 


    
  if(curentPage<=maxPage)---
------解决思路----------------------
product表里存有数据么?
------解决思路----------------------
楼主把String strSql="";改为String strSql=null;试试?
------解决思路----------------------
rsAll=stmt.executeQuery(strSql);后面把rsAll这个值alert出来看看是什么,或者浏览器调试一下看看啊

错误非常明显,调试一下打印一下就可以很容易找到啊
------解决思路----------------------
查查rsAll为什么为空吧 从这里入手
------解决思路----------------------
在rsAll.last();前打印rsAll.getRow()试试

------解决思路----------------------
在rsAll.last()前加if(rsAll.next)
------解决思路----------------------
首先你sql你运行一下对不对【在运行结果集后面System.out.println();一个个字段】
其次你在界面中能打印的地方都用System.out.println();去打印值出来,看下哪一步的值没有打印出来,就用这种最土的办法了,毕竟你的都是jsp代码
  相关解决方案