action 选择

package cn.itcast.estore.web.servlet;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;

import cn.itcast.estore.domain.Product;
import cn.itcast.estore.service.ProductService;
import cn.itcast.estore.utils.FileUploadUtils;
import cn.itcast.estore.utils.PicUtils;

public class ProductServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

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

        if ("addProduct".equals(action)) {

            // 将数据封装到Product中
            Product product = new Product();

            Map<String, String> map = null;
            try {
                map = getProductMap(request);
                BeanUtils.populate(product, map);

                // 生成缩略图
                String source_imgurl = map.get("imgurl");
                PicUtils picUtils = new PicUtils(this.getServletContext()
                        .getRealPath("/uploadImages") + source_imgurl);
                // 以高度为基准,等比例缩放图片
                // picUtils.resizeByHeight(picUtils.getSrcHeight());
                // 设置自定义宽、高缩放图片
                picUtils.resize(55, 55);
                // 调用service完成数据插入
                ProductService service = new ProductService();
                service.addProduct(product);

                // 重定向到add_product_success.jsp
                request.getRequestDispatcher("/index.jsp").forward(request,
                        response);
                return;
            } catch (FileUploadException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else if ("findAllProduct".equals(action)) {
            // 调用service完成数据查询
            ProductService service = new ProductService();
            try {
                List<Product> ps = service.findAddProduct();

                // 将ps保存在request中,转发到home.jsp
                request.setAttribute("ps", ps);
                request.getRequestDispatcher("/index.jsp").forward(request,
                        response);
                return;
            } catch (SQLException e) {
                e.printStackTrace();

            }
        }
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

    // 封装上传商品信息
    public Map<String, String> getProductMap(HttpServletRequest request)
            throws FileUploadException, FileNotFoundException, IOException {
        // 封装商品数据信息
        Map<String, String> map = new HashMap<String, String>();

        // 封装商品id
        String UUid = UUID.randomUUID().toString();
        map.put("id", UUid);

        // 1.创建 DiskFileItemFactory
        DiskFileItemFactory factory = new DiskFileItemFactory();
        // 2.创建ServletFileUpload
        ServletFileUpload upload = new ServletFileUpload(factory);
        // 解决上传文件中文名称乱码
        upload.setHeaderEncoding("utf-8");

        // 3.底层通过request获取数据,进行解析,将解析的数据封装到List<FileItem>
        List<FileItem> items = upload.parseRequest(request);
        // 4.循环遍历
        for (FileItem item : items) {
            // 判断是否是上传组件
            if (item.isFormField()) {
                // 非上传组件

                String fileName = item.getFieldName();
                String context = item.getString();
                context = new String(context.getBytes("iso-8859-1"), "utf-8");

                // 封装非组件数据
                map.put(fileName, context);
            } else {
                // 上传组件

                // 获取上传文件名称
                String filename = item.getName();
                filename = FileUploadUtils.getRealName(filename);
                // 获取随机文件名
                String randomName = FileUploadUtils.getUUIDFileName(filename);
                // 获取uploadImages发布后的绝对磁盘路径
                String parentPath = this.getServletContext().getRealPath(
                        "uploadImages");
                // 获取随机目录
                String randomDir = FileUploadUtils
                        .getRandomDirectory(randomName);

                File rd = new File(parentPath, randomDir);
                // 如果目录不存在,就创建
                if (!rd.exists()) {
                    rd.mkdirs();
                }
                // 复制上传文件
                IOUtils.copy(item.getInputStream(), new FileOutputStream(
                        new File(rd, randomName)));
                // 封装imgUrl
                map.put("imgurl", "/uploadImages" + randomDir + "/"
                        + randomName);
            }
        }
        return map;
    }
}
 

add_product.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>增加商品</title>
</head>
<body>
    <form
        action="${pageContext.request.contextPath }/product?action=addProduct"
        method="post" enctype="multipart/form-data">
        <table border="2px" align="center">
            <tr>
                <td>商品名称:</td>
                <td><input type="text" name="pname"></td>
            </tr>
            <tr>
                <td>价钱:</td>
                <td><input type="text" name="price"></td>
            </tr>
            <tr>
                <td>类别:</td>
                <td><select name="category">
                        <option>----请选择类别-----</option>
                        <option value="日常用品">日常用品</option>
                        <option value="生活用户">生活用户</option>
                        <option value="美颜">美颜</option>
                </select></td>
            </tr>
            <tr>
                <td>数量:</td>
                <td><input type="text" name="num"></td>
            </tr>
            <tr>
                <td>描述:</td>
                <td><textarea rows="5" cols="20" name="desc"></textarea></td>
            </tr>
            <tr>
                <td>图片:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值