1. 增加/修改/删除生鲜种类、 分页功能
(1)新建Category实体类
package com.zzs.szsd.bean;
import java.util.Date;
public class Category {
private int c_id;
private String c_name;
private String place;
private Date createtime;
private int type;
public int getC_id() {
return c_id;
}
public void setC_id(int c_id) {
this.c_id = c_id;
}
public String getC_name() {
return c_name;
}
public void setC_name(String c_name) {
this.c_name = c_name;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}
(2)新建CategoryDao
package com.zzs.szsd.dao;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.zzs.szsd.bean.Category;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import java.sql.SQLException;
import java.util.List;
public class CategoryDao {
/**
* @method:addCategory
* @date: 2017/7/8
* @params:[category]
* @return: boolean
*/
public boolean addCategory(Category category) throws SQLException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
QueryRunner queryRunner=new QueryRunner(dataSource);
String sql="insert into category values(null,?,?,?,?)";
int row = queryRunner.update(sql, category.getC_name(),
category.getPlace(), category.getCreatetime(), category.getType());
if (row>0){
return true;
}else {
return false;
}
}
public List<Category> queryCategoryList() throws SQLException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
QueryRunner queryRunner=new QueryRunner(dataSource);
String sql="select * from category";
List<Category> categoryList = queryRunner.query(sql, new BeanListHandler<Category>(Category.class));
return categoryList;
}
public List<Category> queryPageCategoryList(int startPosition,int currentCount) throws SQLException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
QueryRunner queryRunner=new QueryRunner(dataSource);
String sql="select * from category limit ?,?";
List<Category> categoryList = queryRunner.query(sql, new BeanListHandler<Category>(Category.class),startPosition,currentCount);
return categoryList;
}
// public List<Category> queryCategoryLimit(int start,int currentCount) throws SQLException {
// ComboPooledDataSource dataSource=new ComboPooledDataSource();
// QueryRunner queryRunner=new QueryRunner(dataSource);
// String sql="select * from category limit ?,?";
// List<Category> categoryList = queryRunner.query(sql, new BeanListHandler<Category>(Category.class),start,currentCount);
// return categoryList;
// }
// /**
// * @method:queryCount 查询数据总数
// * @date: 2017/7/8
// * @params:[]
// * @return: int
// */
// public int queryCount() throws SQLException {
// ComboPooledDataSource dataSource=new ComboPooledDataSource();
// QueryRunner queryRunner=new QueryRunner(dataSource);
// String sql="select count(*) from category";
// Long query = queryRunner.query(sql, new ScalarHandler<>());
// return query.intValue();
// }
/**
* @method:updateCategory
* @date: 2017/7/10
* @params:[category]
* @return: boolean
*/
public boolean updateCategory(Category category) throws SQLException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
QueryRunner queryRunner=new QueryRunner(dataSource);
String sql="update category set c_name=?,place=?,type=? where c_id=?";
int row = queryRunner.update(sql, category.getC_name(), category.getPlace(), category.getType(),category.getC_id());
if (row>0){
return true;
}else {
return false;
}
}
/**
* @method:deleteCategory 操作数据库删除生鲜信息
* @date: 2017/7/10
* @params:[category]
* @return: boolean
*/
public boolean deleteCategory(Category category) throws SQLException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
QueryRunner queryRunner=new QueryRunner(dataSource);
String sql="delete from category where c_id=?";
int row = queryRunner.update(sql,category.getC_id());
return row>0?true:false;
}
public int queryCount() throws SQLException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
QueryRunner queryRunner=new QueryRunner(dataSource);
String sql="select count(*) from category";
Long query = queryRunner.query(sql, new ScalarHandler<>());
return query.intValue();
}
}
(3)新建CategoryService
package com.zzs.szsd.service;
import com.zzs.szsd.bean.Category;
import com.zzs.szsd.bean.Page;
import com.zzs.szsd.dao.CategoryDao;
import java.sql.SQLException;
import java.util.List;
public class CategoryService {
/**
* @method:addCategory 添加生鲜数据
* @date: 2017/7/8
* @params:[category]
* @return: boolean
*/
public boolean addCategory(Category category) throws SQLException {
CategoryDao dao = new CategoryDao();
boolean addCategory = dao.addCategory(category);
return addCategory;
}
/**
* @method:findCategory 查询所有生鲜数据
* @date: 2017/7/8
* @params:[]
* @return: java.util.List<net.zixue.bean.Category>
*/
public List<Category> findCategory() throws SQLException {
CategoryDao dao = new CategoryDao();
List<Category> categories = dao.queryCategoryList();
return categories;
}
/**
* @method:findPageCategory 分页查询生鲜数据
* @date: 2017/7/9
* @params:[currentPage, currentCount]
* @return: java.util.List<net.zixue.bean.Category>
*/
public Page findPageCategory(int currentPage, int currentCount) throws SQLException {
Page page=new Page();
// 1 查询出生鲜数据的总数
CategoryDao dao = new CategoryDao();
int totalCount = dao.queryCount();
/* 总数 每页显示数目 总页数
9 10 0.9 1
10 10 1 1
11 10 1.1 2
java ceil
*/
// 2 根据总数和当前页显示数 计算出总页数
int totalPage= (int) Math.ceil(1.0*totalCount/currentCount);
//3 将分页相关信息封装到page类中
page.setCurrentCount(currentCount);
page.setCurrentPage(currentPage);
page.setTotalCount(totalCount);
page.setTotalPage(totalPage);
// 计算查询的起始位置
// 页数 每页显示条数 起始位置
//
// 1 3 0
// 2 3 3
// 3 3 6 (currentPage-1)*currentCount
//计算出起始位置
int startPosition=(currentPage-1)*currentCount;
// 分页查询数据
List<Category> categories = dao.queryPageCategoryList(startPosition,currentCount);
// 将集合数据封装到page类中
page.setList(categories);
return page;
}
// public PageBean findPageCategory(int currentPage, int currentCount) throws SQLException {
// PageBean pageBean = new PageBean();
// CategoryDao dao = new CategoryDao();
// // 查询总提哦啊书
// int totalCount = dao.queryCount();
// // 封装分页数据
// pageBean.setTotalCount(totalCount);
// pageBean.setCurrentCount(currentCount);
// pageBean.setCurrentPage(currentPage);
// /**
// * 总数 每页显示 页数
// *10 10 1 1
// * 11 10 1.1 2
// * 9 10 0.9 1
// * java ceil
// */
//
// // 计算总页数
// double totalPage = Math.ceil(0.1 * totalCount / currentCount);
// pageBean.setTotalPage((int) totalPage);
//
// // 计算起始位置
页数 每页显示条数 起始位置
1 3 0
2 3 3
3 3 6
// // (当前页数-1 )乘以每页显示的条数=起始位置
// int startPosition = (currentPage - 1) * currentCount;
// // 获取categoryList
// List<Category> categories = dao.queryCategoryLimit(startPosition, currentCount);
// // 将生鲜列表list封装到pageBean中
//
// pageBean.setList(categories);
//
// return pageBean;
// }
public boolean updateCategory(Category category) throws SQLException {
CategoryDao dao=new CategoryDao();
boolean updateCategory = dao.updateCategory(category);
return updateCategory;
}
/**
* @method:deleteCategory servcie删除生鲜信息数据
* @date: 2017/7/10
* @params:[category]
* @return: boolean
*/
public boolean deleteCategory(Category category) throws SQLException {
CategoryDao dao=new CategoryDao();
boolean updateCategory = dao.deleteCategory(category);
return updateCategory;
}
}
(4)新建CategoryServlet
package com.zzs.szsd.web;
import com.zzs.szsd.bean.Category;
import com.zzs.szsd.bean.Page;
import com.zzs.szsd.service.CategoryService;
import org.apache.commons.beanutils.BeanUtils;
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 java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Date;
import java.util.Map;
@WebServlet(name = "CategoryServlet",urlPatterns = "/category")
public class CategoryServlet extends BaseServlet {
/**
* @method:addCategory 增加生鲜种类
* @date: 2017/7/8
* @params:[request, response]
* @return: void
*/
public void addCategory(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// 获取参数 通过BeanUtils封装实体类
Map<String, String[]> parameterMap = request.getParameterMap();
Category category=new Category();
BeanUtils.populate(category,parameterMap);
category.setCreatetime(new Date());
CategoryService categoryService=new CategoryService();
boolean b = categoryService.addCategory(category);
if (b){
//添加成功
response.setStatus(201);
request.getRequestDispatcher("/category-add.jsp").forward(request,response);
}else {
// 添加失败
response.setStatus(600);
request.getRequestDispatcher("/category-add.jsp").forward(request,response);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* @method:getCategoryList 查询生鲜列表
* @date: 2017/7/10
* @params:[request, response]
* @return: void
*/
public void getCategoryList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1 调用service中的查询方法
try {
int currentPage = Integer.parseInt(request.getParameter("currentPage"));
int currentCount = Integer.parseInt(request.getParameter("currentCount"));
// 给分页数据设置默认值
if (currentCount==0){
currentCount=10;
}
if (currentPage==0){
currentPage=1;
}
CategoryService service=new CategoryService();
Page page = service.findPageCategory(currentPage, currentCount);
if (page!=null) {
request.setAttribute("page",page);
request.getRequestDispatcher("/category-list.jsp").forward(request,response);
}else {
request.getRequestDispatcher("/category-list.jsp").forward(request,response);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* @method:updateCategory 修改生鲜信息
* @date: 2017/7/10
* @params:[request, response]
* @return: void
*/
public void updateCategory(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// 1 调用service中的查询方法
Map<String, String[]> parameterMap = request.getParameterMap();
Category category=new Category();
BeanUtils.populate(category,parameterMap);
CategoryService service=new CategoryService();
boolean updateCategory = service.updateCategory(category);
if (updateCategory){
// 修改成功后重定向到生鲜列表界面
response.sendRedirect(request.getContextPath()+"/category?method=getCategoryList¤tPage=1¤tCount=10");
}else {
// 失败了直接提示
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("修改失败");
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* @method:deleteCategory 删除生鲜分类
* @date: 2017/7/10
* @params:[request, response]
* @return: void
*/
public void deleteCategory(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
try {
// 1 调用service中的查询方法
Map<String, String[]> parameterMap = request.getParameterMap();
Category category=new Category();
BeanUtils.populate(category,parameterMap);
CategoryService service=new CategoryService();
boolean updateCategory = service.deleteCategory(category);
if (updateCategory){
// 删除成功后重定向到生鲜列表界面
response.sendRedirect(request.getContextPath()
+"/category?method=getCategoryList¤tPage=1¤tCount=10");
}else {
// 失败了直接提示
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("删除失败");
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2. 权限控制Filter
(1)新建UserFilter
package com.zzs.szsd.filter;
import com.zzs.szsd.bean.User;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebFilter(filterName = "UserFilter",urlPatterns = "/category")
public class UserFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
// 1 获取serssion 校验用户信息
HttpServletRequest request= (HttpServletRequest) req;
HttpServletResponse response= (HttpServletResponse) resp;
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
// 2 判断user信息是否为空 ,空则跳转登录界面
if (user==null) {
response.sendRedirect(request.getContextPath()+"/login.jsp");
return;
}
// 3 user不为空 放行
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
}
}