JavaWeb开发(十七)实战-生鲜后台管理系统(四)增加/修改/删除生鲜种类、 分页功能、权限控制Filter

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&currentPage=1&currentCount=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&currentPage=1&currentCount=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 {

    }

}


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  JavaWeb开发实战-生鲜后台管理系统-增加/修改/删除生鲜种类、 分页功能、权限控制Filter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值