一、增加雇员
前面我们已经讲得有大部分关键技术啦,而现在也就是我们要扩展,写出来自己的水平啦,当然,逻辑和你的经验将是成功的保障。
- 增加雇员的话,我们先将这个页面打通
这句话中flag是你要调用的那个函数的名称,那我们就开始写这个函数,我们将这些逻辑都写在叫EmployeeAction.java的action类中
public ActionForward addEmpUi(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // TODO Auto-generated method stub return mapping.findForward("addEmpUi"); }
这个就是我们调转页面的函数,相信大家都能一目了然啦吧。
那我们这时候就得配置页面跳转的逻辑啦,看struts-config.xml啦,在<action-mapping>中添加这个页面跳转。
别忘啦在applicationContext.xml中配置这个action,以为spring接管啦struts,那他就接管啦struts的action。
- 那我们就得触及到spring啦,注入。。。那怎样注入呢?
先把添加雇员的表单的信息取到吧,我们还根据原先的表单EmployeeForm.java来配置吧,这样省事啦,
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
package com.wang.web.form;import org.apache.struts.action.ActionForm;public class EmployeeForm extends ActionForm{ private String id; private String pwd; private String email; private String grade; private String name; private String salary; private String departmentId; public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSalary() { return salary; } public void setSalary(String salary) { this.salary = salary; } public String getDepartmentId() { return departmentId; } public void setDepartmentId(String departmentId) { this.departmentId = departmentId; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
现在我们表单啦,我们还得再action中添加一个叫addEmp的方法,来接收表单的信息啦,但是当我们接收后,添加到Employee类中,那个部门的字段怎么办,他是这样定义的饿,private Department department; 我们从表单中取到的是部门的id,这里是部门的对象,所以我们就得建一个接口为DepartmentInterfaces.java,看到我们这个方法getDepartmentById,根据id得到部门对象,所以当然是返回Department类型,有一个参数用于接收id
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
package com.wang.service.interfaces;import java.io.Serializable;import com.wang.domain.Department;public interface DepartmentInterfaces { //增加部门的方法 public void addDepartment(Department d); //根据department的id得到部门名称 public Department getDepartmentById(Serializable id);}
现在去实现这个接口DepartmentService.java,
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
package com.wang.service.imp;import java.io.Serializable;import org.hibernate.SessionFactory;import org.springframework.transaction.annotation.Transactional;import com.wang.domain.Department;import com.wang.service.interfaces.DepartmentInterfaces;@Transactionalpublic class DepartmentService implements DepartmentInterfaces { public SessionFactory sessionFactory; public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public void addDepartment(Department d) { // TODO Auto-generated method stub sessionFactory.getCurrentSession().save(d); } public Department getDepartmentById(Serializable id) { return (Department) sessionFactory.getCurrentSession().get(Department.class, id); }}
现在是关键所在,action类中这样取得注入的bean呢,EmployeeAction.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
package com.wang.web.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import com.wang.domain.Department;import com.wang.domain.Employee;import com.wang.service.imp.DepartmentService;import com.wang.service.imp.EmployeeService;import com.wang.service.interfaces.DepartmentInterfaces;import com.wang.service.interfaces.EmployeeServiceInter;import com.wang.web.form.EmployeeForm;public class EmployeeAction extends DispatchAction { public DepartmentInterfaces departmentInterfaces; public EmployeeServiceInter employeeServiceInter; public void setEmployeeServiceInter(EmployeeServiceInter employeeServiceInter) { this.employeeServiceInter = employeeServiceInter; } public void setDepartmentInterfaces(DepartmentInterfaces departmentInterfaces) { this.departmentInterfaces = departmentInterfaces; } public ActionForward addEmpUi(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // TODO Auto-generated method stub return mapping.findForward("addEmpUi"); } /** * 用于添加雇员的处理函数 * @param mapping * @param form * @param request * @param response * @return * @throws Exception */ public ActionForward addEmp(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { EmployeeForm employeeForm = (EmployeeForm)form; Employee employee = new Employee(); employee.setEmail(employeeForm.getEmail()); employee.setGrade(Integer.parseInt(employeeForm.getGrade())); employee.setName(employeeForm.getName()); employee.setPwd(employeeForm.getPwd()); employee.setSalary(Float.parseFloat(employeeForm.getSalary())); //怎样取得department呢 employee.setDepartment(departmentInterfaces.getDepartmentById(Integer.parseInt(employeeForm.getDepartmentId()))); employeeServiceInter.addEmployee(employee); if(employee!=null){ return mapping.findForward("opereok"); }else { return mapping.findForward("opererr"); } }}
最后在applicationContext.xml中配置注入
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)