以一个插入人员的操作来说明SSH的工作流程
在前台的addEmployee.jsp中我们要先引入struts2的标签库。
<%@ taglib uri="/struts-tags" prefix="s" %>
创建前台代码,表单from标签的action属性中表名这个form是要提交给employee这个action并调用save()方法处理。
<s:form id="saveForm" action="employee_save" method="post" namespace="/" theme="simple">
Struts2拦截用户请求,并匹配配置文件中定义的action。
<action name="employee_*" class="employeeAction" method="{1}">
通过Spring配置文件中配置的Action找到对应的实体类。
<bean id="employeeAction" class="cn.th.ssh.action.EmployeeAction" scope="prototype">
<property name="employeeService" ref="employeeService"></property>
<property name="departmentService" ref="departmentService"></property>
</bean>
调用EmployeeAction.java中save方法
private EmployeeService employeeService;
//保存员工方法
public String save(){
employeeService.save(employee);
return "saveSuccess";
}
Spring配置文件中配置的业务层的实现类
<!-- 配置业务层的类 -->
<bean id="employeeService" class="cn.th.ssh.service.impl.EmployeeServiceImp">
<property name="employeeDao" ref="employeeDao"></property>
</bean>
调用业务逻辑组件类EmployeeService中的save方法来完成插入操作。
public void save(Employee employee) {
// TODO Auto-generated method stub
employeeDao.save(employee);
}
调用DAO层EmployeeDao中的save方法来完成插入操作。
public void save(Employee employee) {
this.getHibernateTemplate().save(employee);
}
通过业务层返回的逻辑视图名称在struts2配置文件中的物理视图和逻辑视图之间的映射关系跳转到响应的页面。
<result name="saveSuccess" type="redirectAction">employee_findAll.action</result>
从Action-->Service-->Dao-->db逐层向下传递
至此,一个完整的请求、处理请求、返回处理结果的流程结束。