计划内任务
任务编号
任务名称
最晚结束日期
工作量
任务完成标准
完成状态
1
修改区域删除部分
2009/05/04
2009/05/04
被企业表[company]表外键引用的区域信息不可以删除,系统给出提示“无法删除区域 XXX ,该数据已被引用!”。
Y
2
企业列表
2009/05/04
2009/05/04
在系统管理页,点击 企业 ,从企业表中查询出全部数据显示到列表页中,并添加分页,在右上方添加“新建企业客户”按钮。
Y
3
新增企业
2009/05/04
2009/05/04
在企业列表界面中点击“新建企业客户”按钮,系统转到新增企业界面,界面中显示如下字段:
企业名称: (非空验证,唯一性验证)
联系人: (非空验证)
联系方式: (非空验证)
企业地址: (非空验证)
信用级别: (非空验证,数字类型验证)
信用额度: (非空验证,数字类型验证)
所在区域:(下拉列表,显示系统的区域元数据)
用户在新增企业界面上点击“确定”按钮,系统将企业信息保存到数据库中。并返回企业列表页面,系统提示“新增成功!”。
Y
4
修改企业
2009/05/04
2009/05/04
区域列表界面中点击“修改”按钮,系统转到修改区域界面,界面中显示此企业用户的相应信息,更新数据后,用户在修改区域界面上点击“更新”按钮,系统将修改后的企业信息保存到数据库中。并返回企业列表页面,系统提示“修改成功!”。
Y
5
删除企业
2009/05/04
2009/05/04
用户在企业列表界面中点击“删除”按钮,系统提示“确认要删除该企业吗?”,用户确认后,删除用户所选数据,删除所选数据后,刷新企业列表页,并提示“删除成功!”,被TASK表外键引用的企业信息不可以删除,系统给出提示“无法删除, 该数据已被引用!”。
P
6
查看企业
2009/05/04
2009/05/04
在企业列表界面中点击“查看”按钮,系统转到企业详细信息界面,界面中显示相应信息。用户在企业详细信息界面上点击“返回列表”按钮,系统将返回企业列表页面。
Y
7
服务项目列表
2009/05/04
2009/05/05
在系统管理页面中,点击项目按钮,查询出全部项目信息,列表显示于引页面中,并添加分页,右上角添加“新建任务项目”按钮。
Y
8
新增服务项目
2009/05/04
2009/05/05
在服务项目列表界面中点击“新增”按钮,系统转到新增服务项目界面,界面中显示如下字段:
项目名称(非空验证,唯一性验证)
处理费用(非空验证,数字类型验证)
处理时间(非空验证,数字类型验证)
用户在新增服务项目界面上点击“确定”按钮,系统将服务项目信息保存到数据库中。并返回服务项目列表页面,系统提示“新增成功!”。
Y
9
修改服务项目
2009/05/04
2009/05/05
在服务项目列表界面中点击“修改”按钮,系统转到修改界面,界面中显示此任务的详细信息于相应位置,用户在修改界面上点击“更新”按钮,系统将修改后的服务项目信息保存到数据库中。并返回服务项目列表页面,系统提示“修改成功!”。
Y
10
删除服务项目
2009/05/04
2009/05/05
用户在服务项目列表界面中点击“删除”按钮,系统提示“确认要删除该项目吗?”,用户确认后,删除用户所选服务项目,删除所选数据后,刷新服务项目列表页,并提示“删除成功!”,被任务表[task]外键引用的服务项目信息不可以删除,系统给出提示“无法删除XXX ,该数据已被引用!”。
Y
11
查看服务项目
2009/05/04
2009/05/05
在服务项目列表界面中点击“查看”按钮,系统转到项目详细信息界面,根据此项目id查询出详细信息显示到页面中。用户在详细信息界面上点击“返回列表”按钮,系统将返回服务项目列表页面。
Y
临时任务
遇到的问题及解决方式
4.1.1. 关于客户端跳转传递参数的中文乱码问题
问题:
添加企业信息
1、页面代码:
<tr>
<td width="80" align="left" class="text_14_gray">企业名称:</td>
<td width="200" align="left" class="text_14_gray"><input type="text" name="title" onchange="checkTitle(this.value);" value="${requestScope.title }">
<span id="checkTitle" style="color:#6600FF">${requestScope.useableness}</span>
</td>
</tr>
当输入企业名称后,进行名称唯一性检查(通过JavaScript跳转)
function checkTitle(title){
var type="insert";
window.location = "<%=request.getContextPath()%>/logincheck/admin/CompanyServlet?operateType=checktitle&title="+title +"&type="+type ;
}
这样就涉及到传递输入的企业名称title,如果是中文,接收的时候会出现乱码
2、CompanyServlet代码
if("checktitle".equals(operateType)){
String type=request.getParameter("type");
String title=request.getParameter("title");
String title=new String(request.getParameter("title").getBytes("ISO8859-1"));
Company com=null;
try {
com = DAOFactory.getICompanyDAOInstance().findByCompanyTitle(title);
} catch (Exception e) {
e.printStackTrace();
}
String useableness="该企业信息已存在!";
if(com==null){
useableness="该企业名称可用!";
}
request.setAttribute("useableness", useableness);
if("insert".equals(type)){
path="/logincheck/admin/CompanyServlet?operateType=insertpre&useableness="+useableness+"&title="+title;
}else if("update".equals(type)){
int id=Integer.parseInt(request.getParameter("id"));
path="/logincheck/admin/CompanyServlet?operateType=updatepre&useableness="+useableness+"&title="+title+"&id="+id;
}
}else if("insertpre".equals(operateType)){
Map<Integer,String> allArea=null;
try {
allArea=DAOFactory.getIAreaDAOInstance().getAllArea();
} catch (Exception e) {
e.printStackTrace();
}
String useableness=request.getParameter("useableness");
request.setAttribute("useableness", useableness);
String title=request.getParameter("title");
request.setAttribute("title", title);
request.setAttribute("allArea", allArea);
path="/logincheck/admin/addcompany.jsp";
}else if("insert".equals(operateType)){
String title=request.getParameter("title");
String linkman=request.getParameter("linkman");
String tel=request.getParameter("tel");
String address=request.getParameter("address");
Double creditsLimit=Double.parseDouble(request.getParameter("creditsLimit"));
int areaid=Integer.parseInt(request.getParameter("areaid"));
String atitle=null;
try {
atitle=DAOFactory.getIAreaDAOInstance().getAreaTitleByAreaId(areaid);
} catch (Exception e) {
e.printStackTrace();
}
Company com=new Company();
com.setTitle(title);
com.setAreaid(areaid);
com.setAtitle(atitle);
com.setLinkman(linkman);
com.setTel(tel);
com.setAddress(address);
com.setCreditsLimit(creditsLimit);
boolean flag=false;
try {
flag=DAOFactory.getICompanyDAOInstance().doInsert(com);
} catch (Exception e) {
e.printStackTrace();
}
if(flag){
info="添加成功!!";
}else{
info="添加失败!!";
}
request.setAttribute("info", info);
forward="logincheck/admin/CompanyServlet?operateType=companymanage";
request.setAttribute("forward", forward);
path="/logincheck/message.jsp";
}
解决方法:修改CompanyServlet代码
if("checktitle".equals(operateType)){
String type=request.getParameter("type");
//String title=request.getParameter("title");
//这样中文会乱码
String title=new String(request.getParameter("title").getBytes("ISO8859-1"));
Company com=null;
try {
com = DAOFactory.getICompanyDAOInstance().findByCompanyTitle(title);
} catch (Exception e) {
e.printStackTrace();
}
String useableness="该企业信息已存在!";
if(com==null){
useableness="该企业名称可用!";
}
request.setAttribute("useableness", useableness);
if("insert".equals(type)){
path="/logincheck/admin/CompanyServlet?operateType=insertpre&useableness="+useableness+"&title="+title;
}else if("update".equals(type)){
int id=Integer.parseInt(request.getParameter("id"));
path="/logincheck/admin/CompanyServlet?operateType=updatepre&useableness="+useableness+"&title="+title+"&id="+id;
}
}else if("insertpre".equals(operateType)){
Map<Integer,String> allArea=null;
try {
allArea=DAOFactory.getIAreaDAOInstance().getAllArea();
} catch (Exception e) {
e.printStackTrace();
}
String useableness=request.getParameter("useableness");
request.setAttribute("useableness", useableness);
//此处属于服务器跳转过来的,不用特殊处理,特殊处理了反而出现???
// if(request.getParameter("useableness")!=null){
// request.setAttribute("useableness", new String(request.getParameter("useableness").getBytes("ISO8859-1")));
// }
String title=request.getParameter("title");
request.setAttribute("title", title);
//此处属于服务器跳转过来的,不用特殊处理???
// if(request.getParameter("title")!=null){
// request.setAttribute("title", new String(request.getParameter("title").getBytes("ISO8859-1")));
// }
request.setAttribute("allArea", allArea);
path="/logincheck/admin/addcompany.jsp";
}else if("insert".equals(operateType)){
String title=request.getParameter("title");
String linkman=request.getParameter("linkman");
String tel=request.getParameter("tel");
String address=request.getParameter("address");
Double creditsLimit=Double.parseDouble(request.getParameter("creditsLimit"));
int areaid=Integer.parseInt(request.getParameter("areaid"));
String atitle=null;
try {
atitle=DAOFactory.getIAreaDAOInstance().getAreaTitleByAreaId(areaid);
} catch (Exception e) {
e.printStackTrace();
}
Company com=new Company();
com.setTitle(title);
com.setAreaid(areaid);
com.setAtitle(atitle);
com.setLinkman(linkman);
com.setTel(tel);
com.setAddress(address);
com.setCreditsLimit(creditsLimit);
boolean flag=false;
try {
flag=DAOFactory.getICompanyDAOInstance().doInsert(com);
} catch (Exception e) {
e.printStackTrace();
}
if(flag){
info="添加成功!!";
}else{
info="添加失败!!";
}
request.setAttribute("info", info);
forward="logincheck/admin/CompanyServlet?operateType=companymanage";
request.setAttribute("forward", forward);
path="/logincheck/message.jsp";
}
修改的企业信息页面代码中,还需要注意,当添加了检查企业名称是否唯一的功能后,需要修改代码
<tr>
<td width="80" align="left" class="text_14_gray">企业名称:</td>
<td width="200" align="left" class="text_14_gray">
<%
String title=(String)request.getAttribute("title");
if(title!=null){
%>
<input type="text" name="title" onchange="checkTitle(this.value);" value="${requestScope.title }">
<%
}else{
%>
<input type="text" name="title" onchange="checkTitle(this.value);" value="${requestScope.company.title }">
<%
}
%>
<span id="checkTitle" style="color:#6600FF">${requestScope.useableness}</span>
</td>
</tr>
否则修改后的名称返回不到页面中,一返回就被原来的数据覆盖
任务编号
任务名称
最晚结束日期
工作量
任务完成标准
完成状态
1
修改区域删除部分
2009/05/04
2009/05/04
被企业表[company]表外键引用的区域信息不可以删除,系统给出提示“无法删除区域 XXX ,该数据已被引用!”。
Y
2
企业列表
2009/05/04
2009/05/04
在系统管理页,点击 企业 ,从企业表中查询出全部数据显示到列表页中,并添加分页,在右上方添加“新建企业客户”按钮。
Y
3
新增企业
2009/05/04
2009/05/04
在企业列表界面中点击“新建企业客户”按钮,系统转到新增企业界面,界面中显示如下字段:
企业名称: (非空验证,唯一性验证)
联系人: (非空验证)
联系方式: (非空验证)
企业地址: (非空验证)
信用级别: (非空验证,数字类型验证)
信用额度: (非空验证,数字类型验证)
所在区域:(下拉列表,显示系统的区域元数据)
用户在新增企业界面上点击“确定”按钮,系统将企业信息保存到数据库中。并返回企业列表页面,系统提示“新增成功!”。
Y
4
修改企业
2009/05/04
2009/05/04
区域列表界面中点击“修改”按钮,系统转到修改区域界面,界面中显示此企业用户的相应信息,更新数据后,用户在修改区域界面上点击“更新”按钮,系统将修改后的企业信息保存到数据库中。并返回企业列表页面,系统提示“修改成功!”。
Y
5
删除企业
2009/05/04
2009/05/04
用户在企业列表界面中点击“删除”按钮,系统提示“确认要删除该企业吗?”,用户确认后,删除用户所选数据,删除所选数据后,刷新企业列表页,并提示“删除成功!”,被TASK表外键引用的企业信息不可以删除,系统给出提示“无法删除, 该数据已被引用!”。
P
6
查看企业
2009/05/04
2009/05/04
在企业列表界面中点击“查看”按钮,系统转到企业详细信息界面,界面中显示相应信息。用户在企业详细信息界面上点击“返回列表”按钮,系统将返回企业列表页面。
Y
7
服务项目列表
2009/05/04
2009/05/05
在系统管理页面中,点击项目按钮,查询出全部项目信息,列表显示于引页面中,并添加分页,右上角添加“新建任务项目”按钮。
Y
8
新增服务项目
2009/05/04
2009/05/05
在服务项目列表界面中点击“新增”按钮,系统转到新增服务项目界面,界面中显示如下字段:
项目名称(非空验证,唯一性验证)
处理费用(非空验证,数字类型验证)
处理时间(非空验证,数字类型验证)
用户在新增服务项目界面上点击“确定”按钮,系统将服务项目信息保存到数据库中。并返回服务项目列表页面,系统提示“新增成功!”。
Y
9
修改服务项目
2009/05/04
2009/05/05
在服务项目列表界面中点击“修改”按钮,系统转到修改界面,界面中显示此任务的详细信息于相应位置,用户在修改界面上点击“更新”按钮,系统将修改后的服务项目信息保存到数据库中。并返回服务项目列表页面,系统提示“修改成功!”。
Y
10
删除服务项目
2009/05/04
2009/05/05
用户在服务项目列表界面中点击“删除”按钮,系统提示“确认要删除该项目吗?”,用户确认后,删除用户所选服务项目,删除所选数据后,刷新服务项目列表页,并提示“删除成功!”,被任务表[task]外键引用的服务项目信息不可以删除,系统给出提示“无法删除XXX ,该数据已被引用!”。
Y
11
查看服务项目
2009/05/04
2009/05/05
在服务项目列表界面中点击“查看”按钮,系统转到项目详细信息界面,根据此项目id查询出详细信息显示到页面中。用户在详细信息界面上点击“返回列表”按钮,系统将返回服务项目列表页面。
Y
临时任务
遇到的问题及解决方式
4.1.1. 关于客户端跳转传递参数的中文乱码问题
问题:
添加企业信息
1、页面代码:
<tr>
<td width="80" align="left" class="text_14_gray">企业名称:</td>
<td width="200" align="left" class="text_14_gray"><input type="text" name="title" onchange="checkTitle(this.value);" value="${requestScope.title }">
<span id="checkTitle" style="color:#6600FF">${requestScope.useableness}</span>
</td>
</tr>
当输入企业名称后,进行名称唯一性检查(通过JavaScript跳转)
function checkTitle(title){
var type="insert";
window.location = "<%=request.getContextPath()%>/logincheck/admin/CompanyServlet?operateType=checktitle&title="+title +"&type="+type ;
}
这样就涉及到传递输入的企业名称title,如果是中文,接收的时候会出现乱码
2、CompanyServlet代码
if("checktitle".equals(operateType)){
String type=request.getParameter("type");
String title=request.getParameter("title");
String title=new String(request.getParameter("title").getBytes("ISO8859-1"));
Company com=null;
try {
com = DAOFactory.getICompanyDAOInstance().findByCompanyTitle(title);
} catch (Exception e) {
e.printStackTrace();
}
String useableness="该企业信息已存在!";
if(com==null){
useableness="该企业名称可用!";
}
request.setAttribute("useableness", useableness);
if("insert".equals(type)){
path="/logincheck/admin/CompanyServlet?operateType=insertpre&useableness="+useableness+"&title="+title;
}else if("update".equals(type)){
int id=Integer.parseInt(request.getParameter("id"));
path="/logincheck/admin/CompanyServlet?operateType=updatepre&useableness="+useableness+"&title="+title+"&id="+id;
}
}else if("insertpre".equals(operateType)){
Map<Integer,String> allArea=null;
try {
allArea=DAOFactory.getIAreaDAOInstance().getAllArea();
} catch (Exception e) {
e.printStackTrace();
}
String useableness=request.getParameter("useableness");
request.setAttribute("useableness", useableness);
String title=request.getParameter("title");
request.setAttribute("title", title);
request.setAttribute("allArea", allArea);
path="/logincheck/admin/addcompany.jsp";
}else if("insert".equals(operateType)){
String title=request.getParameter("title");
String linkman=request.getParameter("linkman");
String tel=request.getParameter("tel");
String address=request.getParameter("address");
Double creditsLimit=Double.parseDouble(request.getParameter("creditsLimit"));
int areaid=Integer.parseInt(request.getParameter("areaid"));
String atitle=null;
try {
atitle=DAOFactory.getIAreaDAOInstance().getAreaTitleByAreaId(areaid);
} catch (Exception e) {
e.printStackTrace();
}
Company com=new Company();
com.setTitle(title);
com.setAreaid(areaid);
com.setAtitle(atitle);
com.setLinkman(linkman);
com.setTel(tel);
com.setAddress(address);
com.setCreditsLimit(creditsLimit);
boolean flag=false;
try {
flag=DAOFactory.getICompanyDAOInstance().doInsert(com);
} catch (Exception e) {
e.printStackTrace();
}
if(flag){
info="添加成功!!";
}else{
info="添加失败!!";
}
request.setAttribute("info", info);
forward="logincheck/admin/CompanyServlet?operateType=companymanage";
request.setAttribute("forward", forward);
path="/logincheck/message.jsp";
}
解决方法:修改CompanyServlet代码
if("checktitle".equals(operateType)){
String type=request.getParameter("type");
//String title=request.getParameter("title");
//这样中文会乱码
String title=new String(request.getParameter("title").getBytes("ISO8859-1"));
Company com=null;
try {
com = DAOFactory.getICompanyDAOInstance().findByCompanyTitle(title);
} catch (Exception e) {
e.printStackTrace();
}
String useableness="该企业信息已存在!";
if(com==null){
useableness="该企业名称可用!";
}
request.setAttribute("useableness", useableness);
if("insert".equals(type)){
path="/logincheck/admin/CompanyServlet?operateType=insertpre&useableness="+useableness+"&title="+title;
}else if("update".equals(type)){
int id=Integer.parseInt(request.getParameter("id"));
path="/logincheck/admin/CompanyServlet?operateType=updatepre&useableness="+useableness+"&title="+title+"&id="+id;
}
}else if("insertpre".equals(operateType)){
Map<Integer,String> allArea=null;
try {
allArea=DAOFactory.getIAreaDAOInstance().getAllArea();
} catch (Exception e) {
e.printStackTrace();
}
String useableness=request.getParameter("useableness");
request.setAttribute("useableness", useableness);
//此处属于服务器跳转过来的,不用特殊处理,特殊处理了反而出现???
// if(request.getParameter("useableness")!=null){
// request.setAttribute("useableness", new String(request.getParameter("useableness").getBytes("ISO8859-1")));
// }
String title=request.getParameter("title");
request.setAttribute("title", title);
//此处属于服务器跳转过来的,不用特殊处理???
// if(request.getParameter("title")!=null){
// request.setAttribute("title", new String(request.getParameter("title").getBytes("ISO8859-1")));
// }
request.setAttribute("allArea", allArea);
path="/logincheck/admin/addcompany.jsp";
}else if("insert".equals(operateType)){
String title=request.getParameter("title");
String linkman=request.getParameter("linkman");
String tel=request.getParameter("tel");
String address=request.getParameter("address");
Double creditsLimit=Double.parseDouble(request.getParameter("creditsLimit"));
int areaid=Integer.parseInt(request.getParameter("areaid"));
String atitle=null;
try {
atitle=DAOFactory.getIAreaDAOInstance().getAreaTitleByAreaId(areaid);
} catch (Exception e) {
e.printStackTrace();
}
Company com=new Company();
com.setTitle(title);
com.setAreaid(areaid);
com.setAtitle(atitle);
com.setLinkman(linkman);
com.setTel(tel);
com.setAddress(address);
com.setCreditsLimit(creditsLimit);
boolean flag=false;
try {
flag=DAOFactory.getICompanyDAOInstance().doInsert(com);
} catch (Exception e) {
e.printStackTrace();
}
if(flag){
info="添加成功!!";
}else{
info="添加失败!!";
}
request.setAttribute("info", info);
forward="logincheck/admin/CompanyServlet?operateType=companymanage";
request.setAttribute("forward", forward);
path="/logincheck/message.jsp";
}
修改的企业信息页面代码中,还需要注意,当添加了检查企业名称是否唯一的功能后,需要修改代码
<tr>
<td width="80" align="left" class="text_14_gray">企业名称:</td>
<td width="200" align="left" class="text_14_gray">
<%
String title=(String)request.getAttribute("title");
if(title!=null){
%>
<input type="text" name="title" onchange="checkTitle(this.value);" value="${requestScope.title }">
<%
}else{
%>
<input type="text" name="title" onchange="checkTitle(this.value);" value="${requestScope.company.title }">
<%
}
%>
<span id="checkTitle" style="color:#6600FF">${requestScope.useableness}</span>
</td>
</tr>
否则修改后的名称返回不到页面中,一返回就被原来的数据覆盖