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> <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>