系统管理模块_岗位管理_实现CRUD功能的具体步骤并设计Role实体

1,设计实体/表

  设计实体 --> JavaBean --> hbm.xml --> 建表

设计Role实体

 public class Role {
private Long id;
private String name;
private String description;
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;
}
}

映射文件

<hibernate-mapping package="cn.itcast.oa.domain">
<class name="Role" table="itcast_role">
<id name="id">
<generator class="native" />
</id>
<property name="name"></property>
<property name="description"></property>
</class>
</hibernate-mapping>

加到hibernate.cfg.xml配置中,让它知道有这个映射文件才能建表

<mapping resource="cn/itcast/oa/domain/Role.hbm.xml" />

运行测试类,创建SessionFactory时就会创建itcast_role表

    //测试SessionFactory
@Test
public void testSessionFactory() throws Exception {
SessionFactory sessionFactory = (SessionFactory)ac.getBean("sessionFactory");
System.out.println(sessionFactory);
}

2,分析有几个功能,对应几个请求。

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

列表与删除功能都是只有一个请求

添加与修改功能都是有两个请求

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

作用

方法名

返回值

对应的JSP页面

列表

list()

list

list.jsp

删除

delete()

toList

添加页面

addUI()

addUI

addUI.jsp

添加

add()

toList

修改页面

editUI()

editUI

editUI.jsp

修改

edit()

toList

toList的配置为:type="redirectAction" actionName=“xxAction_list”

<result name="toList" type="redirectAction">role_list</result>

===================================================================

    请求数量  地址栏

转发    1    不变在一个功能之间的来回跳转

重定向    2    变化在多个功能之间的跳转

role_*  --->  {1}代表第一个方法

*号代表

role_list      list

role_addUI     addUI

role_delete    delete

3,实现功能:

1,写Action类,写Action中的方法,确定Service中的方法。

先完成列表和删除功能

 @Controller
@Scope("prototype")
public class RoleAction extends ActionSupport{
//在Action里面要用到Service,用注解@Resource,另外在RoleServiceImpl类上要添加注解@Service
@Resource
private RoleService roleService; private Long id;
/**
* 列表
*/
public String list() {
List<Role> roleList = roleService.findAll();
ActionContext.getContext().put("roleList", roleList);//用ognl里的#号来获取map的东西
return "list";
}
/**
* 删除
*/
public String delete() {
roleService.delete(id);
return "toList";
}
/**
* 添加页面
*/
public String addUI() {
return "addUI";
}
/**
* 添加
*/
public String add() {
return "toList";
}
/**
* 修改页面
*/
public String editUI() {
return "editUI";
}
/**
* 修改
*/
public String edit() {
return "toList";
}
//--------------
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}

在struts.xml文件中配置

      <!-- 岗位管理 -->
<action name="role_*" 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">role_list</result>
</action>

2,写Service方法,确定Dao中的方法。

先完成列表和删除功能

RoleService.java

//接口中只有方法的声明,没有方法的实现
public interface RoleService {
//查询所有
List<Role> findAll();
//删除
void delete(Long id);
}

RoleServiceImpl.java

//在Action中要调用Service,要写下面两个注解
@Service
@Transactional //业务层要管理实务,控制开关事务
public class RoleServiceImpl implements RoleService{
//Service里要调用Dao,得到它通过注入
@Resource
private RoleDao roleDao; public List<Role> findAll() {
return roleDao.findAll();
}
public void delete(Long id) {
roleDao.delete(id);
}
}

3,写Dao方法。

RoleDao.java

public interface RoleDao extends BaseDao<Role>{
}

列表与删除等公共方法都在继承的BaseDao里有

RoleDaoImpl.java

//放到容器里面,以供Service使用Dao的接口与实现类
@Repository
public class RoleDaoImpl extends BaseDaoImpl<Role> implements RoleDao{
}

4,写JSP

list.jsp

<%@ taglib prefix="s" uri="/struts-tags" %><!-- 引入struts标签 -->
<body>
<s:iterator value="#roleList"><!-- 得到里面的集合 -->
<s:property value="id"/>,
<s:property value="name"/>,
<s:property value="description"/>,
<s:a action="role_delete?id=%{id}">删除</s:a>
</s:iterator>
</body>

访问:http://localhost:8080/ItcastOA/role_list.action即可看到列表

实现添加和修改功能

1,写Action类,写Action中的方法,确定Service中的方法。

RoleAction.java

 @Controller
@Scope("prototype")
public class RoleAction extends ActionSupport{
//在Action里面要用到Service,用注解@Resource,另外在RoleServiceImpl类上要添加注解@Service
@Resource
private RoleService roleService; private Long id;
private String name;
private String description;
/**
* 列表
*/
public String list() {
List<Role> roleList = roleService.findAll();
ActionContext.getContext().put("roleList", roleList);//用ognl里的#号来获取map的东西
return "list";
} /**
* 删除
*/
public String delete() {
roleService.delete(id);
return "toList";
}
/**
* 添加页面
*/
public String addUI() {
return "addUI";
}
/**
* 添加
*/
public String add() {
//封装到对象中
Role role = new Role();
role.setName(name);//名称和说明怎么得到,跟id一样声明字段,setget方法
role.setDescription(description); //保存到数据库中
roleService.save(role);
return "toList";
}
/**
* 修改页面
*/
public String editUI() {
//准备回显的数据
Role role =roleService.getById(id);
//ActionContext.getContext().getValueStack().push(role);//放到栈顶
this.name=role.getName();
this.description =role.getDescription();
return "editUI";
}
/**
* 修改
*/
public String edit() {
//1.从数据库中获取原对象
Role role = roleService.getById(id);//role是根据id来的 //2.设置要修改的属性
role.setName(name);
role.setDescription(description);
//3.更新到数据库
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;
}
}

2,写Service方法,确定Dao中的方法。

RoleService.java

//接口中只有方法的声明,没有方法的实现
public interface RoleService {
//查询所有
List<Role> findAll();
//删除
void delete(Long id);
//保存
void save(Role role);
Role getById(Long id);
//更新
void update(Role role);
}

3,写Dao方法。

RoleDao.java

public interface RoleDao extends BaseDao<Role>{
}

4,写JSP

addUI.jsp

  <body>
<s:form action="role_add"><!-- 提交的地址 -->
<s:textfield name="name"></s:textfield>
<s:textarea name="description"></s:textarea>
<s:submit value="提交"></s:submit>
</s:form>
</body>

editUI.jsp

     <s:form action="role_edit"><!-- 提交的地址 -->
<s:hidden name="id"></s:hidden><!-- 修改要给出隐藏的id -->
<s:textfield name="name"></s:textfield>
<s:textarea name="description"></s:textarea>
<s:submit value="提交"></s:submit>
</s:form>

访问:http://localhost:8080/ItcastOA/role_list.action验证即可

系统管理模块_岗位管理_实现CRUD功能的具体步骤并设计Role实体的更多相关文章

  1. 系统管理模块_岗位管理_改进_使用ModelDroven方案_套用美工写好的页面效果_添加功能与修改功能使用同一个页面

    改进_使用ModelDroven方案 @Controller @Scope("prototype") public class RoleAction extends ActionS ...

  2. 系统管理模块_部门管理_改进_抽取添加与修改JSP页面中的公共代码_在显示层抽取BaseAction_合并Service层与Dao层

    系统管理模块_部门管理_改进1:抽取添加与修改JSP页面中的公共代码 commons.jspf <%@ page language="java" import="j ...

  3. 用户管理_组管理_权限管理.ziw

    2017年1月10日, 星期二 用户管理_组管理_权限管理 用户管理: useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage ...

  4. 论坛模块_版块管理_增删改查&实现上下移动

    论坛模块_版块管理1_增删改查 设计实体Forum.java public class Forum { private Long id; private String name; private St ...

  5. 用户管理_组管理_设置主机名_UGO_文件高级权限_ACL权限

    用户管理: 添加用户:useradd tom 设置密码:passwd tom 切换账户: su - tom (不加-也能切换,但是 -会有两点不同 1.有-会切换到该用户的主目录  2.会切换到该用户 ...

  6. react_app 项目开发 (8)_角色管理_用户管理----权限管理 ---- shouldComponentUpdate

    角色管理 性能优化(前端面试) 需求:只要执行 setState(), 就会调用 render  重新渲染.由于有时调用了 setState,但是并没有发生状态的改变,以致于不必要的刷新 解决: 重写 ...

  7. 操作系统(5)_内存管理_李善平ppt

    i386先通过段是管理,在通过页是管理

  8. 操作系统(2)_进程管理_李善平ppt

    所有程序都有CPU和io这两部分,即使没有用户输入也有输出. CPU最好特别忙,io空闲无所谓. 程序/数据/状态 三个维度来看进程. 等待的资源可能是io资源或者通信资源(别的进程的答复). 一个进 ...

  9. 二、linux基础-路径和目录_用户管理_组_权限

    2.1路径和目录1.相对路径:参照当前目录进行查找.   如:[root@localhost ~]# cd ../opt/hosts/备注:相对路径是从你的当前目录开始为基点,去寻找另外一个目录(或者 ...

随机推荐

  1. Android 应用开发实例之文件管理器

    2013-07-02 10.2 文件管理器 能够浏览和管理手机/存储卡上的文件和文件夹,包括重命名.删除.新建.复制.粘帖等文件操作. 由于需要浏览大量的文件/文件夹,所以需要使用一个ListView ...

  2. 【LeetCode】78. Subsets (2 solutions)

    Subsets Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset ...

  3. 用lambda表达式树替代反射

    本节重点不讲反射机制,而是讲lambda表达式树来替代反射中常用的获取属性和方法,来达到相同的效果但却比反射高效. 每个人都知道,用反射调用一个方法或者对属性执行SetValue和GetValue操作 ...

  4. python ichat使用学习记录

    1.OSError: [WinError -2147221003] 找不到应用程序: 'D:\\python\\ichat\\qrcode.jpg' 原因是该库中没有windows系统如何打开二维码图 ...

  5. log4cplus基础知识

    一.简介: log4cplus是C++编写的开源的日志系统. 具有线程安全.灵活.以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序调试.运行.测试.和维护等全生命周期: 你可以选择将信息输出 ...

  6. powerdesigner 画ER图

    ER图 即为 CDM图 - Conceptual Data Modal CDM可以转换成PDM.OOM.LDM等图,具体请详查 一般,CDM图示在概要设计阶段创建,PDM图示根据CDM图的基础上产生的 ...

  7. 并发登录人数控制--Shiro系列(二)

    为了安全起见,同一个账号理应同时只能在一台设备上登录,后面登录的踢出前面登录的.用Shiro可以轻松实现此功能. shiro中sessionManager是专门作会话管理的,而sessinManage ...

  8. CodeMirror与jquery UI-Tabs混合使用 注意事项

    第一步:.将代码高亮渲染 第二步:jquery Tab输出: 第三步:点击Tab切换时,将代码块刷新: 参考:http://jtmorris.net/2013/06/codemirror-editor ...

  9. Spring Cloud(七):使用SVN存储分布式配置中心文件和实现refresh

    国内很多公司都使用的svn来做代码的版本控制,我们先介绍以下如何使用svn+Spring Cloud Config来做配置中心. svn版本 同样先示例server端的代码,基本步骤一样. 1.添加依 ...

  10. 利用ngModel相关属性及方法自定义表单验证指令

    这是一个只能输入偶数的验证指令