使用Servlet上传多张图片——Servlet层(ProductServlet.java)
Posted 穆雄雄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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);
以上是关于使用Servlet上传多张图片——Servlet层(ProductServlet.java)的主要内容,如果未能解决你的问题,请参考以下文章