servlet实现文件上传数据增删该查
控制层:
文件上传需要import org.apache.commons.fileuploadjar包
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(); } }
服务层:
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); }
数据访问层:
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; } }
分页查找工具类:
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工具类:
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); } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。