使用Servlet上传多张图片——Servlet层(ProductServlet.java)

简介: 使用Servlet上传多张图片——Servlet层(ProductServlet.java)
package orz.treeSquirrels.web;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import orz.treeSquirrels.entity.ProductInfo;
import orz.treeSquirrels.service.ProductInfoService;
import orz.treeSquirrels.service.impl.ProductInfoServiceImpl;
public class ProductServlet extends HttpServlet {
  
  ProductInfoService proService = new ProductInfoServiceImpl();
  
  /**
   * (非 Javadoc)
  * <p>Description(描述):doget方法 </p>
  * <p>Title: doGet</p>
  * @param request
  * @param response
  * @throws ServletException
  * @throws IOException
  * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
   */
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    response.setContentType("text/html;charset=utf-8");
    request.setCharacterEncoding("utf-8");
    String tag = request.getParameter("tag");
    if (tag.equals("add")) {
      // 添加商品
      addProduct(request, response);
    } 
  }
  
  
  
  
  /**
   * 
  * @Title: addProduct
  * @Description: 添加食品信息
  * @param @param request
  * @param @param response
  * @param @throws IOException    设定文件
  * @return void    返回类型
  * @throws
   */
  private void addProduct(HttpServletRequest request,
      HttpServletResponse response) throws IOException {
    PrintWriter out = response.getWriter();
    request.setCharacterEncoding("utf-8");
    String produceName = "";      // 商品名称
    String details = "";        // 商品详情
    String price = "";          // 价格
    int stock = 0;            // 库存
    String uploadFileName = "";     // 上传的文件名(大图)
    String uploadFileName1 = "";    // 上传的文件名(小图1)
    String uploadFileName2 = "";    // 上传的文件名(小图2)
    String uploadFileName3 = "";    // 上传的文件名(小图3)
    String fileName = "";       // 表单字段元素的name属性值
    String filedName = "";        //获取文件名称
    String picPath = "";
    // 请求信息中的内容是否是multipart类型
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    // 上传文件的存储路径(服务器文件系统上的绝对文件路径)
    String uploadFilePath = request.getSession().getServletContext()
        .getRealPath("upload/");
    if (isMultipart) {
      FileItemFactory factory = new DiskFileItemFactory();
      ServletFileUpload upload = new ServletFileUpload(factory);
      try {
        // 解析from表单中所有文件
        @SuppressWarnings("unchecked")
        List<FileItem> items = upload.parseRequest(request);
        Iterator<FileItem> iter = items.iterator();
        while (iter.hasNext()) {
          FileItem item = (FileItem) iter.next();
          if (item.isFormField()) {
            // 判断,是普通表单
            fileName = item.getFieldName();
            // 表单字段的name属性
            if (fileName.equals("produceName")) {
              produceName = item.getString("utf-8");
            } else if (fileName.equals("details")) {
              details = item.getString("utf-8");
            } else if (fileName.equals("price")) {
              price = item.getString("utf-8");
            } else if (fileName.equals("stock")) {
              stock = Integer.parseInt(item.getString("utf-8"));
            }
          } else {
            // 文件表单字段
            // 表单字段的name属性
            fileName = item.getFieldName();
            if (fileName.equals("bigfile")) {
              filedName = item.getName();
              if (fileName != null && !filedName.equals("")) {
                File fullFile = new File(item.getName());
                File saveFile = new File(uploadFilePath,
                    fullFile.getName());
                item.write(saveFile);
                uploadFileName = fullFile.getName();
                picPath = saveFile.toString();
              }
            } else if (fileName.equals("smallfile1")) {
              // 小图1
              filedName = item.getName();
              if (fileName != null && !filedName.equals("")) {
                File fullFile = new File(item.getName());
                File saveFile = new File(uploadFilePath,
                    fullFile.getName());
                item.write(saveFile);
                uploadFileName1 = fullFile.getName();
                picPath = saveFile.toString();
              }
            } else if (fileName.equals("smallfile2")) {
              // 小图2
              filedName = item.getName();
              if (fileName != null && !filedName.equals("")) {
                File fullFile = new File(item.getName());
                File saveFile = new File(uploadFilePath,
                    fullFile.getName());
                item.write(saveFile);
                uploadFileName2 = fullFile.getName();
                picPath = saveFile.toString();
              }
            } else if (fileName.equals("smallfile3")) {
              // 小图3
              filedName = item.getName();
              if (fileName != null && !filedName.equals("")) {
                File fullFile = new File(item.getName());
                File saveFile = new File(uploadFilePath,
                    fullFile.getName());
                item.write(saveFile);
                uploadFileName3 = fullFile.getName();
                picPath = saveFile.toString();
              }
            }
          }
        }
      } catch (Exception ex) {
        ex.printStackTrace();
      }
      ProductInfo product = new ProductInfo();
      product.setProductName(produceName);
      product.setPrice(Integer.parseInt(price));
      product.setDetails(details);
      product.setStock(stock);
      product.setFileName("upload/" + uploadFileName);
      product.setFileName_1("upload/" + uploadFileName1);
      product.setFileName_2("upload/" + uploadFileName2);
      product.setFileName_3("upload/" + uploadFileName3);
      int rel = proService.addProductInfo(product);
      if (rel > 0) {
        // 添加商品成功之后转发到查询所有的商品界面
        out.print("<script>alert('恭喜您,添加商品成功!');location.href='ProductInfoServlet?tag=show';</script>");
      } else {
        out.print("<script>alert('很抱歉,添加商品失败!');location.href='ProductInfoServlet?tag=show';</script>");
      }
    }
  }
  
  
  
  
  
  
  
  
  
  
  /**
   * (非 Javadoc)
  * <p>Description(描述): dopost方法</p>
  * <p>Title: doPost</p>
  * @param request
  * @param response
  * @throws ServletException
  * @throws IOException
  * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
   */
  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      doGet(request, response);
  }
}


相关文章
|
8月前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
79 5
|
8月前
|
Java
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
194 1
|
5月前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
47 1
|
5月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
112 0
|
6月前
|
安全 Java API
Java中的Servlet编程详解
Java中的Servlet编程详解
|
7月前
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
129 12
|
6月前
|
Java 数据库连接 开发者
Java中的Servlet生命周期详解
Java中的Servlet生命周期详解
|
6月前
|
安全 Java API
Java中的Servlet编程详解
Java中的Servlet编程详解
|
7月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
144 10
|
7月前
|
缓存 小程序 前端开发
Java服务器端技术探秘:Servlet与JSP的核心原理
【6月更文挑战第23天】Java Web开发中的Servlet和JSP详解:Servlet是服务器端的Java小程序,处理HTTP请求并响应。生命周期含初始化、服务和销毁。创建Servlet示例代码展示了`doGet()`方法的覆盖。JSP则侧重视图,动态HTML生成,通过JSP脚本元素、声明和表达式嵌入Java代码。Servlet常作为控制器,JSP处理视图,遵循MVC模式。优化策略涉及缓存、分页和安全措施。这些技术是Java服务器端开发的基础。
74 9