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
- JAVA笔记(五)
- java笔记(五)
- java笔记(五)
- java 笔记(五)
- java学习笔记(五)
- java学习笔记(五)
- Java学习笔记(五)
- Java学习笔记(五)
- Java学习笔记(五)
- Java学习笔记(五)
- JAVA学习笔记(五)
- Java基础 笔记(五)
- JAVA 笔记-JDBC(五)
- java学习笔记(五)
- Java笔记(五) 输入输出
- JAVA基础笔记(五)
- Java学习笔记(五)
- Java学习笔记(五)
- Web for Pentester XSS Example 01-09
- Relization重要性运作分析在金融业
- 分页加载数据策略
- 如何更改Oracle 数据文件的位置
- Live555 实战之框架简介
- java笔记(五)
- 用户付费渗透率再研究
- linux在shell中获取时间
- Activity has leaked window that was originally added 问题解决
- 可积 连续 可微 可导关系
- HDU1065 I Think I Need a Houseboat 【数学递推】
- HighCharts中URL在页面之间传参数及跳转解决方案
- Radian6的监测和分析工具
- Proactol什么是脂肪燃烧