他虽然提示那几行有问题 但是 但是 我看了没错
package com.imooc.web.action; import java.io.IOException; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.imooc.domain.Category; import com.imooc.domain.Product; import com.imooc.service.CategoryService; import com.imooc.service.ProductService; import com.imooc.service.impl.CategoryServiceImpl; import com.imooc.service.impl.ProductServiceImpl; import com.imooc.utils.UploadUtils; /** * Servlet implementation class ProductServlet */ @WebServlet("/ProductServlet") public class ProductServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //接收method参数 String methodName = request.getParameter("method"); if("findAll".equals(methodName)) { findAll(request,response); }else if("saveUI".equals(methodName)) { saveUI(request,response); //在下方创建方法 }else if("save".equals(methodName)) { save(request,response); //在下方创建方法 } }/////////////////////////////////////////////////////////// /** * 商品模块 后台保存商品方法 * @param request * @param response * @throws IOException * @throws ServletException */ private void save(HttpServletRequest request, HttpServletResponse response) throws IOException { System.out.println("后台保存商品save!!!"); //完成文件上传 工具类 //调用工具类 抛出异常 在工具类中封装到map中去了 数据都在map中 Map<String,String> map= UploadUtils.uploadFile(request); //将数据完成封装 保存商品到数据库 Product product = new Product(); product.setPname(map.get("pname")); product.setAuthor(map.get("author")); product.setPrice(Double.parseDouble(map.get("price"))); product.setDescription(map.get("description")); product.setFilename(map.get("filename")); product.setPath(map.get("path")); //往数据库里保存知道id就行了 product.getCategory().setCid(Integer.parseInt(map.get("cid"))); //处理数据 ProductService productService = new ProductServiceImpl(); productService.save(product); //页面跳转 response.sendRedirect(request.getContextPath()+"/ProductServlet?method=findAll"); } /** * 商品模块 跳转到添加页面方法 * @param request * @param response * @throws IOException * @throws ServletException */ private void saveUI(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //查询所有分类信息 引入两个包 CategoryService categoryService = new CategoryServiceImpl(); //调用方法 拿到了所有分类数据 List<Category> list = categoryService.findAll(); // 页面跳转 带着list集合数据 存到 setAttribute中 request.setAttribute("categoryList",list ); //重定向 抛异常 request.getRequestDispatcher("/admin/product_add.jsp").forward(request, response); } /** * 商品模块 查询所有商品的方法 * @param request * @param response * @throws IOException * @throws ServletException */ private void findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 不接收参数 System.out.println("ProductServlet的findAll方法执行了!"); //调用业务层数据 导入两个包 ProductService productService = new ProductServiceImpl(); //再引入包 List<Product> list = productService.findAll(); //遍历打印 // for(Product product:list) { // System.out.println(product); // } //页面跳转 request.setAttribute("list", list); request.getRequestDispatcher("/admin/product_list.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
希望老师 指点是哪里? 可能会有错 希望详细说明 比如 哪个文件的大概哪行!!!务必 多说几个疑似的地地方 并 说明 如何改正 !!!谢谢
6
收起
正在回答
1回答
同学你好。
1、分析错误信息:NumberFormatException: null 代表发生了数字转换(number format)问题,不能将null转换为数字。发生转换数字的方法是Integer的parseInt,并且在自己的代码中调用的位置是ProjectServlet的67行:
2、找到代码中的对应位置,可以看到这里使用了parseInt,说明map.get("cid")得到的是null。而map是UploadUtils.uploadFile(request)获取的。同学可以检查下uploadFile这个方法的返回值是否有问题。另外注意对应的html页面的input标签的name属性是否是"cid"
3、另外,同学刚刚new出的Product。如果在product.getCategory()方法中没有判断当前的category属性是否初始化,那么就会返回null。而后会产生空指针异常。建议同学在这里先new出来Category对象,将需要的属性值都填写后,再将整个对象放入product中,例如:
//将数据完成封装 保存商品到数据库 Product product = new Product(); product.setPname(map.get("pname")); product.setAuthor(map.get("author")); product.setPrice(Double.parseDouble(map.get("price"))); product.setDescription(map.get("description")); product.setFilename(map.get("filename")); product.setPath(map.get("path")); //-----先创建Category对象,将属性填充好 Category category = new Category(); category.setCid(Integer.parseInt(map.get("cid"))); //-----然后将整个对象设置成category属性 product.setCategory(category); //处理数据 ProductService productService = new ProductServiceImpl(); productService.save(product);
如果解答了同学的疑问,望采纳~
祝学习愉快~
3. Java 数据库开发与实战应用
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星