Java实现对cookie的增删改查

1.springMVC框架:
         /**
          * 读取所有cookie
          * 注意二、从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name与value属性。maxAge属性只被浏览器用来判断Cookie是否过期
          * @param request
          * @param response
          */
         @RequestMapping("/showCookies")
        public void showCookies(HttpServletRequest request,HttpServletResponse response ){
             
            Cookie[] cookies = request.getCookies();//这样便可以获取一个cookie数组
            if (null==cookies) {
                System.out.println("没有cookie=========");
            else {
                for(Cookie cookie : cookies){
                    System.out.println("name:"+cookie.getName()+",value:"+ cookie.getValue());
                }
            }
             
        }
          /**
          * 添加cookie
          * @param response
          * @param name
          * @param value
          */
         @RequestMapping("/addCookie")
        public void addCookie(HttpServletResponse response,String name,String value){
            Cookie cookie = new Cookie(name.trim(), value.trim());
            cookie.setMaxAge(30 60);// 设置为30min
            cookie.setPath("/");
            System.out.println("已添加===============");
            response.addCookie(cookie);
        }
         /**
          * 修改cookie
          * @param request
          * @param response
          * @param name
          * @param value
          * 注意一、修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。
          */
         @RequestMapping("/editCookie")
        public void editCookie(HttpServletRequest request,HttpServletResponse response,String name,String value){
            Cookie[] cookies = request.getCookies();
            if (null==cookies) {
                System.out.println("没有cookie==============");
            else {
                for(Cookie cookie : cookies){
                    if(cookie.getName().equals(name)){
                        System.out.println("原值为:"+cookie.getValue());
                        cookie.setValue(value);
                        cookie.setPath("/");
                        cookie.setMaxAge(30 60);// 设置为30min
                        System.out.println("被修改的cookie名字为:"+cookie.getName()+",新值为:"+cookie.getValue());
                        response.addCookie(cookie);
                        break;
                    }
                }
            }
             
        }
         /**
          * 删除cookie
          * @param request
          * @param response
          * @param name
          */
         @RequestMapping("/delCookie")
        public void delCookie(HttpServletRequest request,HttpServletResponse response,String name){
            Cookie[] cookies = request.getCookies();
            if (null==cookies) {
                System.out.println("没有cookie==============");
            else {
                for(Cookie cookie : cookies){
                    if(cookie.getName().equals(name)){
                        cookie.setValue(null);
                        cookie.setMaxAge(0);// 立即销毁cookie
                        cookie.setPath("/");
                        System.out.println("被删除的cookie名字为:"+cookie.getName());
                        response.addCookie(cookie);
                        break;
                    }
                }
            }
        }


2.一般情况下,会首先对cookie进行封装:
/**
      * 根据名字获取cookie
      * @param request
      * @param name cookie名字
      * @return
      */
     public  Cookie getCookieByName(HttpServletRequest request,String name){
        Map<String,Cookie> cookieMap = ReadCookieMap(request);
        if(cookieMap.containsKey(name)){
            Cookie cookie = (Cookie)cookieMap.get(name);
            return cookie;
        }else{
            return null;
        }  
    }
      
      
      
     /**
      * 将cookie封装到Map里面
      * @param request
      * @return
      */
     private  Map<String,Cookie> ReadCookieMap(HttpServletRequest request){ 
        Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
        Cookie[] cookies = request.getCookies();
        if(null!=cookies){
            for(Cookie cookie : cookies){
                cookieMap.put(cookie.getName(), cookie);
            }
        }
        return cookieMap;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较全面的要求,需要设计到多个模块的功能实现。我可以给你一些思路和建议,但是具体实现还需要你自己去完成。 1. 登录模块:可以使用JavaWeb中的Session或者Cookie来保存用户登录状态,以及进行身份验证。可以参考以下代码实现: ```java // 登录 String username = request.getParameter("username"); String password = request.getParameter("password"); User user = userService.login(username, password); if (user != null) { // 登录成功,将用户信息存入Session request.getSession().setAttribute("user", user); response.sendRedirect("index.jsp"); } else { // 登录失败,返回错误信息 request.setAttribute("error", "用户名或密码错误"); request.getRequestDispatcher("login.jsp").forward(request, response); } ``` 2. 部门管理模块:可以使用JDBC或者ORM框架来实现对部门的增删改查操作。可以参考以下代码实现: ```java // 查询所有部门 List<Department> departments = departmentService.findAll(); // 添加部门 Department department = new Department(); department.setName("技术部"); department.setDescription("负责公司的技术研发"); departmentService.add(department); // 修改部门 department.setName("研发部"); department.setDescription("负责公司的产品研发"); departmentService.update(department); // 删除部门 departmentService.delete(department.getId()); ``` 3. 员工管理模块:同样可以使用JDBC或者ORM框架来实现,需要注意员工需要归属到具体的部门中。可以考虑使用外键来实现关联。可以参考以下代码实现: ```java // 查询所有员工 List<Employee> employees = employeeService.findAll(); // 添加员工 Employee employee = new Employee(); employee.setName("张三"); employee.setAge(25); employee.setGender("男"); employee.setDepartment(department); employeeService.add(employee); // 修改员工 employee.setName("李四"); employee.setAge(30); employeeService.update(employee); // 删除员工 employeeService.delete(employee.getId()); ``` 4. 任务派发模块:需要考虑如何进行任务的分配和管理,可以使用数据库表或者文件来记录任务信息。可以参考以下代码实现: ```java // 查询所有任务 List<Task> tasks = taskService.findAll(); // 添加任务 Task task = new Task(); task.setTitle("开发新功能"); task.setDescription("负责开发公司新的功能模块"); task.setEmployee(employee); taskService.add(task); // 修改任务 task.setTitle("优化系统性能"); task.setDescription("负责优化公司的系统性能"); taskService.update(task); // 删除任务 taskService.delete(task.getId()); ``` 5. 任务完成模块:员工完成任务后需要上传任务完成情况附件,可以考虑使用文件上传组件来实现。可以参考以下代码实现: ```java // 上传文件 Part filePart = request.getPart("file"); String fileName = filePart.getSubmittedFileName(); InputStream fileContent = filePart.getInputStream(); File file = new File("/path/to/upload/" + fileName); Files.copy(fileContent, file.toPath()); // 下载文件 File file = new File("/path/to/upload/" + fileName); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); Files.copy(file.toPath(), response.getOutputStream()); ``` 6. 任务审核模块:经理需要审核任务结果,可以使用审核流程或者审批模块来实现。可以参考以下代码实现: ```java // 查询所有待审核任务 List<Task> tasks = taskService.findPendingTasks(); // 审核任务 Task task = taskService.get(taskId); task.setStatus(Task.Status.APPROVED); taskService.update(task); ``` 7. 绩效管理模块:可以在任务完成后自动计算员工绩效,并将绩效信息存入数据库中,经理可以通过导出功能来查看员工的绩效情况。可以参考以下代码实现: ```java // 计算绩效 Employee employee = employeeService.get(employeeId); List<Task> tasks = taskService.findByEmployee(employee); int completedCount = 0; int totalCount = tasks.size(); for (Task task : tasks) { if (task.getStatus() == Task.Status.COMPLETED) { completedCount++; } } double performance = (double) completedCount / totalCount; // 存储绩效 Performance performance = new Performance(); performance.setEmployee(employee); performance.setPerformance(performance); performanceService.add(performance); // 导出绩效 List<Performance> performances = performanceService.findByDepartment(department); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=\"performance.xls\""); ExcelUtils.export(performances, response.getOutputStream()); ``` 以上是一个简单的思路,你可以根据自己的实际情况来进行具体实现。在实现的过程中,需要注意代码的可读性、可维护性和安全性等方面。同时,也需要注意数据表的设计和关联。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值