OA系统-部门和员工管理模块

1.项目入门-了解项目功能

(1)什么是OA系统?
即“办公自动化”,是使用网络和软件技术构建的协同办公与内部管理的平台。OA是组织行为管理软件,也是企业信息化的基础软件,使用oa可以实现单位内部的高效协同协作,功能上涵盖了沟通、审批、协作、文档信息、人事、行政、考勤、客户、销售、采购、公文收发、业务集成等内容。
(2)在项目的需求分析阶段,开发人员需要准备哪些东西?
了解项目功能,开发软件
(3)oracle中,导入数据库表如何操作?
在这里插入图片描述

2.项目入门-搭建项目框架

(1)根据MVC原理,OA项目如何进行分层?
在这里插入图片描述
(2)导入的外部jar包有哪些?
在这里插入图片描述
(3)项目访问名如何更改?
右击项目–>Properties–>MyEclipse–>Project Facets–>Web
在这里插入图片描述

3.部门管理-添加部门-完成后台代码并进行JUnit测试

(1)进行JUnit测试的步骤?
1、导入JUnit的jar包
2、在需要测试的方法上添加注解@Test
3、右击需要测试的方法选择run as JUnit Test
(2)如何在web.xml进行servet的配置

<servlet>
    <servlet-name>DeptServlet</servlet-name>
    <servlet-class>an.sz.servlet.DeptServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>DeptServlet</servlet-name>
    <url-pattern>/dept</url-pattern>
  </servlet-mapping>

(3)对于添加部门操作,大致逻辑应该怎么实现,添加成功怎么办,添加失败怎么办?
1、在Dao层编写插入数据库操作的代码
2、在service层编写业务逻辑
3、测试是否添加成功,如果添加成功使用重定向到成功的页面,如果失败则使用请求转发到本页面,携带失败的信息

4.部门管理-添加部门-完成前台代码并成功测试

(1)添加部门成功要利用重定向,假如用请求转发可以吗?
不可以,因为如果添加部门成功则会请求转发,此时地址栏信息是不会变的,如果我们再次刷新本页面,则表单会再提交一次,又会触发一次添加部门的信息。
(2)根据时序图,简述添加部门的过程:
用户在deptAdd.jsp页面发送一个添加部门的请求,req会携带请求信息去servlet找处理本次请求的方法,调用service方法回调add添加部门信息的方法,此时调用了业务层中的方法,业务层中又调用了数据库层中添加部门信息的方法,返回的int类型的整数如果大于0则添加成功使用重定向流转到成功的界面,如果添加失败则使用请求转发携带提示信息流转到本页面

5.部门管理-查询所有部门

(1)查询所有部门,整体逻辑是什么样的?中间如何跳转?

DeptServlet:
//查询所有部门信息
	public void findAll(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
		//处理请求信息
		DeptService ds = new DeptServiceImpl();
		List<Dept> list = ds.findAll();
		req.setAttribute("list", list);
		req.getRequestDispatcher("/system/deptList.jsp").forward(req, resp);
	}
DeptService:
//查询所有部门信息
	List<Dept> findAll();
DeptServiceImpl:
//查询所有部门信息
	@Override
	public List<Dept> findAll() {
		
		return dd.findAll();
	}
DeptDao:
//查询所有部门信息
	List<Dept> findAll();
DeptDaoImpl:
//查询所有部门信息
	@Override
	public List<Dept> findAll() {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		List<Dept> list = null;
		try {
			conn = DBUtil.getConnection();
			String sql = "select * from dept";
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			list = new ArrayList<>();
			while(rs.next()){
				Dept dept = new Dept();
				dept.setDeptno(rs.getInt("deptno"));
				dept.setDeptname(rs.getString("deptname"));
				dept.setLocation(rs.getString("location"));
				list.add(dept);
			}
					
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			DBUtil.closeAll(rs, ps, conn);
		}
		return list;
	}

(2)后台查询出部门数据放入集合中,在jsp中如何进行遍历?代码如何实现?

<c:forEach items="${list}" var="s">
        	<tr>
		        <td><input name="" type="checkbox" value="" /></td>
		        <td>${s.deptno }</td>
		        <td>${s.deptname }</td>
		        <td>${s.location }</td>
		        <td><a href="deptUpdate.html" class="tablelink">修改</a> &nbsp;&nbsp;&nbsp;&nbsp;  <a href="javascript:void(0)"  onclick="deleteDept(${s.deptno})" class="tablelink"> 删除</a></td>
	        </tr> 
        </c:forEach>

6.部门管理-删除指定部门信息

(1)删除部门,整体逻辑是什么样的?

DeptServlet:
//删除部门信息
	public void delete(HttpServletRequest req, HttpServletResponse resp) throws IOException{
		//获取请求信息
		int deptno = Integer.parseInt(req.getParameter("deptno"));
		//处理请求信息
		DeptService ds = new DeptServiceImpl();
		int num = ds.delete(deptno);
		//响应处理结果
		if(num>0){
			//删除成功
			resp.sendRedirect(req.getContextPath()+"/dept?method=findAll");
		}
	}
DeptService:
//删除指定部门信息
	int delete(int deptno);
DeptServiceImpl:
//删除指定部门信息
	@Override
	public int delete(int deptno) {
		
		return dd.delete(deptno);
	}
DeptDao:
//删除指定的部门信息
	int delete(int deptno);
DeptDaoImpl:
//删除指定的部门信息
	@Override
	public int delete(int deptno) {
		String sql = "delete from dept where deptno=?";
		Object[] params = {deptno};
		return DBUtil.executeUpdate(sql, params);
	}

(2)为什么在删除部门完成后,是请求转发至查询所有的servlet中,而不是直接跳转到deptList.jsp中
因为请求转发的地址栏信息不会改变,如果是重定向则地址会变,如果再刷新一次就会又发送一次删除的请求。

7.部门管理-更新指定部门信息

(1)更新部门,整体逻辑是什么样的?
1、先根据deptno在数据库中查找部门信息,并将结果流转到修改页面中
2、当用户点击修改时将修改数据库中此部门信息
(2)在更新失败后,请求转发到deptUpdate.jsp页面中,在页面中怎么处理错误信息?将错误信息放入什么标签中
先将错误信息存储进request对象中,再将取出来的数据在span标签内显示

8.部门管理-绘制更新部门时序图

(1)简述,利用powerdesigner画时序图的步骤?
1、打开powerdesigner,点击【文件】菜单,再选择【新建模型】
2、在【新建模型】界面,在【类型】中选择【应用】,在【类型项】中选择【UML序列图】,然后点击【OK】
3、在右侧的工具栏中,在【序列图】下点击【参考者】图标,然后在主窗口上点击一次,就生成一个参与者
4.在右侧的工具栏中,在【序列图】下点击【对象】图标,然后在主窗口上点击一次,就生成一个对象
5、在右侧的工具栏中,在【序列图】下点击【激活】图标,然后在主窗口上的对象虚线中点击一次,就生成一个激活段
6、在右侧的工具栏中,在【序列图】下点击【消息】图标,然后在主窗口上点击一个对象或参与人,然后拖动鼠标连接到另一个对象,从而建立相互间的消息交互关系。

9.员工管理-添加员工-创建实体类和搭建框架

(1)员工表对应一个实体类,那么在这个实体类中,关联的部门的信息应该怎么编写呢
将部门信息封装为一个实体对象,作为员工表的私有属性
private Dept dept;

10.员工管理-添加员工-实现后台开发

(1)简述添加员工的逻辑。
从empAdd.jsp页面中获取表单提交的数据,在servlet中调用业务层的添加雇员信息的方法,在业务层中调用了数据访问层中添加雇员信息的方法,如果添加成功重定向到成功的页面,如果添加失败携带提示失败的信息请求转发到empAdd.jsp页面。
(2)如何进行String类型向int类型转换
使用Integer包装类的一个静态方法parseInt进行转换

11.员工管理-添加员工-实现前台开发

(1)html页面和jsp页面的区别是什么?
Html页面是静态页面,只能静态的展现,而jsp页面是动态页面

12.员工管理-完善添加员工-使用日历插件和富文本编辑器

(1)如何使用日历插件My97DatePicker?
1、先将文件导入到WebRoot下
2、在jsp文件中引入js文件
3、在需要添加的地方利用触发函数引入函数名
(2)如何使用富文本编辑器?
1、先将文件导入到WebRoot下
2、在jsp文件中的script中调用show方法

<script type="text/javascript">
		KE.show({id:"ecp",width:"500px",height:"300px",skinType:"tinymce"});
</script>
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值