最近在学jsp,在学习javabean这一块的时候,学到这个DAO设计模式,我就把书上的代码全都敲上去了,想测试一下,用书上的一个测试用的类TestInsertProduct .java就可以插入数据到数据库内,但是刚想试一试jsp的调用的时候,就算照着书上打也是总会在服务器端报错TestInsertProduct .javapackage com.eshore.test;import com.eshore.factory.DAOFactory;
import com.eshore.pojo.Product;public class TestInsertProduct {
public static void main(String[] args){
Product product=null;
try{
for(int i=0;i<5;i++){
product=new Product();
product.setProduct_id("350115001014"+i);
product.setProduct_name("水杯"+i);
product.setPrice(100+i);
product.setInfo("这是一个精美的杯子"+i);
DAOFactory.getIEmpDAOInstance().addProduct(product);
}
}catch(Exception e){
e.printStackTrace();
}
}
}在调用查询产品的jsp时一开始不会有问题,但是一点提交就会报错
product_list.jsp<%@ page language="java" import="java.util.*,com.eshore.pojo.Product" pageEncoding="UTF-8"%>
<%@ page import="com.eshore.factory.DAOFactory"%>
<%!
List<Product>list=null;
%>
<%
request.setCharacterEncoding("utf-8");
list=new ArrayList<Product>();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>查询产品列表</title>
</head>
<body>
 <form action="product_list.jsp" method="post">
产品名称:<input name="product"/>
<input type="submit" value="提交">
</form>
<%

String product_name=request.getParameter("product_name");

list=DAOFactory.getIEmpDAOInstance().findAll(product_name);
%>
<table border="1">
<tr>
<td>产品编号</td>
<td>产品名称</td>
<td>产品价格</td>
<td>产品信息</td>
</tr>
<%
for(int i=0;i<list.size();i++){
Product p=list.get(i);
%>
<tr>
<td><%=p.getProduct_id() %></td>
<td><%=p.getProduct_name() %></td>
<td><%=p.getPrice()%></td>
<td><%=p.getInfo()%></td>
</tr>
<%} %>
</table>
</body>
</html>
这可能是在ProductDao的实现类中一开始只是调用了else里面的东西,后来输入不是空值了调用到if下面的代码发生了什么错误package com.eshore.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;import com.eshore.pojo.Product;public class ProductDaoImpl implements ProductDao{
private Connection conn=null;
private PreparedStatement pstmt=null;
public ProductDaoImpl(Connection conn){
this.conn=conn;
}

public boolean addProduct(Product product)throws Exception{
boolean flag=false;
String sql="insert into product(product_id,product_name,price,info)values(?,?,?,?)";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setString(1,product.getProduct_id());
this.pstmt.setString(2,product.getProduct_name());
this.pstmt.setDouble(3,product.getPrice());
this.pstmt.setString(4,product.getInfo());

if(this.pstmt.executeUpdate()>0){
flag=true;
}
this.pstmt.close();
return flag;
}

public List<Product>findAll(String product_name)throws Exception{

List<Product>list=new ArrayList<Product>();
String sql="select product_id,product_name,price,info from product";
if(product_name!=null&&!"".equals(product_name)){
sql="select product_id,product_name,price,info from product where product_name like ?";
this.pstmt.setString(1,"%"+product_name+"%");
}else{
this.pstmt=this.conn.prepareStatement(sql);
}
ResultSet rs=this.pstmt.executeQuery();
Product product=null;
while(rs.next()){
product=new Product();
product.setProduct_id(rs.getString(1));
product.setProduct_name(rs.getString(2));
product.setPrice(rs.getDouble(3));
product.setInfo(rs.getString(4));
list.add(product);
}
this.pstmt.close();
return list;
}

public Product findByProductId(String product_id)throws Exception{
Product product=null;
String sql="select product_id,product_name,price,info from product where product_id=?";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setString(1,product_id);
ResultSet rs=this.pstmt.executeQuery();
if(rs.next()){
product=new Product();
product.setProduct_id(rs.getString(1));
product.setProduct_name(rs.getString(2));
product.setPrice(rs.getDouble(3));
product.setInfo(rs.getString(4));
}
this.pstmt.close();
return product;
}
}
请大神出来帮我看一看

解决方案 »

  1.   

    你debug调试一下 看看public List<Product>findAll(String product_name)throws Exception{  到底是怎么执行的
      

  2.   

    指向24行的,DAOFactory.getIEmpDAOInstance().findAll();你排查一下是DAOFactory问题还是.getIEmpDAOInstance()为空还是findAll()里面有问题
      

  3.   

    目测是daofactory的问题
      

  4.   

    问题已解决https://blog.csdn.net/yelongacui/article/details/88249830