Java实现对cookie的操作(增删改查)

/** 
* 读取所有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、付费专栏及课程。

余额充值