系統管理模塊_崗位管理_實現CRUD功能的具體步驟並設計Role實體
系統管理模塊_崗位管理_實現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驗證即可
系統管理模塊_崗位管理_實現CRUD功能的具體步驟並設計Role實體