jsp跳转servlet实现添加数据

在添加数据的时候总显示添加失败不知道为什么
这是servlet的

protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub    
         
        request.setCharacterEncoding("utf-8");
        String id = request.getParameter("id");
        String name = request.getParameter("name");
        //int price = Integer.parseInt(request.getParameter("price"));
         
        String priceParam = request.getParameter("price");
        int price = 0; // 默认值或错误情况下的处理值
        try {
            if (priceParam != null && !priceParam.isEmpty()) {
                price  = Integer.parseInt(priceParam);
            }
        } catch (NumberFormatException e) {
            
        }
        String kind = request.getParameter("kind");
        String provider = request.getParameter("provider");
        String numParam = request.getParameter("num");
        int num = 0; // 默认值或错误情况下的处理值
        try {
            if (numParam != null && !numParam.isEmpty()) {
                num = Integer.parseInt(numParam);
            }
        } catch (NumberFormatException e) {
            // 处理无法解析为整数的情况,例如给出默认值或错误提示
            // num = 默认值;
            // 输出错误信息或返回给前端的错误提示
        }
     
        Goods goods= new Goods();
        goods.setId(id);
        goods.setName(name);
        goods.setPrice(price);
        goods.setKind(kind);
        goods.setProvider(provider);
        goods.setNum(num);
         
         
        int result = 0;
        try {
            result = dao.Add(goods);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         
        if ( result ==1) {
            request.setAttribute("message", "添加成功");
            request.getRequestDispatcher("AdminView.jsp").forward(request, response);
        } else {
            request.setAttribute("message", "添加失败");
            request.getRequestDispatcher("AdminAdd.jsp").forward(request, response);
        }

    }
 


这是dao层的添加数据方法


```java

public int Add(Goods goods) throws Exception {
    int i = 0;
    Connection con = null;
    PreparedStatement st = null;
    ResultSet rs = null;
    try {
        con = CnUtil.GetCon();
        String sql = "insert into goods(id,name,price,kind,provider,num) values(?,?,?,?,?,?)";
        st = con.prepareStatement(sql);
        st.setString(1, goods.getId());
        st.setString(2, goods.getName());
        st.setInt(3, goods.getPrice());
        st.setString(4, goods.getKind());
        st.setString(5, goods.getProvider());
        st.setInt(5, goods.getNum());
        i = st.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        CnUtil.closeResource(con, st, rs);
    }
    return i;
}

```

服务器端的问题,一般和网络问题挂钩,重新启动试试

你在可以在添加数据的位置打个断点,然后进行debug调试,去调试就能找到添加失败的原因了

img

在这个地方写个输出goods.toString()看看你新增的数据goods内部各个属性具体是什么样的,尤其注意一下属性id的值,看看是不是和数据库中的id重复了,如果id在数据库中是主键那估计插入不进去呢,就先输出看看,查看这个初步的问题是什么,还有可能是你这个id如果是自增那就id对应的sql语句的?可以改成null试试,程序是个精细活,实在不会我帮你远程教你解决这问题

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7430212
  • 这篇博客也不错, 你可以看下分别使用jsp 和 servlet读取数据库显示成表格
  • 除此之外, 这篇博客: jsp+servlet实现分页中的 dao层 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    package com.dao;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    import org.apache.commons.dbutils.handlers.ScalarHandler;
    
    import com.domain.Product;
    import com.utils.DataSourceUtils;
    
    public class ProductDao {
    	
    	public int getTotalRecords() throws SQLException {
    		//创建QuertyRunner
    		QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
    		// 编写sql语句
    		String sql = "select count(*) from product";
    		// 执行sql
    		return ((Long)qr.query(sql, new ScalarHandler())).intValue();
    	}
    
    	public List findAll(int startIndex, int pageSize) throws SQLException {
    		// 创建QuertyRunner
    		QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
    		// 编写sql语句
    		String sql = "select * from product limit ?,?";
    		//为占位符赋值
    		Object[] params = {startIndex,pageSize};
    		// 执行sql
    		return qr.query(sql, new BeanListHandler<>(Product.class), params);
    	}
    
    }
    
    
  • 您还可以看一下 冯三老师的jsp/servlet精讲课程中的 什么是动态网页小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^