系统管理模块_岗位管理_实现CRUD功能的具体步骤并设计Role实体
1,设计实体/表
设计实体 --> JavaBean --> hbm.xml --> 建表
设计Role实体
1 public class Role { 2 private Long id; 3 private String name; 4 private String description; 5 public Long getId() { 6 return id; 7 } 8 public void setId(Long id) { 9 this.id = id; 10 } 11 public String getName() { 12 return name; 13 } 14 public void setName(String name) { 15 this.name = name; 16 } 17 public String getDescription() { 18 return description; 19 } 20 public void setDescription(String description) { 21 this.description = description; 22 } 23 }
映射文件
<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中的方法。
先完成列表和删除功能
1 @Controller 2 @Scope("prototype") 3 public class RoleAction extends ActionSupport{ 4 //在Action里面要用到Service,用注解@Resource,另外在RoleServiceImpl类上要添加注解@Service 5 @Resource 6 private RoleService roleService; 7 8 private Long id; 9 /** 10 * 列表 11 */ 12 public String list() { 13 List<Role> roleList = roleService.findAll(); 14 ActionContext.getContext().put("roleList", roleList);//用ognl里的#号来获取map的东西 15 return "list"; 16 } 17 /** 18 * 删除 19 */ 20 public String delete() { 21 roleService.delete(id); 22 return "toList"; 23 } 24 /** 25 * 添加页面 26 */ 27 public String addUI() { 28 return "addUI"; 29 } 30 /** 31 * 添加 32 */ 33 public String add() { 34 return "toList"; 35 } 36 /** 37 * 修改页面 38 */ 39 public String editUI() { 40 return "editUI"; 41 } 42 /** 43 * 修改 44 */ 45 public String edit() { 46 return "toList"; 47 } 48 //-------------- 49 public Long getId() { 50 return id; 51 } 52 public void setId(Long id) { 53 this.id = id; 54 } 55 }
在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
1 @Controller 2 @Scope("prototype") 3 public class RoleAction extends ActionSupport{ 4 //在Action里面要用到Service,用注解@Resource,另外在RoleServiceImpl类上要添加注解@Service 5 @Resource 6 private RoleService roleService; 7 8 private Long id; 9 private String name; 10 private String description; 11 /** 12 * 列表 13 */ 14 public String list() { 15 List<Role> roleList = roleService.findAll(); 16 ActionContext.getContext().put("roleList", roleList);//用ognl里的#号来获取map的东西 17 return "list"; 18 } 19 20 /** 21 * 删除 22 */ 23 public String delete() { 24 roleService.delete(id); 25 return "toList"; 26 } 27 /** 28 * 添加页面 29 */ 30 public String addUI() { 31 return "addUI"; 32 } 33 /** 34 * 添加 35 */ 36 public String add() { 37 //封装到对象中 38 Role role = new Role(); 39 role.setName(name);//名称和说明怎么得到,跟id一样声明字段,setget方法 40 role.setDescription(description); 41 42 //保存到数据库中 43 roleService.save(role); 44 return "toList"; 45 } 46 /** 47 * 修改页面 48 */ 49 public String editUI() { 50 //准备回显的数据 51 Role role =roleService.getById(id); 52 //ActionContext.getContext().getValueStack().push(role);//放到栈顶 53 this.name=role.getName(); 54 this.description =role.getDescription(); 55 return "editUI"; 56 } 57 /** 58 * 修改 59 */ 60 public String edit() { 61 //1.从数据库中获取原对象 62 Role role = roleService.getById(id);//role是根据id来的 63 64 //2.设置要修改的属性 65 role.setName(name); 66 role.setDescription(description); 67 //3.更新到数据库 68 roleService.update(role); 69 70 return "toList"; 71 } 72 //-------------- 73 public Long getId() { 74 return id; 75 } 76 public void setId(Long id) { 77 this.id = id; 78 } 79 public String getName() { 80 return name; 81 } 82 public void setName(String name) { 83 this.name = name; 84 } 85 public String getDescription() { 86 return description; 87 } 88 public void setDescription(String description) { 89 this.description = description; 90 } 91 }
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验证即可