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); 
	} 
} 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/10697.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论