package com.imooc.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
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.imooc.domain.User;
/**
* Servlet implementation class RrgistServlet
*/
public class RegistServlet extends HttpServlet {
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// System.out.println("RegisServlet下的doget正常调用");
// 1.创建磁盘文件项工厂对象
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
// System.out.println("磁盘文件项工厂对象正常创建");
// 2.创建一个核心解析类的对象
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
// System.out.println("核心解析类对象正常创建");
//定义map集合
Mapmap=new HashMap();
try {
// System.out.println("try正常访问");
// 3.解析request请求,返回的是List集合,集合中存储的是FileItem的对象
List list = servletFileUpload.parseRequest(request);
// System.out.println("request请求正常解析");
// 4.遍历集合,获得fileItem,判断是表单项还是文件上传项
List hobbyList=new ArrayList();
for (FileItem fileItem : list) {
// 判断是普通表单项还是文件上传项
if (fileItem.isFormField()) {
// 是表单项
// 接收表单项的参数和值
String name = fileItem.getFieldName();
String value = fileItem.getString("utf-8");
System.out.println(name + "的值为" + value);
if(name.equals("hobby")) {
//复选框传来的值
String hobbyValue=fileItem.getString("utf-8");
//接收到一个值,并把它存到hobbyList集合中
hobbyList.add(hobbyValue);
//截去开头与结尾的[]
hobbyValue=hobbyList.toString().substring(1, hobbyList.toString().length()-1);
System.out.println("兴趣"+hobbyValue);
//将爱好存入集合中
map.put(name, hobbyValue);
}else
// 将数据存入集合中
map.put(name, value);
} else {
// 是文件上传项
//接收文件
}
}
System.out.println("map"+map);
// 封装数据到对象中
User user=new User();
user.setUserName(map.get("username"));
user.setPassword(map.get("password"));
user.setNickName(map.get("nickname"));
user.setSex(map.get("sex"));
user.setHobby(map.get("hobby"));
// 获得Context的对象
user.toString();
System.out.println("封装数据到User对象中"+user.toString());
List userList=(List) this.getServletContext().getAttribute("list");
System.out.println("取到的list集合"+userList);
userList.add(user);
System.out.println("给userList集合添加数据");
for(User u:userList)
System.out.println("userList集合"+u);
this.getServletContext().setAttribute("list", userList);
System.out.println("把userList集合传给ServletContext下的List集合");
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("发生异常,转到异常处理");
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}