package com.rlovep.servlet;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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 org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.rlovep.entity.Food;
import com.rlovep.entity.FoodType;
import com.rlovep.service.IFoodService;
import com.rlovep.service.IFoodTypeService;
import com.rlovep.utils.BeanFactory;
import com.rlovep.utils.PageBean;
@WebServlet(value="/food",loadOnStartup=3,name="FoodServlet")
public class FoodServlet extends BaseServlet {
private static final long serialVersionUID = 1L;
private Object uri=null;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
PageBean<Food> pageBean=new PageBean<>();
//设置每页显示的行数
pageBean.setPageCount(6);
//将第一页进行封装
foodService.getAll(pageBean);
//获得所有食品
List<Food>list=foodService.query();
config.getServletContext().setAttribute("food", list);
config.getServletContext().setAttribute("pb", pageBean);
}
public Object getMenu(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
return uri;
}
public Object list(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
// 1. 获取“当前页”参数; (第一次访问当前页为null)
String currPage = request.getParameter("currentPage");
// 判断
if (currPage == null || "".equals(currPage.trim())) {
currPage = "1"; // 第一次访问,设置当前页为1;
}
// 转换
int currentPage = Integer.parseInt(currPage);
// 2. 创建PageBean对象,设置当前页参数; 传入service方法参数
PageBean<Food> pageBean = new PageBean<Food>();
pageBean.setCurrentPage(currentPage);
// 3. 调用service
foodService.getAll(pageBean); // 【pageBean已经被dao填充了数据】
// 4. 保存pageBean对象,到request域中
List<Food> list = pageBean.getPageData();
// 获得食物类别的方法
List<FoodType> types = new ArrayList<FoodType>();
if (list != null) {
for (Food food : list) {
FoodType foodtype = foodTypeService.findById(food.getFoodType_id());
types.add(foodtype);
}
}
request.setAttribute("types", types);
request.setAttribute("pageBean", pageBean);
request.setAttribute("list", list);//显示的页数据
uri = request.getRequestDispatcher("/sys/food/foodList.jsp");
return uri;
} catch (Exception e) {
e.printStackTrace(); // 测试使用
// 出现错误,跳转到错误页面;给用户友好提示
uri = "/error/error.jsp";
return uri;
}
}
public Object findFoodType(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
List<FoodType> foodtypes = foodTypeService.query();
request.setAttribute("foodtypes", foodtypes);
uri = request.getRequestDispatcher("/sys/food/saveFood.jsp");
return uri;
}
public Object add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(10 * 1024 * 1024); // 单个文件大小限制
upload.setSizeMax(50 * 1024 * 1024); // 总文件大小限制
upload.setHeaderEncoding("UTF-8"); // 对中文文件编码处理
if (upload.isMultipartContent(request)) {
Food food = new Food();
List<FileItem> list = upload.parseRequest(request);
for (FileItem item : list) {
if (item.isFormField()) {// 普通本文内容
String name = item.getFieldName();
// 获取值
String value = item.getString();
value = new String(value.getBytes("ISO-8859-1"),
"UTF-8");
BeanUtils.setProperty(food, name, value);
} else {// 上传内容
String fieldName = item.getFieldName();
String path = getServletContext()
.getRealPath("/upload");
File f = new File(path);
if (!f.exists()) {
f.mkdir();
}
// 全部绝对路径
String name = item.getName();
BeanUtils
.setProperty(food, fieldName, "upload/" + name);
// a2. 拼接文件名
File file = new File(path, name);
// d. 上传
if(!file.isDirectory()){
item.write(file);
}
item.delete(); // 删除组件运行时产生的临时文件
}
}
foodService.add(food);
} else {
}
uri=list(request, response);
return uri;
} catch (Exception e) {
e.printStackTrace();
uri = "/error/error.jsp";
return uri;
}
}
public Object query(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
List<Food> list = foodService.query();
request.setAttribute("list", list);
// 获得食物类别的方法
List<FoodType> types = new ArrayList<FoodType>();
for (Food food : list) {
FoodType foodtype = foodTypeService.findById(food.getFoodType_id());
types.add(foodtype);
}
request.setAttribute("types", types);
uri = request.getRequestDispatcher("/sys/food/foodList.jsp");
return uri;
} catch (Exception e) {
e.printStackTrace();
uri = "/error/error.jsp";
return uri;
}
}
public Object update(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(10 * 1024 * 1024); // 单个文件大小限制
upload.setSizeMax(50 * 1024 * 1024); // 总文件大小限制
upload.setHeaderEncoding("UTF-8"); // 对中文文件编码处理
if (upload.isMultipartContent(request)) {
Food food = new Food();
List<FileItem> list = upload.parseRequest(request);
for (FileItem item : list) {
if (item.isFormField()) {// 普通本文内容
String name = item.getFieldName();
// 获取值
String value = item.getString();
value = new String(value.getBytes("ISO-8859-1"),
"UTF-8");
BeanUtils.setProperty(food, name, value);
} else {// 上传内容
String fieldName = item.getFieldName();
String path = getServletContext()
.getRealPath("/upload");
File f = new File(path);
if (!f.exists()) {
f.mkdir();
}
String name = item.getName();
if(name!=null && !"".equals(name.trim())){
BeanUtils.setProperty(food, fieldName,
("upload/" + name));
// a2. 拼接文件名
File file = new File(path, name);
// d. 上传
if (!file.isDirectory()) {
item.write(file);
}
item.delete(); // 删除组件运行时产生的临时文件
}else{
int id = food.getId();
String img =foodService.findById(id).getImg();
BeanUtils.setProperty(food, "img",img);
}
}
}
foodService.updata(food);
} else {
}
uri=list(request, response);
return uri;
} catch (Exception e) {
e.printStackTrace();
uri = "/error/error.jsp";
return uri;
}
}
public Object delete(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
String id = request.getParameter("id");
foodService.delete(Integer.parseInt(id));
uri=list(request, response);
return uri;
} catch (Exception e) {
e.printStackTrace();
uri = "/error/error.jsp";
return uri;
}
}
public Object search(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
String keyword = request.getParameter("keyword");
if (keyword != null) {
List<Food> list = foodService.query(keyword);
List<FoodType> types = new ArrayList<FoodType>();
if (list != null) {
for (Food food : list) {
FoodType foodtype = foodTypeService.findById(food.getFoodType_id());
types.add(foodtype);
}
}
request.setAttribute("types", types);
request.setAttribute("list", list);
uri = request.getRequestDispatcher("/sys/food/foodList.jsp");
}
return uri;
} catch (Exception e) {
uri = "/error/error.jsp";
e.printStackTrace();
return uri;
}
}
// 这个方法没用
public Object show(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
Food food = foodService.findById(Integer.parseInt(id));
request.setAttribute("food", food);
// 得到食物里面的食物类型ID
int foodType_id = food.getFoodType_id();
List<FoodType> foodtypes = foodTypeService.query();
request.setAttribute("foodtypes", foodtypes);
// 通过
FoodType type = foodTypeService.findById(foodType_id);
request.setAttribute("type", type);
uri = request.getRequestDispatcher("/sys/food/updateFood.jsp");
return uri;
}
}