7.在com.dbke.hrms.spring.logic 包下 建立外观接口 HRMSFacade.java :
package com.dbke.hrms.spring.logic; import java.util.List; import com.dbke.hrms.ibatis.domain.TDept; public interface HRMSFacade { /** * 显示所有的部门 * @return */ public List<TDept> findAllDept(); /** * 根据部门Id查看部门 * @param deptId * @return */ public TDept findDeptById(Integer deptId); /** * 增加一个部门 * @param dept 部门对象 * @return */ public Integer insertOneDept(TDept dept); /** * 增加一个部门 * @param vcDeptCode * @param vcDeptName * @param vcDeptAddress * @param vcDeptTelphone * @param vcDeptDesc * @return */ public Integer insertOneDept(String vcDeptCode,String vcDeptName,String vcDeptAddress,String vcDeptTelphone,String vcDeptDesc); /** * 一次增加若干部门 * @param deptList * @return */ public Integer insertDepts(List<TDept> deptList); /** * 验证部门名称是否有效 * @param deptName * @return true为有效可用,false为无效 */ public boolean validateDeptName(String deptName); /** * 验证部门编号是否有效 * @param deptCode * @return true为有效可用,false为无效 */ public boolean validateDeptCode(String deptCode); }
8.在 com.dbke.hrms.spring.logic 实现外观接口 HRMSFacadeImpl.java:
package com.dbke.hrms.spring.logic; import java.util.List; import com.dbke.hrms.ibatis.domain.TDept; import com.dbke.hrms.struts.service.DeptService; public class HRMSFacadeImpl implements HRMSFacade{ private DeptService deptService; public void setDeptService(DeptService deptService) { this.deptService = deptService; } @Override public Integer insertDepts(List<TDept> deptList) { // TODO Auto-generated method stub return this.deptService.insertDepts(deptList); } @Override public Integer insertOneDept(String vcDeptCode, String vcDeptName, String vcDeptAddress, String vcDeptTelphone, String vcDeptDesc) { // TODO Auto-generated method stub return this.deptService.insertOneDept(vcDeptCode, vcDeptName, vcDeptAddress, vcDeptTelphone, vcDeptDesc); } @Override public Integer insertOneDept(TDept dept) { // TODO Auto-generated method stub return this.deptService.insertOneDept(dept); } @Override public List<TDept> findAllDept() { // TODO Auto-generated method stub return this.deptService.findAllDept(); } @Override public TDept findDeptById(Integer deptId) { // TODO Auto-generated method stub return this.deptService.findDeptById(deptId); } @Override public boolean validateDeptCode(String deptCode) { // TODO Auto-generated method stub return this.deptService.validateDeptCode(deptCode); } @Override public boolean validateDeptName(String deptName) { // TODO Auto-generated method stub return this.deptService.validateDeptName(deptName); } }
到此,spring就暂时结束了.接下来配置struts2
三.struts2:
1.导入 backport-util-concurrent-3.0.jar freemarker-2.3.12.jar struts2-core-2.0.12.jar struts2-spring-plugin-2.0.12.jar xwork-2.0.6.jar 到WEB-INF/lib
2.修改WEB-INF/下的 web.xml文件 :
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <!-- FilterDispatcher 用来初始化 strtus2 并且处理所有的 web 请求 --> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
3.在src目录下 建立配置文件 struts.properties:
struts.devMode = true struts.enable.DynamicMethodInvocation = false struts.objectTypeDeterminer = notiger struts.objectFactory = spring
4.在src目录下 建立配置文件 struts.xml :
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.objectTypeDeterminer" value="notiger" /> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.objectFactory.spring.autoWire" value="name" /> <include file="struts-default.xml"/> <!-- struts2的Action配置 --> <package name="hrms" extends="struts-default"> <action name="showEmployee" class="showEmployeeClass"> <result name="success">/index.jsp</result> </action> <action name="showDept" class="showDeptClass"> <result name="success">/index.jsp</result> <result name="error">/error.jsp</result> </action> <!-- Add your actions here --> </package> </struts>
5.在com.dbke.hrms.struts.service 编写业务逻辑组件的接口 DeptService.java
package com.dbke.hrms.struts.service; import java.util.List; import com.dbke.hrms.ibatis.domain.TDept; public interface DeptService { /** * 显示所有的部门 * @return */ public List<TDept> findAllDept(); /** * 根据部门Id查看部门 * @param deptId * @return */ public TDept findDeptById(Integer deptId); /** * 增加一个部门 * @param dept 部门对象 * @return */ public Integer insertOneDept(TDept dept); /** * 增加一个部门 * @param vcDeptCode * @param vcDeptName * @param vcDeptAddress * @param vcDeptTelphone * @param vcDeptDesc * @return */ public Integer insertOneDept(String vcDeptCode,String vcDeptName,String vcDeptAddress,String vcDeptTelphone,String vcDeptDesc); /** * 一次增加若干部门 * @param deptList * @return */ public Integer insertDepts(List<TDept> deptList); /** * 验证部门名称是否有效 * @param deptName * @return true为有效可用,false为无效 */ public boolean validateDeptName(String deptName); /** * 验证部门编号是否有效 * @param deptCode * @return true为有效可用,false为无效 */ public boolean validateDeptCode(String deptCode); }
6.在com.dbke.hrms.struts.service.impl 编写业务逻辑组件的实现 DeptServiceImpl.java
package com.dbke.hrms.struts.service.impl; import java.util.List; import com.dbke.hrms.ibatis.dao.TDeptDao; import com.dbke.hrms.ibatis.domain.TDept; import com.dbke.hrms.struts.service.DeptService; public class DeptServiceImpl implements DeptService { /*spring注入的dao*/ private TDeptDao deptDao; public void setDeptDao(TDeptDao deptDao) { this.deptDao = deptDao; } @Override public Integer insertDepts(List<TDept> deptList) { // TODO Auto-generated method stub for (TDept dept : deptList) { this.insertOneDept(dept); } return 0; } @Override public Integer insertOneDept(TDept dept) { // TODO Auto-generated method stub if (!this.validateDeptName(dept.getVcDeptName())) { throw new RuntimeException("部门名称重复"); } if (!this.validateDeptCode(dept.getVcDeptCode())) { throw new RuntimeException("部门编号名称重复"); } return deptDao.insertDept(dept); } @Override public Integer insertOneDept(String vcDeptCode, String vcDeptName, String vcDeptAddress, String vcDeptTelphone, String vcDeptDesc) { // TODO Auto-generated method stub TDept dept=new TDept(); dept.setVcDeptAddress(vcDeptAddress); dept.setVcDeptCode(vcDeptCode); dept.setVcDeptDesc(vcDeptDesc); dept.setVcDeptName(vcDeptName); dept.setVcDeptTelphone(vcDeptTelphone); return this.insertOneDept(dept); } @Override public List<TDept> findAllDept() { // TODO Auto-generated method stub return deptDao.findAllDept(); } @Override public TDept findDeptById(Integer deptId) { // TODO Auto-generated method stub return deptDao.findDeptById(deptId); } @Override public boolean validateDeptName(String deptName) { // TODO Auto-generated method stub if (deptDao.findDeptByName(deptName)==null) { return true; }else { return false; } } @Override public boolean validateDeptCode(String deptCode) { // TODO Auto-generated method stub if (deptDao.findDeptByCode(deptCode)==null) { /*验证部门编号长度是否是3的整数倍*/ if (deptCode.length()%3!=0) { return false; } return true; }else { return false; } } }
7.在com.dbke.hrms.struts.action 编写action类 ShowDeptAction.java:
package com.dbke.hrms.struts.action; import java.util.ArrayList; import java.util.List; import com.dbke.hrms.ibatis.domain.TDept; import com.dbke.hrms.spring.logic.HRMSFacade; import com.opensymphony.xwork2.Action; public class ShowDeptAction implements Action{ private HRMSFacade hrmsFacade; public void setHrmsFacade(HRMSFacade hrmsFacade) { this.hrmsFacade = hrmsFacade; } /*Struts2的输入参数值*/ private int di; //deptID public int getDi() { return di; } public void setDi(int di) { this.di = di; } /*Struts2的返回值*/ private TDept dept; public TDept getDept() { return dept; } public void setDept(TDept dept) { this.dept = dept; } @Override public String execute() throws Exception { // TODO Auto-generated method stub dept=hrmsFacade.findDeptById(di); TDept dept1=new TDept(); dept1.setVcDeptName("重庆分公司"); dept1.setVcDeptCode("001002"); dept1.setVcDeptAddress("重庆"); // hrmsFacade.addOneDept(dept1); TDept dept2=new TDept(); dept2.setVcDeptName("广州分公司"); dept2.setVcDeptCode("001003"); dept2.setVcDeptAddress("广州"); List<TDept> deptList=new ArrayList<TDept>(); deptList.add(dept2); deptList.add(dept1); try { hrmsFacade.insertDepts(deptList); } catch (RuntimeException e) { // TODO Auto-generated catch block e.printStackTrace(); return ERROR; } return SUCCESS; } }
8.在 WEB-INF 下编写配置文件 Struts2ActionConfig.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <!-- Struts2 action类 --> <bean id="showEmployeeClass" class="com.dbke.hrms.struts.action.ShowEmployeeAction" > <property name="hrmsFacade" ref="hrmsFacade" /> </bean> <bean id="showDeptClass" class="com.dbke.hrms.struts.action.ShowDeptAction" > <property name="hrmsFacade" ref="hrmsFacade" /> </bean> </beans>
到此,struts2配置就完成了.下面来做个测试.