java笔记(五)

来源:互联网 发布:java 领域模型 编辑:程序博客网 时间:2024/05/14 13:39

1.一组功能的完整实现(包括增删改查)

第一步:我们需要实现的是部门管理的功能如图所示:


我们可以看到此页面一共有4个功能,新建,删除,修改,显示list也就是显示数据库中的数据,所以一共是4个功能发出6个请求,这6个请求分别是(delete,list,edit,editUI,add,addUI)由此分析我们就需要6个方法来实现这些功能。点击新建会跳转到对应的addUI,点击修改一样会跳转到editUI。


第二步:大致的流程如下,首先我们建立DepartmentAction.java类代码如下:

import java.util.List;import javax.annotation.Resource;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import cn.itcast.oa.domain.Department;import cn.itcast.oa.service.DepartmentService;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;@SuppressWarnings("serial")@Controller@Scope("prototype")public class DepartmentAction extends ActionSupport implements ModelDriven<Department> {    @Resourceprivate DepartmentService departmentService ;private Department  department =new Department();public Department getModel() {return department;}public String list() throws Exception {List<Department>  departmentlist=departmentService.findAll();ActionContext.getContext().put("departmentlist",departmentlist);return "list";}public String add() throws Exception {departmentService.save(department);return "toList";}public String addUI() throws Exception {// TODO Auto-generated method stubreturn "addUI";}public String delete() throws Exception {departmentService.delete(department.getId());return "toList";}public String edit() throws Exception {Department department1=departmentService.getById(department.getId());ActionContext.getContext().getValueStack().push(department1);return "toList";}public String editUI() throws Exception {Department department1=departmentService.getById(department.getId());department1.setName(department.getName());department1.setDescription(department.getDescription());departmentService.update(department1);return "editUI";}}
首先我们需要继承ActionSupport类,并且实现ModelDriven接口,这个接口的作用是帮助我们在本类中无需写setter,getter方法直接获得VO中的属性,但是必须要实现接口中的方法getModel(),并且需要newVO对象的实例,本例是Department,把6个方法写在action中,之后就到了配置struts2的配置文件了代码如下:

<action name="departmentAction_*" class="departmentAction" method="{1}"><result name="list">/WEB-INF/jsp/departmentAction/list.jsp</result><result name="addUI">/WEB-INF/jsp/departmentAction/addUI.jsp</result><result name="editUI">/WEB-INF/jsp/departmentAction/editUI.jsp</result><result name="toList" type="redirectAction">departmentAction_list</result></action>
因为我们每次新增完成或者修改完成都需要返回到最开始的list页面回显,所以我们这里的result有一个name=toList的页面,type一定要是重定向!!!很重要!!因为重定向的浏览器地址栏是会放生改变的,这里一定要注意转发和重定向的区别:主要区别是请求数和地址栏的变化,转发请求数是1而重定向为2,转发地址栏不会变,重定向地址栏会变。当我们新增和修改完是重定向的toList这时候显示的数据就是我们更新完成的数据了。

@Controller@Scope("prototype")
这2个注解很重要,如果你不写,action就不能运行,所以在写完配置文件后我们需要在action中加入这2个注解,同时我们也需要在action中调用service层了,所以我们就需要通过@service这个注解将service层注入进来,ok,写完action类,下面就开始写service层了,首先我们需要建立DepartmentService接口代码如下(接口中有action层需要的6个方法但是没有实现我们就需要建立他的实现类):

import java.util.List;import cn.itcast.oa.domain.Department;public interface DepartmentService {List<Department> findAll();void delete(Long id);void save(Department department);Department getById(Long id);void update(Department department1);}
下一步我们需要建立DepartmentServiceImpl实现类,代码如下:

import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import cn.itcast.oa.dao.DepartmentDao;import cn.itcast.oa.domain.Department;import cn.itcast.oa.service.DepartmentService;@Service@Transactionalpublic class DepartmentServiceImpl implements DepartmentService {    @Resourceprivate DepartmentDao  depatmentdao;public List<Department> findAll() {return  depatmentdao.findAll();}public void delete(Long id) {depatmentdao.delete(id);}public void save(Department department) {depatmentdao.save(department);}public Department getById(Long id) {return depatmentdao.getById(id);}public void update(Department department1) {depatmentdao.update(department1);}}
在这个实现类中我们其实是要调用Dao层的方法,这是一层套一层的,所以我们需要加入注解,@service告诉让spring管理,另外需要在service层加入事务@Transaction,又因为需要用到dao层所以我们需要注入@resource,下一步就是建立Department的DAO层首先是接口代码如下:

import cn.itcast.oa.base.BaseDao;import cn.itcast.oa.domain.Department;public interface DepartmentDao extends BaseDao<Department> {}
需要注意的是因为公共的方法都是封装在basedao中的所以我们需要extends BaseDao,下一步是DepartmentDaoImpl的实现类代码如下:

import org.springframework.stereotype.Repository;import cn.itcast.oa.base.impl.BaseDaoImpl;import cn.itcast.oa.dao.DepartmentDao;import cn.itcast.oa.domain.Department;@Repositorypublic class DepartmentDaoImpl extends BaseDaoImpl<Department> implements DepartmentDao {}

这里一定要extends BaseDaoImpl  需要加上dao层的注解@Repository至此我们的后天工作就完成了,下面需要做的就是前台页面的事情了!!!这里只是一些简单的方法,但是简单的也是最通用的,以后我们还会学习其他的更加的复杂的方法比如多条件查询,多表查询等等。。。大笑

alt+shift+E矩形块操作

alt+shift+A退出这个功能









  

0 0
原创粉丝点击