package com.paic.userapp.management.web.util; public class ViewNames { public static final String ERROR_VIEW = \public static final String SUCCESS_VIEW = \} 【com.paic.userapp.management.web.util.WebContextNames】 package com.paic.userapp.management.web.util; public class WebContextNames { public static final String PAFA_AC = \} 【com.paic.userapp.management.biz.util.BizContextNames】 package com.paic.userapp.management.biz.util; public class BizContextNames { public static final String USER_SERVICE=\public static final String USER_DAO=\} 除了以上给出的名称常量定义,在应用开发中比较重要的一项内容就是定义在Web层和Biz层之间传递的DTO,在本例中用于传递用户的信息,定义如下: 【com.paic.userapp.management.dto.UserDTO】 package com.paic.userapp.management.dto; import com.paic.pafa.app.dto.PafaDTO; public class UserDTO extends PafaDTO{ private String id; private String name; private String description; public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。
?中国平安保险(集团)股份有限公司,版权所有,不得侵犯
第 26 页 共 43 页
return name; } public void setName(String name) { this.name = name; } } 5.3
Web层开发与实现
通过之前的功能分析,我们知道在Web层需要开发的内容包括:“addUser.jsp”,用于显示输入用户信息的窗体;“success.jsp”,显示操作成功信息;
“com.paic.userapp.management.web.controller.AddUserController”,Web层的功能控制器。相关代码如下,注意其中的注释信息:
【webroot\\management\\addUser.jsp】 <%@ include file=\
【webroot\\management\\success.jsp】 <%@ include file=\ 操作成功! 【com.paic.userapp.management.web.controller.AddUserController】 package com.paic.userapp.management.web.controller; import com.paic.pafa.app.dto.ServiceRequest; import com.paic.pafa.app.dto.ServiceResponse; import com.paic.pafa.app.lwc.core.util.DevLog; import com.paic.pafa.app.lwc.service.databinding.BindException; import com.paic.pafa.app.web.exception.PafaWebException; import com.paic.pafa.app.web.servlet.ModelAndView; import com.paic.pafa.app.web.servlet.mvc.SimpleFormController; import com.paic.userapp.management.dto.UserDTO; import com.paic.userapp.management.util.ServiceRequestID; import com.paic.userapp.management.web.util.WebContextNames; public class AddUserController extends SimpleFormController{ protected ModelAndView onSubmit(Object cmd, BindException ex)throws Exception { UserDTO user=(UserDTO)cmd; //用于开发阶段的调试 DevLog.debug(\ //准备ServiceRequest ServiceRequest serviceRequest = new ServiceRequest(); serviceRequest.setRequestedServiceID(ServiceRequestID.ADD_USER); serviceRequest.setCurrentRequestObject(user); //发送ServiceRequest以获得ServiceResponse ServiceResponse serviceResponse = dispatchService(serviceRequest,WebContextNames.PAFA_AC); //准备Web视图 return new ModelAndView(this.getSuccessView()); } } 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。
?中国平安保险(集团)股份有限公司,版权所有,不得侵犯
第 28 页 共 43 页
5.4
配置Ibatis SqlMapping
通过之前的功能分析可以发现,最终的数据库操作是由Ibatis完成的,在本例中有两个相关的、位于“src\\config\\biz”的配置文件“sqlmap-config.xml”和“sqlmap-mapping.xml”;在这个例子中我们只需要在“sql-mapping.xml”中增加SQL语句,如下所示:
【src\\config\\biz\\sql-mapping.xml】:在INSERT语句中定义了参数对象为UserDTO 5.5
Biz层开发与实现
实际上这里包括Biz层和集成层,通过之前的分析,我们需要在Biz层编写的Java类包括“AddUserAction”、“UserService”接口、接口的实现类“UserPojoService”以及集成层的“UserDAO”接口和接口的实现类“UserIbatisDAO”,代码则如下所示:
【com.paic.userapp.management.integration.UserDAO】 package com.paic.userapp.management.integration; import java.util.List; import com.paic.pafa.app.integration.dao.PafaDAOException; import com.paic.pafa.app.integration.dao.PafaDAO; import com.paic.userapp.management.dto.UserDTO; public interface UserDAO extends PafaDAO{ public void createUser(UserDTO user) throws PafaDAOException; } 【com.paic.userapp.management.integration.impl.UserIbatisDAO】 package com.paic.userapp.management.integration.impl; import java.util.List; import com.paic.pafa.app.integration.dao.PafaDAOException; import com.paic.pafa.app.lwc.service.persistence.dao.ibatis.support.SqlMapClientDaoSupport; import com.paic.userapp.management.dto.UserDTO; import com.paic.userapp.management.integration.UserDAO; import com.paic.pafa.app.lwc.core.context.support.PafaCoreContexton; import com.paic.pafa.app.lwc.service.persistence.dao.DataAccessException; 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。
?中国平安保险(集团)股份有限公司,版权所有,不得侵犯
第 29 页 共 43 页
public class UserIbatisDAO extends SqlMapClientDaoSupport implements UserDAO{ public void createUser(UserDTO user) throws PafaDAOException{ //获得当前事务的ID String txnId = PafaCoreContexton.getInstance().getThreadContext().getTxnID(); try{ //通过Ibatis执行名称为“addUser”的SQL语句 getSqlMapClientTemplate().insert(\}catch(DataAccessException e){ //将数据库例外包装为pafa的例外类型 throw new PafaDAOException(txnId, \ \\} } public void setBeanName(String arg0) { // TODO Auto-generated method stub } } 【com.paic.userapp.management.biz.service.UserService】 package com.paic.userapp.management.biz.service; import java.util.List; import com.paic.pafa.app.biz.service.BusinessServiceException; import com.paic.userapp.management.dto.UserDTO; public interface UserService { public void addUser(UserDTO user)throws BusinessServiceException; } 【com.paic.userapp.management.biz.service.impl.UserPojoService】 package com.paic.userapp.management.biz.service.impl; import java.util.List; import com.paic.pafa.app.biz.service.BaseService; import com.paic.pafa.app.biz.service.BusinessServiceException; import com.paic.pafa.app.integration.dao.PafaDAOException; import com.paic.userapp.management.biz.service.UserService; import com.paic.userapp.management.biz.util.BizContextNames; import com.paic.userapp.management.dto.UserDTO; import com.paic.userapp.management.integration.UserDAO; import com.paic.pafa.app.lwc.core.util.DevLog; public class UserPojoService extends BaseService implements UserService{ public void addUser(UserDTO user)throws BusinessServiceException{ try { 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。
?中国平安保险(集团)股份有限公司,版权所有,不得侵犯
第 30 页 共 43 页