我们这里注重实现功能,对页面不进行布局。

一、分析增删改查的功能:

  • 添加、修改、删除成功后 要重定向到列表功能,这样在刷新页面时才不会出现“又做一次增、删、改”的操作。
  • 列表与删除功能都是只有一个请求。
  • 添加与修改功能都是有两个请求。

增删改查共4个功能,6个请求,需要在Action中有6个对应的处理方法。


二、代码实现:

RoleAction.java
package cn.xbmu.oa.view.action;import java.util.List;import javax.annotation.Resource;import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import cn.xbmu.oa.domain.Role;
import cn.xbmu.oa.service.RoleService;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class RoleAction extends ActionSupport {/**查询*/public String list() throws Exception {return "list";}/**添加页面*/public String addUI() throws Exception {return "addUI";}/**添加*/public String add() throws Exception {return "toList";}/**删除*/public String delete() throws Exception {return "toList";}/**修改页面*/public String editUI() throws Exception {return "editUI";}/**修改*/public String edit() throws Exception {return "toList";}public Long getId() {return id;}public void setId(Long id) {this.id = id;}
}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><!-- 配置为开发模式 --><constant name="struts.devMode" value="true" /><!-- 配置扩展名为action --><constant name="struts.action.extension" value="action"/><package name="default" namespace="/" extends="struts-default"><!-- 测试用的action,当与Spring整合后,class属性写的就是bean的名称--><action name="test" class="testAction"><result name="success">/test.jsp</result></action><!-- 岗位管理 --><action name="roleAction_*" class="roleAction" method="{1}"><result name="list">/WEB-INF/jsp/roleAction/list.jsp</result><result name="addUI">/WEB-INF/jsp/roleAction/addUI.jsp</result><result name="editUI">/WEB-INF/jsp/roleAction/editUI.jsp</result><result name="toList" type="redirectAction">roleAction_list</result></action></package>
</struts>

查询与删除:

RoleAction.java
package cn.xbmu.oa.view.action;import java.util.List;import javax.annotation.Resource;import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import cn.xbmu.oa.domain.Role;
import cn.xbmu.oa.service.RoleService;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@Controller
@Scope("prototype")
public class RoleAction extends ActionSupport {@Resourceprivate RoleService roleService;private Long id;/**查询*/public String list() throws Exception {List<Role> roleList = roleService.findAll();ActionContext.getContext().put("roleList", roleList);return "list";}/**添加页面*/public String addUI() throws Exception {return "addUI";}/**添加*/public String add() throws Exception {return "toList";}/**删除*/public String delete() throws Exception {roleService.delete(id);return "toList";}/**修改页面*/public String editUI() throws Exception {return "editUI";}/**修改*/public String edit() throws Exception {return "toList";}public Long getId() {return id;}public void setId(Long id) {this.id = id;}}

RoleService.java

package cn.xbmu.oa.service;import java.util.List;import cn.xbmu.oa.domain.Role;public interface RoleService {/*** 查询所有岗位* @return*/List<Role> findAll();void delete(Long id);}

RoleServiceImpl.java

package cn.xbmu.oa.service.impl;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import cn.xbmu.oa.dao.RoleDao;
import cn.xbmu.oa.domain.Role;
import cn.xbmu.oa.service.RoleService;
@Service
@Transactional
public class RoleServiceImpl implements RoleService {@Resourceprivate RoleDao roleDao;public List<Role> findAll() {return roleDao.findAll();}public void delete(Long id) {roleDao.delete(id);}}

RoleDao.java

package cn.xbmu.oa.dao;import cn.xbmu.oa.base.BaseDao;
import cn.xbmu.oa.domain.Role;public interface RoleDao extends BaseDao<Role>{}

RoleDaoImpl.java

package cn.xbmu.oa.dao.impl;import org.springframework.stereotype.Repository;import cn.xbmu.oa.base.BaseDaoImpl;
import cn.xbmu.oa.dao.RoleDao;
import cn.xbmu.oa.domain.Role;
@Repository
public class RoleDaoImpl extends BaseDaoImpl<Role> implements RoleDao{}

list.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head></head><body><%-- <s:iterator value="#roleList"><s:property value="id"/>,<s:property value="name"/>,<s:property value="description"/>,<a href="roleAction_delete.action?id=<s:property value='id'/>" οnclick="return confirm('您确定删除吗?')">删除</a><br/></s:iterator>--%><s:iterator value="#roleList">${id},${name},${description},<%-- <a href="${pageContext.request.contextPath}/roleAction_delete.action?id=${id}" οnclick="return confirm('您确定删除吗?')">删除</a>--%><%-- <s:a action="roleAction_delete"><s:param name="id" value="%{id}"></s:param>删除</s:a>--%><s:a action="roleAction_delete?id=%{id}" οnclick="return confirm('您确定删除吗')">删除</s:a></s:iterator></body>
</html>

运行效果:

修改和添加:

RoleAction.java
package cn.xbmu.oa.view.action;import java.util.List;import javax.annotation.Resource;import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import cn.xbmu.oa.domain.Role;
import cn.xbmu.oa.service.RoleService;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@Controller
@Scope("prototype")
public class RoleAction extends ActionSupport {@Resourceprivate RoleService roleService;private Long id;private String name;private String description;/**查询*/public String list() throws Exception {List<Role> roleList = roleService.findAll();ActionContext.getContext().put("roleList", roleList);return "list";}/**删除*/public String delete() throws Exception {roleService.delete(id);return "toList";}/**添加页面*/public String addUI() throws Exception {return "addUI";}/**添加*/public String add() throws Exception {//得到参数,封装成对象Role role = new Role();role.setName(name);role.setDescription(description);//保存到数据库中roleService.save(role);return "toList";}/**修改页面*/public String editUI() throws Exception {Role role = roleService.getById(id);name = role.getName();description = role.getDescription();return "editUI";}/**修改*/public String edit() throws Exception {//从数据库中取出原对象Role role = roleService.getById(id);//设置要修改的属性role.setName(name);role.setDescription(description);//更新到数据库中roleService.update(role);return "toList";}//-------------------------public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}
}

RoleService.java

package cn.xbmu.oa.service;import java.util.List;import cn.xbmu.oa.domain.Role;public interface RoleService {/*** 查询所有岗位* @return*/List<Role> findAll();void delete(Long id);void save(Role role);Role getById(Long id);void update(Role role);}

RoleServiceImpl.java

package cn.xbmu.oa.service.impl;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import cn.xbmu.oa.dao.RoleDao;
import cn.xbmu.oa.domain.Role;
import cn.xbmu.oa.service.RoleService;
@Service
@Transactional
public class RoleServiceImpl implements RoleService {@Resourceprivate RoleDao roleDao;public List<Role> findAll() {return roleDao.findAll();}public void delete(Long id) {roleDao.delete(id);}public void save(Role role) {roleDao.save(role);}public Role getById(Long id) {return roleDao.getById(id);}public void update(Role role) {roleDao.update(role);}}

list.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head></head><body><%-- <s:iterator value="#roleList"><s:property value="id"/>,<s:property value="name"/>,<s:property value="description"/>,<a href="roleAction_delete.action?id=<s:property value='id'/>" οnclick="return confirm('您确定删除吗?')">删除</a><br/></s:iterator>--%><s:iterator value="#roleList">${id},${name},${description},<%-- <a href="${pageContext.request.contextPath}/roleAction_delete.action?id=${id}" οnclick="return confirm('您确定删除吗?')">删除</a>--%><%-- <s:a action="roleAction_delete"><s:param name="id" value="%{id}"></s:param>删除</s:a>--%><s:a action="roleAction_delete?id=%{id}" οnclick="return confirm('您确定删除吗')">删除</s:a><s:a action="roleAction_editUI?id=%{id}">编辑</s:a><br/></s:iterator><br/><s:a action="roleAction_addUI">添加</s:a></body>
</html>

addUI.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head></head><body><s:form action="roleAction_add"><s:textfield label="岗位名称" name="name"/><s:textarea label="岗位说明" name="description"/><s:submit value="提交"/></s:form></body>
</html>

editUI.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head></head><body><s:form action="roleAction_edit"><s:hidden name="id"/><s:textfield label="岗位名称" name="name"/><s:textarea label="岗位说明" name="description"/><s:submit value="提交"/></s:form></body>
</html>

运行效果:

三、Struts中的模型驱动的使用:

RoleAction.java
package cn.xbmu.oa.view.action;import java.util.List;import javax.annotation.Resource;import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import cn.xbmu.oa.domain.Role;
import cn.xbmu.oa.service.RoleService;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
@Controller
@Scope("prototype")
public class RoleAction extends ActionSupport implements ModelDriven<Role>{@Resourceprivate RoleService roleService;private Role model = new Role();public Role getModel() {return model;}/**查询*/public String list() throws Exception {List<Role> roleList = roleService.findAll();ActionContext.getContext().put("roleList", roleList);return "list";}/**删除*/public String delete() throws Exception {roleService.delete(model.getId());return "toList";}/**添加页面*/public String addUI() throws Exception {return "addUI";}/**添加*/public String add() throws Exception {//保存到数据库中roleService.save(model);return "toList";}/**修改页面*/public String editUI() throws Exception {Role role = roleService.getById(model.getId());//放到栈顶ActionContext.getContext().getValueStack().push(role);return "editUI";}/**修改*/public String edit() throws Exception {//从数据库中取出原对象Role role = roleService.getById(model.getId());//设置要修改的属性role.setName(model.getName());role.setDescription(model.getDescription());//更新到数据库中roleService.update(role);return "toList";}
}

OA项目实战学习(3)——实现岗位管理增删改查相关推荐

  1. 一篇文章教会你创建vue项目和使用vue.js实现数据增删改查

    简介:一篇文章教会你创建vue项目和使用vue.js实现数据增删改查 [一.项目背景] 在管理员的一些后台页面里,数据列表中都会对这些数据进行增删改查的操作,例如管理员添加商品.修改商品价格.删除商品 ...

  2. list vue 添加数据方法_一篇文章教会你创建vue项目和使用vue.js实现数据增删改查...

    简介:一篇文章教会你创建vue项目和使用vue.js实现数据增删改查 [一.项目背景] 在管理员的一些后台页面里,数据列表中都会对这些数据进行增删改查的操作,例如管理员添加商品.修改商品价格.删除商品 ...

  3. Mysql学习笔记(六)增删改查

    原文:Mysql学习笔记(六)增删改查 PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into tab ...

  4. 仿联想商城laravel实战---5、无刷新的增删改查(动态页面更新的三种方式(html))...

    仿联想商城laravel实战---5.无刷新的增删改查(动态页面更新的三种方式(html)) 一.总结 一句话总结: 直接js增加删除修改html 控制器直接返回处理好的页面 用双向绑定插件比如vue ...

  5. OA项目实战学习(1)

    前面我们已经搭建好了开发环境所需要的框架,并将它们整合在了一起. 今天,我们主要完成:日志说明.资源分类,BaseDao与BaseDaoImpl的设计. 日志说明: 测试日志: 资源分类: BaseD ...

  6. Oracle OAF 学习小结(2)- 增删改查/LOV/Button/Sequence 的完整案例开发

    开发配置 了解EBS服务器目录 $JAVA_TOP JSP中可以引用标准Java类库,也可以引用其他Java类库,客户化开发的类库统一放在$JAVA_TOP下,按目录组织.OAF开发的文件都放在这里. ...

  7. Asp.net MVC 学习之路-003(增删改查,后端手工,前端生成)

    时间:2017-03-09 Asp.net Mvc实现增删改查 1, 创建数据库 可参考我写的EntityFramework实现过程:http://www.jianshu.com/nb/1016674 ...

  8. python+django+sqlite3,不成熟的学生管理增删改查

    因为是边学边做的,所以有一些地方有了很麻烦的方法,登录验证也没做完,前端也很难看,只是做了基本的增删改查 1.新建project django-admin.py startproject studen ...

  9. MongoDB学习总结(二) —— 基本操作命令(增删改查)

    上一篇介绍了MongoDB在Windows平台下的安装,这一篇介绍一下MongoDB的一些基本操作命令. 下面我们直奔主题,用简单的实例依次介绍一下. > 查看所有数据库 (show dbs) ...

最新文章

  1. 中key的用途_Micro Focus Operations Bridge Manager中的多个(RCE)漏洞
  2. gossip 区块链_比特币奇葩8问:为何区块620826比区块620825早1秒诞生?
  3. 【原创】再见,CVT----记搓人的第一次找实习
  4. atitit.ajax bp dwr 3.的注解方式配置使用流程总结.....
  5. 苹果手机怎么清理听筒灰尘_安卓 | 让手机自动清理听筒扬声器灰尘,你试过了吗?...
  6. QML范围和命名分辨率
  7. 最大权闭合图hdu3996
  8. Python系列之入门篇——HDFS
  9. java安全框架下载文件_java安全框架之Permission学习笔记
  10. vs2019 + vcpkg安装OpenSSL
  11. 软件是指示计算机运行所需的程序,计算机文化基础知识点
  12. 流式上传文件到服务器磁盘,通过HTTP将数据从浏览器流式传输到服务器的方法...
  13. 怎么查询电脑mac地址
  14. 解决无线网络不稳定的两个方案几个方法
  15. 缓冲流,转换流,序列化流,网络编程
  16. 【webpack5】webpack-dev-server 热更新不能自动刷新浏览器
  17. 喜欢你,三个星期了!
  18. Centos7 安装coturn部署一套 STUN/TURN 服务 webRTC打洞服务器
  19. 删除设备和驱动器中的迅雷下载、百度网盘的图标(win10、win11可用)
  20. matlab计算空间卷积,如何在MATLAB和WolframAlpha中计算函数与自身的卷积?

热门文章

  1. 机器学习笔记(通俗易懂)---监督学习介绍:分类与回归,泛化~过拟合与欠拟合(2)
  2. 读书笔记 - 《基业长青》
  3. 基于Matlab的电磁场与波“电磁波的入射、反射、透射”仿真—(可实现波形入射反射过程的仿真)
  4. 关于Realtek 8821ce wireless lan 802.11ac网络适配器无法使用
  5. 2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num
  6. 什么是操作系统?操作系统介绍
  7. FPGA CDC跨时钟域设计学习(一)亚稳态
  8. TypeError: FC() takes no arguments
  9. Docker基础、进阶笔记,为k8s的学习预预热
  10. 浅谈互联网流量种类的划分,及其价值所在!做到精准引流定向吸粉。