Java电子申请系统
第5章 应用程序设计
根据前一章节的分析,下面我们依照MVC模型开发过程逐步介绍系统的开发步骤。
5.1 配置文件
Struts作为一个J2EE 框架,很容易和你的web 应用结合起来。建立标准的web 应用程序后需要配置/WEB_ROOT/WEB-INF/classes/web.xml以满足Struts需要,还有,可以用相对路径的方式指明Struts应用程序的配置文件位置。如不设置,则默认值为/WEB-INF/struts-config.xml,该文件定义了Struts应用中的Action,ActionForm,插件,资源引用等信息。config/sub1 以相对路径的方式指明子应用程序的配置文件位置。
1、 在配置文件中映射ActionServlet,ActionServlet用于接受所有访问者的请求。在Struts应用中,所有对应用程序的请求,都会被WEB SERVER 定向到ActionServlet进行统一控制、分配处理,ActionServlet可以看作是Struts框架的核心,枢纽。
2、 配置servlet映射,通过servlet映射可以将用户访问web应用的扩展名映射到具体处理的servlet。
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
3、配置标签库,标签库是Struts 自带的一些组件库,采用JSP 规范中Tag-lib的方式供大家使用,正是因为存在这么丰富的标签库,使得采用Struts的开发才显得这么方便,高效。
最后,一个完整的web.xml文件请参照源代码。
1、在配置文件中设置Data Sources Configuration,数据源的配置参数由eGovUtil.conf配置文件提供
2、Action-mapping 映射
<action
path="/StaffInfoListLoginAction"
type="info.disclosure.sys.eg.action.StaffInfoListLoginAction"
name="StaffInfoListLoginForm"
validate="true"
input="/jsp/K/staffInfoListLogin.jsp"
scope="request">
<forward name="norm" path="/jsp/K/staffInfoListLogin.jsp" />
<forward name="next" path="/jsp/K/staffInfoListLoginConfirm.jsp" />
<forward name="decision" path="/jsp/K/staffInfoListLoginResult.jsp" />
</action>
最后,一个完整的struts-config.xml文件请参照源代码。
5.2 页面设计
在Struts结构中我们使用.jsp文件来进行页面设计,一般情况下,该文件包含
5.2.1页面代码文件
staffInfoListLogin.jsp
staffInfoListLoginConfirm.jsp
staffInfoListLoginResult.jsp
其中staffInfoListLogin.jsp页面中两个下拉框的联动功能由下面的JS代码实现
5.2.1.1 dodo()方法代码
function dodo(){
var index = document.forms[0].orgId.selectedIndex;
var key = document.forms[0].win1.value;
var str = document.forms[0].hiddenForm.value;
var strV= document.forms[0].hiddenFormValue.value;
var hidden="<%=request.getAttribute("hiddenOrgId")%>";
var values = str.split(",");
var values2=strV.split(",");
document.forms[0].orgId.length = 1;
document.forms[0].orgId.value = "";
document.forms[0].orgId.text = "";
for(var i=0; i<values.length; i++){
var pos1 = values[i].indexOf(key + "_");
var pos2 = values[i].indexOf("_");
if(pos1 > -1){
var len = document.forms[0].orgId.options.length;
document.forms[0].orgId.options.length = len + 1;
document.forms[0].orgId.options[len].value=values[i].substr(pos2 + 1);
document.forms[0].orgId.options[len].text=values2[i].substr(pos2 + 1);
}
}
if(index < document.forms[0].orgId.options.length){
document.forms[0].orgId.selectedIndex = index;
}else{
document.forms[0].orgId.value="<%=request.getAttribute("hiddenOrgId")%>;
}
}
5.3 处理模块
5.3.1 Action处理代码文件(StaffInfoListLoginAction.java)
在Action处理中主要对页面的请求进行处理,调用逻辑处理或者向FormBean存取值实现整个后台处理向页面返回信息。
(1)actionExecute()方法实现页面的跳转功能
(2)setFormValue()和getSecondList()方法实现页面联动
(3)changeValue()方法实现给第二个页面设置初始值
(4)checkField()方法实现第一个页面输入值
(5)loginNewUser()方法实现往数据库中存值
5.3.2 FormBean设计(StaffInfoListLoginForm.java)
StaffInfoListLoginForm的主要功能就是为Action的操作提供与客户表单相映射的数据。在改变系统状态后,StaffInfoListLoginForm则自动的回写新的数据状态并保持。
5.3.3 业务逻辑BEAN(StaffInfoListLoginLogic.java)
业务逻辑Bean中主要实现对数据库的操作和复杂的业务逻辑的处理。实现数据的录入、更新、删除。
registNewUser()方法实现将管理员输入的用户信息存到数据库中。
setUserAuthority()方法实现将管理员输入的用户权限信息存到数据库中
5.4 单体测试
5.4.1 测试的分类
软件测试分为黑盒测试和白盒子测试,任何工程产品(注意是任何工程产品)都可以使用以下两种方法之一进行测试。下面就介绍一下这两中测试方法:
(1)黑盒测试:软件测试员只需要知道软件要做什么即可-而无法看到盒子中的具体内容。
软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
① 是否有不正确或遗漏的功能?
② 在接口上,输入是否能正确的接受?能否输出正确的结果?
③ 是否有数据结构错误或外部信息(例如数据文件)访问错误?
④ 性能上是否能够满足要求?
⑤ 是否有初始化或终止性错误?
(2)白盒测试:软件测试员可以访问程序员的代码,并且通过检查代码来协助测试-可以看到盒子里面。
软件的白盒测试所谓的测试方案包括具体的测试目的,应该输入的测试数据和预期的结果。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。白盒测试主要分为两种测试