package com.rlovep.servlet; import java.io.IOException; import java.util.List; import java.util.Map; import javax.servlet.RequestDispatcher; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.BeanUtils; import com.rlovep.entity.FoodType; import com.rlovep.service.IFoodTypeService; import com.rlovep.utils.BeanFactory; /** * Servlet implementation class FoodTypeServlet */ @WebServlet(name="FoodTypeServlet",value="/foodType",loadOnStartup=2) public class FoodTypeServlet extends HttpServlet { private static final long serialVersionUID = 1L; //获得service private IFoodTypeService service=BeanFactory.getInstance("foodTypeService", IFoodTypeService.class); //转发和重定向uri private Object uri; @Override public void init(ServletConfig config) throws ServletException { super.init(config); //放置菜系列表 List<FoodType>list=service.query(); config.getServletContext().setAttribute("foodtype",list); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String method=request.getParameter("method"); switch (method) { case "add": add(request, response); break; case "list": list(request, response); break; case "update": update(request, response); break; case "delete": delete(request, response); break; case "search": search(request, response); break; case "show": show(request, response); break; default: break; } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } private void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String name=request.getParameter("name"); FoodType foodType=new FoodType(); foodType.setTypeName(name); service.add(foodType); list(request, response); } catch (Exception e) { e.printStackTrace(); uri="/error/error.jsp"; goTo(request, response, uri); } } private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { List<FoodType> list = service.query(); request.setAttribute("list", list); request.getServletContext().setAttribute("foodtype", list); uri=request.getRequestDispatcher("/sys/foodtype/cuisineList.jsp"); } catch (Exception e) { e.printStackTrace(); uri="/error/error.jsp"; }finally{ goTo(request, response, uri); } } /** * * @Title: goTo * @Description: TODO * @param request * @param response * @param uri * @throws ServletException * @throws IOException * @return:转发和重定向的处理函数,通过判断类型进行不同的转发 * @author peace w_peace@163.com */ private void goTo(HttpServletRequest request,HttpServletResponse response,Object uri) throws ServletException,IOException{ if(uri instanceof RequestDispatcher) { ((RequestDispatcher) uri).forward(request, response); }else{ response.sendRedirect(request.getContextPath()+(String)uri);//重定向时需要加上context的路径,因为给浏览器用; } } private void show(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String id=request.getParameter("id"); FoodType foodType=service.findById(Integer.parseInt(id)); request.setAttribute("type", foodType); uri=request.getRequestDispatcher("/sys/foodtype/updateCuisine.jsp"); } catch (Exception e) { e.printStackTrace(); uri="/error/error.jsp"; }finally{ goTo(request, response, uri); } } private void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { FoodType type = new FoodType(); Map<String, String[]> map = request.getParameterMap(); BeanUtils.populate(type, map); service.updata(type); list(request, response); } catch (Exception e) { e.printStackTrace(); uri="/error/error.jsp"; goTo(request, response, uri); } } private void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String id = request.getParameter("id"); service.delete(Integer.parseInt(id)); list(request, response); } catch (Exception e) { e.printStackTrace(); uri="/error/error.jsp"; goTo(request, response, uri); } } private void search(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String keyword = request.getParameter("keyword"); if(keyword!=null){ List<FoodType> list = service.query(keyword); request.setAttribute("list", list); uri = request.getRequestDispatcher("/sys/foodtype/cuisineList.jsp"); } } catch (Exception e) { e.printStackTrace(); uri="/error/error.jsp"; } finally{ goTo(request, response, uri); } } }