前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >servlet实现文件上传数据增删该查

servlet实现文件上传数据增删该查

原创
作者头像
用户1503405
修改2021-09-24 10:20:24
4000
修改2021-09-24 10:20:24
举报
文章被收录于专栏:棒棒小飞人

控制层:

文件上传需要import org.apache.commons.fileuploadjar包

代码语言:javascript
复制
package com.product.dbutil.product.action;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.product.dbutil.product.dao.ProductDao;
import com.product.dbutil.product.service.ProductService;
import com.product.dbutil.product.util.DividePage;
import com.product.dbutil.product.util.UUIDTools;

public class ProductAction extends HttpServlet {

    private ProductService service;

    /**
     * Constructor of the object.
     */
    public ProductAction() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    /**
     * The doGet method of the servlet. <br>
     * 
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        this.doPost(request, response);

    }

    /**
     * The doPost method of the servlet. <br>
     * 
     * This method is called when a form has its tag value method equals to
     * post.
     * 
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();
        String action_flag = request.getParameter("action_flag");
        if (action_flag.equals("add")) {
            addProduct(request, response);
        } else if (action_flag.equals("list")) {
            listProduct(request, response);
        } else if (action_flag.equals("del")) {
            delProduct(request, response);
        }else if(action_flag.equals("view")){
            viewProduct(request, response);
        }

        out.flush();
        out.close();
    }

    private void viewProduct(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String proid = request.getParameter("proid");
        Map<String,Object> map = service.viewProduct(proid);
        request.setAttribute("map", map);
        request.getRequestDispatcher("/product/2_1_5xs.jsp").forward(request, response);
    }

    private void delProduct(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String path = request.getContextPath();
        // 获得选中的复选框的值
        String[] ids = request.getParameterValues("ids");
        boolean flag = service.delProduct(ids);
        if (flag) {
            response.sendRedirect(path
                    + "/servlet/ProductAction?action_flag=list");
        }
    }

    private void listProduct(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        // String path = request.getContextPath();
        // 接收用户的查询名字
        String proname = request.getParameter("proname");
        int recordCount = service.getItemCount();// 获得记录的总条数
        int currentPage = 1;// 当前页是第一页
        String pageNum = request.getParameter("pageNum");
        if (pageNum != null) {
            currentPage = Integer.parseInt(pageNum);
        }
        DividePage pUtil = new DividePage(5, recordCount, currentPage);
        int start = pUtil.getFromIndex();
        int end = pUtil.getToIndex();
        // 已经进行分页之后的数据集合
        List<Map<String, Object>> list = service.listProduct(proname, start,
                end);
        request.setAttribute("pUtil", pUtil);
        request.setAttribute("listproduct", list);
        request.setAttribute("proname", proname);
        request.getRequestDispatcher("/product/2_1_5.jsp").forward(request,
                response);
    }

    private void addProduct(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // 表单含有文件要提交
        String path = request.getContextPath();
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
        // 构建一个文件上传类
        ServletFileUpload servletFileUpload = new ServletFileUpload(
                diskFileItemFactory);
        servletFileUpload.setFileSizeMax(3 * 1024 * 1024);
        servletFileUpload.setSizeMax(6 * 1024 * 1024);// 上传文件总大小
        List<FileItem> list = null;
        List<Object> params = new ArrayList<Object>();
        params.add(UUIDTools.getUUID());
        try {
            // 解析request的请求
            list = servletFileUpload.parseRequest(request);
            // 取出所有表单的值:判断非文本字段和文本字段
            for (FileItem fileItem : list) {
                if (fileItem.isFormField()) {
                    if (fileItem.getFieldName().equals("proname")) {
                        params.add(fileItem.getString("utf-8"));
                    }
                    if (fileItem.getFieldName().equals("proprice")) {
                        params.add(fileItem.getString("utf-8"));
                    }
                    if (fileItem.getFieldName().equals("proaddress")) {
                        params.add(fileItem.getString("utf-8"));
                    }
                } else {
                    try {
                        String image = fileItem.getName();
                        params.add(image);
                        String upload_path = request.getRealPath("/upload");
                        System.out.println("--->>" + upload_path);
                        //
                        File real_path = new File(upload_path + "/" + image);
                        fileItem.write(real_path);
                        boolean flag = service.addProduct(params);
                        if (flag) {
                            response
                                    .sendRedirect(path
                                            + "/servlet/ProductAction?action_flag=list");
                        }
                        // 把数据插入到数据库中
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        } catch (FileUploadException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * Initialization of the servlet. <br>
     * 
     * @throws ServletException
     *             if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
        service = new ProductDao();
    }

}

服务层:

代码语言:javascript
复制
package com.product.dbutil.product.service;

import java.util.List;
import java.util.Map;

public interface ProductService {

    public boolean addProduct(List<Object> params);

    public boolean delProduct(String[] ids);
    // 提取所有产品的信息
    public List<Map<String, Object>> listProduct(String proname,int start,int end);

    public int getItemCount();

    public Map<String,Object> viewProduct(String proid);
}

数据访问层:

代码语言:javascript
复制
package com.product.dbutil.product.dao;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;

import com.product.dbutil.jdbc.JdbcUtils;
import com.product.dbutil.product.service.ProductService;

public class ProductDao implements ProductService {

    private JdbcUtils jdbcUtils;

    public ProductDao() {
        // TODO Auto-generated constructor stub
        jdbcUtils = new JdbcUtils();
    }

    public boolean addProduct(List<Object> params) {
        // TODO Auto-generated method stub
        boolean flag = false;
        try {
            String sql = "insert into product(proid,proname,proprice,proaddress,proimage) values(?,?,?,?,?)";
            jdbcUtils.getConnection();
            flag = jdbcUtils.updateByPreparedStatement(sql, params);
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            jdbcUtils.releaseConn();
        }
        return flag;
    }

    /*
     * (non-Javadoc) 提取产品的信息
     * 
     * @see com.product.dbutil.product.service.ProductService#listProduct()
     */
    public List<Map<String, Object>> listProduct(String proname, int start,
            int end) {
        // TODO Auto-generated method stub
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        String sql = "select * from product where (1=1) ";
        // limit ?,?
        StringBuffer buffer = new StringBuffer(sql);
        List<Object> params = new ArrayList<Object>();
        if (proname != null) {
            buffer.append(" and proname like ? ");
            params.add("%" + proname + "%");
        }
        buffer.append("limit ?,? ");
        params.add(start);
        params.add(end);
        try {
            jdbcUtils.getConnection();
            list = jdbcUtils.findMoreResult(buffer.toString(), params);
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            jdbcUtils.releaseConn();
        }
        return list;
    }

    public int getItemCount() {
        int result = 0;
        Map<String, Object> map = null;
        String sql = " select count(*) mycount from product ";
        try {
            jdbcUtils.getConnection();
            map = jdbcUtils.findSimpleResult(sql, null);
            result = Integer.parseInt(map.get("mycount").toString());
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            jdbcUtils.releaseConn();
        }
        // TODO Auto-generated method stub
        return result;
    }

    public boolean delProduct(String[] ids) {
        // TODO Auto-generated method stub
        boolean flag = false;
        try {
            jdbcUtils.getConnection();
            String[] sql = new String[ids.length];
            if (ids != null) {
                for (int i = 0; i < ids.length; i++) {
                    sql[i] = "delete from product where proid='" + ids[i] + "'";
                }
            }
            flag = jdbcUtils.deleteByBatch(sql);
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            jdbcUtils.releaseConn();
        }
        return flag;
    }

    public Map<String, Object> viewProduct(String proid) {
        // TODO Auto-generated method stub
        Map<String, Object> map = null;
        try {
            String sql = "select * from product where proid = ? ";
            List<Object> params = new ArrayList<Object>();
            params.add(proid);
            jdbcUtils.getConnection();
            map = jdbcUtils.findSimpleResult(sql, params);
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            jdbcUtils.releaseConn();
        }
        return map;
    }

}

分页查找工具类:

代码语言:javascript
复制
package com.product.dbutil.product.util;

public class DividePage {

    private int pageSize;// 表示显示的条数
    private int recordCount;// 表示记录的总条数
    private int currentPage;// 表示当前页

    public DividePage(int pageSize, int recordCount, int currentPage) {
        // TODO Auto-generated constructor stub
        this.pageSize = pageSize;
        this.recordCount = recordCount;
        setCurrentPage(currentPage);
    }

    public DividePage(int pageSize, int recordCount) {
        // TODO Auto-generated constructor stub
        this(pageSize, recordCount, 1);
    }

    // 获得总页数
    public int getPageCount() {
        int size = recordCount / pageSize;
        int mod = recordCount % pageSize;
        if (mod != 0) {
            size++;
        }
        return recordCount == 0 ? 1 : size;
    }

    public int getFromIndex() {
        return (currentPage - 1) * pageSize;
    }

    public int getToIndex() {
        return pageSize;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        int validPage = currentPage <= 0 ? 1 : currentPage;
        validPage = validPage > getPageCount() ? getPageCount() : validPage;
        this.currentPage = validPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getRecordCount() {
        return recordCount;
    }

    public void setRecordCount(int recordCount) {
        this.recordCount = recordCount;
    }
}

唯一ID工具类:

代码语言:javascript
复制
package com.product.dbutil.product.util;

import java.util.UUID;

public class UUIDTools {

    public UUIDTools() {
        // TODO Auto-generated constructor stub
    }

    public static String getUUID() {
        UUID uuid = UUID.randomUUID();
        return uuid.toString().replaceAll("-", "").substring(0, 6);
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档