ATTEN:张经理
phone:13696432490
QQ:9618195
ADD:重庆市渝北区栖霞路18号金贸时代7-24
本文由重庆佰鼎科技有限公司提供,重点介绍了OA致信相关内容。重庆佰鼎科技有限公司专业提供致远oa登录,致远oa软件,oa的工作流等多项产品服务。本公司长期从事该行业多项服务支持,经过多年的发展,现已成为行业服务的佼佼者。
OA致信办公室OA系统:
搭建项目框架;
登录:
用户登录,将信息放入session中,
登录成功:利用重定向,能避免频繁的发起请求;
登录失败:利用请求转发,将带着失败信息存入request中;
验证码:
利用RandomServlet类实现,给图片增加点击事件,利用时间的变化刷新。
添加部门:
点击标签,输入信息,经过MVC模式,实现将输入信息插入数据库的操作。OA致信
查询所有部门:
删除指定部门:
通过获取部门编号,实现删除功能。
总结:都是通过jsp页面发送请求,在servlet-service-dao的模式下,返回结果到jsp。
员工的增删改查也是这个模式。
报销模块:控制层的代码解析
/**
* 审核报销单
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void audit(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取审核表单的值
//expId:expId,result:result,auditDesc:auditDesc
int expId = Integer.parseInt(request.getParameter("expId"));
String result = request.getParameter("result");
String auditDesc = request.getParameter("auditDesc");
Employee auditor = (Employee) request.getSession().getAttribute("emp");
Date auditTime = new Date();
//调用业务层完成审核操作
Auditing auditing = new Auditing(expId, result, auditDesc, auditor, auditTime);
ExpenseService expService = new ExpenseServiceImpl();
try {
expService.audit(auditing);
//成功
response.getWriter().print("success");
} catch (Exception e) {
e.printStackTrace();
response.getWriter().print("error");
}
//输出结果ajax
}
/**
* 获取审核报销的表
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void toAudit(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//从session中获取当前用户的编号
HttpSession session = request.getSession();
Employee emp = (Employee) session.getAttribute("emp");
String auditorId = emp.getEmpId();
//调用业务层,查询到当前用户需要审核的报销单列表
ExpenseService expService = new ExpenseServiceImpl();
List
//跳转到指定的页面expense/myAudit.jsp
request.setAttribute("expList", expList);
request.getRequestDispatcher("/expense/toAudit.jsp").forward(request, response);
}
/**
* 添加报销
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取表单信息
//处理下拉框信息
String typeArr[] = request.getParameterValues("type");
String amountArr[] = request.getParameterValues("amount");
String itemDescArr[] = request.getParameterValues("itemDesc");
//封装所有报销单明细
List
double totalAmount=0;
for(int i=0;i String type = typeArr[i]; double amount = Double.parseDouble(amountArr[i]); String itemDesc = itemDescArr[i]; ExpenseItem item = new ExpenseItem(type, amount, itemDesc); itemList.add(item); totalAmount +=amount; } String empId = request.getParameter("empId"); Date expTime = new Date(); String expDesc = request.getParameter("expDesc"); String nextAuditorId = request.getParameter("nextAuditorId"); String lastResult = "新创建的"; String status = request.getParameter("status"); Expense expense = new Expense(empId, totalAmount, expTime, expDesc, nextAuditorId, lastResult, status); expense.setItemList(itemList); //创建业务层对象处理 ExpenseService expService = new ExpenseServiceImpl(); try { expService.add(expense); } catch (Exception e) { e.printStackTrace(); //失败页面跳转OA致信 request.setAttribute("error", "添加报销单失败"); request.getRequestDispatcher("/expense/expenseAdd.jsp").forward(request, response); } //跳转页面 } } 审批人假如是财务,那么要进行什么操作 : 当流程走到财务时,代表已经审核结束,只剩下支出即可。所以可以取消财务的 流程打回和拒绝,只剩下通过。 财务:审核表不再添加,只是在payment表做出变化 SQL语句的拼接,实现不同功能的查询 使用Echarts对收支实现图形化操作 后台sql语句,前台使用echarts完成饼图展示。 从echarts官网中找到适合项目功能的饼图实例,download导出,将其中的代码粘贴到业务要跳转的jsp页面,在body中定义div及其样式,在head中使用。 将后台查询的集合转换为json字符串的过程 请求转发和重定向的区别: 请求转发: request.getRequestDispatcher().forward(); 重定向: Response.sendRedirect(); 转发过程:客户端首先发送一个请求到服务器,服务器匹配Servlet,并指定执行。当这个Servlet执行完后,它要调用getRequestDispacther()方法,把请求转发给指定的Servlet_list.jsp,整个流程都是在服务端完成的,而且是在同一个请求里面完成的,因此Servlet和jsp共享同一个request,在Servlet里面放的所有东西,在student_list.jsp中都能取出来。因此,student_list.jsp能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端,整个过程是一个请求,一个响应。 重定向过程:客户端发送一个请求到服务器端,服务器匹配Servlet,这都和请求转发一样。Servlet处理完之后调用了sendRedirect()这个方法,这个方法是response方法。所以,当这个Servlet处理完后,看到response.sendRedirect()方法,立即向客户端返回个响应,响应行告诉客户端你必须再重新发送一个请求,去访问student_list.jsp,紧接着客户端收到这个请求后,立刻发出一个新的请求,去请求student_list.jsp,在这两个请求互不干扰、相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。因此,在sendRedirect()里面是两个请求,两个响应。 Forward是在服务器端的跳转,就是客户端一个请求给服务器,服务器直接将请求相关参数的信息原封不动的传递到该服务器的其他jsp或Servlet去处理。而sendRedirect()是客户端的跳转,服务器会返回客户端一个响应报头和新的URL地址,原来的参数信息如果服务器没有特殊处理就不存在了,浏览器会访问新的URL所指向的Servlet或jsp,这可能不是原来服务器上的webService了。 总结: 1、转发是在服务器端完成的,重定向是在客户端发生的; 2、转发的速度快,重定向速度慢; 3、转发是同一次请求,重定向是两次请求; 4、转发地址栏没有变化,重定向地址栏有变化; 5、转发必须是在同一台服务器下完成,重定向可以在不同的服务器下完成。
ATTEN:张经理
phone:13696432490
QQ:9618195
ADD:重庆市渝北区栖霞路18号金贸时代7-24