(4)validate()方法在此userForm中没有任何验证,因为对应此JSP的表单中所有的数据都是让用户选择输入的,一般不会有灾难性的错误。
5.2.2 控制层
控制层主要介绍一下Action类和DispatchAction类,它是控制用户请求和业务逻辑的桥梁。普通的action类只需要完成一个业务方法,所以只需继承只要执行excute()方法的Action类即可;当要实现多个业务方法时必须继承DispatchAction类,而且不必覆盖execute方法。
控制层涉及到的Action类有AddUserAction, AddOperatorAction, EditChargeAction
新增操作员AddUserAction实现操作如下:
public class AddOperatorAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
AddOperatorForm addOperatorForm = (AddOperatorForm) form;
Toperator operator=new Toperator();
operator.setRole(addOperatorForm.getRole());
operator.setToperatorEmail(addOperatorForm.getOperatorEmail());
operator.setToperatorName(addOperatorForm.getOperatorName());
operator.setToperatorPwd(addOperatorForm.getOperatorPwd());
//在AddCustomerAction里有相关注释
ApplicationContext context=new FileSystemXmlApplicationContext("C:\\Documents and Settings\\Administrator\\workspace\\chinamobile2\\src\\applicationContext.xml");
IAdminOperator admin=(IAdminOperator)context.getBean("adminservice");
//调用业务层方法增加操作员
String message=admin.addOperator(operator);
System.out.println(message);
if(!message.equals("")){
request.setAttribute("message", message);
return mapping.findForward("success");
}else{
return mapping.getInputForward();
}
}
5.2.3 模型层
在本系统中模型层主要包括业务方法的实现,它是应用程序的核心部分,处理了用户的请求和数据库持久层的交互。模型层接受控制层传入的数据,通过Hibernate API与数据库持久层的交互,读取,保存,修改数据库信息。业务方法放在business包里。
下面是模型层业务方法的核心程序段,首先是数据层dao包里面数据持久化的一些操作:如增加操作员的OperatorDAOImp中的addCustomer(增加用户)方法
public class OperatorDAOImp implements IOperatorDAO{
//hibernate SessionFactory对象,由spring注入.
private SessionFactory factory;
//增加客户
public Tcustomer addCustomer(Tcustomer customer) {
Tcustomer mycustomer=null;
Session session=factory.openSession();
Transaction ts=session.beginTransaction();
session.save(customer);
ts.commit();
Transaction ts1=session.beginTransaction();
Query query=session.createQuery("from Tcustomer t where t.idNumber='"+customer.getIdNumber()+"'");
List list=query.list();
Iterator it=list.iterator();
if(it.hasNext()){
mycustomer=(Tcustomer)it.next();
}
ts1.commit();
session.close();
return mycustomer;
}
}
其次,通过Spring统一管理Hibernate中的SessionFactory和Session,同时也接管了事物操作,程序中采用代理实现,即使用了申明式事物,业务层方法调用持久层方法,然后再由Action调用相关方法实现功能,具体实现如下:
public class OperatorImp implements IOperator{
//数据访问层操作员受理业务对象,由spring注入(托管)
private IOperatorDAO operator;
//增加手机用户
public String addUser(Tuser user) {
String message="";
//先判断用机号是否可用
if(operator.isMobileCanUse(user.getTmobiles().getMobileNumber())!=null){
if(operator.addUser(user)){//增加手机用户
message="添加用户成功!";
}else{
message="添加用户失败!请您重新操作!";
}
}else{
message="添加用户失败!该手机号已被占用!";
}
return message;
}
任何对数据库的删除、插入和修改操作都必须在Bean中提供,Bean去找对应的Dao。另外一个值得注意的就是对主表对象的插入要先于与之相关联的副表对象,不然就无法遵守数据库的参照完整性,因为副表要以主表的主键作为它的外键,而当副表中要参照主表还不存在的主键,显然这是无法成功的。每个功能是如何实现的在这里不一一说明了。
5.3 移动客户管理系统的模块实现
5.3.1 登录模块
功能描述:在进入主页面之前有一个登录页面,系统对用户输入的用户名、密码和权限进行校验,当校验成功后登录到主页面。
系统登录界面如图5所示。
图5 系统登录界面
Fig 5 System login interface
部分代码如下:
//该方法是现实登录功能,包括用户权限
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
HttpSession session=request.getSession();
//获取表单信息
LoginForm loginForm = (LoginForm) form;转贴于 酷文网-论文下载中心 http://www.coolwen.net
共13页: 上一页 [1] [2] [3] [4] [5] [6] [7] 8 [9] [10] [11] [12] [13] 下一页
网摘收藏: