使用servlet进行文件上传

package cn.lhf.servlet;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.swing.JOptionPane;
//文件上传的引入的包
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import cn.lhf.bean.*;
import cn.lhf.dao.AuthorDAO;
import cn.lhf.dao.BookDAO;
import cn.lhf.dao.PublisherDAO;
import cn.lhf.dao.TypeDAO;
import cn.lhf.dao.UserDAO;
import javax.*;
import java.io.PrintWriter;
/**
 * servlet类,获取有关进行用户管理的页面的信息,并进行有关的处理。
 * 
 */
@SuppressWarnings("serial")//
public class UserServlet extends HttpServlet
{
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException 
	{
		this.doPost(request, response);
	}
	@SuppressWarnings( { "unchecked", "deprecation" })
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException 
	{
	    //设定请求和响应的对象,防止乱码
		request.setCharacterEncoding("GBK");
		response.setContentType("text/html;charset=GBK");
		response.setCharacterEncoding("GBK");
		//设定出错页面,出现异常时转向该页面
		String path = "error.jsp";
		// 获取页面中传递的标识
		String status = request.getParameter("status");
		PrintWriter out=response.getWriter();
		if (!"".equals(status)) 
		{
			
			if ("reg".equals(status)) //注册
			{
				// 工厂类
				DiskFileItemFactory factory = new DiskFileItemFactory();
				
				String rootpath = request.getRealPath("/uploadImage");
				// 设置临时目录,将文件放在该目录下
				factory.setRepository(new File(rootpath));
				// 设置大小
				factory.setSizeThreshold(1024 * 1024);
				// 准备上传
				ServletFileUpload upload = new ServletFileUpload(factory);
				User user = new User();
				UserDAO udao = new UserDAO();
				try 
				{
					List<FileItem> list = upload.parseRequest(request);
					// 遍历
					for (FileItem item : list) 
					{
						// 判断是否为表单
						if (item.isFormField()) 
						{
							// 得到字段名字
							String name = item.getFieldName();
							// 得到真正的值
							String value = item.getString("GBK");
							if ("userName".equals(name)) 
							{
								user.setUserName(value);
							}
							else if ("password".equals(name)) 
							{
								user.setPassword(value);
							} 
							else if ("sex".equals(name)) 
							{
								user.setSex(value);
							} 
							else if ("address".equals(name))
							{
								user.setAddress(value);
							}
							else if ("postcode".equals(name)) 
							{
								user.setPostcode(value);
							} 
							else if ("phone".equals(name)) 
							{
								user.setPhone(value);
							}
							else if ("email".equals(name)) 
							{
								user.setEmail(value);
							} 
							else if ("description".equals(name)) 
							{
								user.setDescription(value);
							}
						} 
						else 
						{
							// 如果是一个文件类型,用getName得到真正的值
							String value = item.getName();
							int start = value.lastIndexOf("\\");
							String fileName = value.substring(start + 1);
							user.setImageFile("uploadImage\\" + fileName);
							// 上传
							item.write(new File(rootpath, fileName));
						}//end for遍历
					}
				} 
				catch (Exception ex) 
				{
					ex.printStackTrace();
				}
				//调用udao的注册方法进行验证
				boolean flag = udao.insertUser(user);
				if (flag) //如果成功,则提示注册成功,并转向登录的页
				{
					JOptionPane.showMessageDialog(null,"恭喜你,注册成功!!");
					path = "login.jsp";
				}
				response.sendRedirect(path);
			}
		}// end 用户注册
		 
	}
}

 

你可能感兴趣的:(DAO,apache,jsp,servlet,swing)