實現NETCTOSS項目中資費列表功能
- 在數據訪問層增加查詢全部資費的方法
- 創建資費表,並插入預置數據:
DROP TABLE IF EXISTS `cost`; create table cost( cost_id int(4) auto_increment, name varchar(50) not null, base_duration int(11), base_cost double(7,2), unit_cost double(7,4), status char(1), descr varchar(100), creatime datetime default now(), startime datetime, cost_type char(1), constraint cost_id_pk primary key(cost_id) ); insert into cost values (null,'5.9元套餐',20,5.9,0.4,0,'5.9元20小時/月,超出部分0.4元/時',default,default,null); insert into cost values (null,'6.9元套餐',40,6.9,0.3,0,'6.9元40小時/月,超出部分0.3元/時',default,default,null); insert into cost values (null,'8.5元套餐',100,8.5,0.2,0,'8.5元100小時/月,超出部分0.2元/時',default,default,null); insert into cost values (null,'10.5元套餐',200,10.5,0.1,0,'10.5元200小時/月,超出部分0.1元/時',default,default,null); insert into cost values (null,'計時收費',null,null,0.5,0,'0.5元/時,不使用不收費',default,default,null); insert into cost values (null,'包月',null,20,null,0,'每月20元,不限制使用時間',default,default,null); insert into cost values (null,'mm',10,5,null,0,'',default,default,null); insert into cost values (null,'nn',10,7,null,0,'',default,default,null); insert into cost values (null,'qq',10,4,null,0,'',default,default,null);
- 創建資費實體類Cost:
package entity; public class Cost implements Serializable { private Integer costId; private String name; private Integer baseDuration; private Double baseCost; private Double unitCost; private String status; private String descr; private Timestamp creatime; private Timestamp startime; private String costType; }
- Generate Getters and Setters
- Generate hashCode() and equals()
- Generate toString()
- 創建資費表,並插入預置數據:
- (添加Mapper接口)資費數據訪問接口:CostDao:
package dao; import java.util.List; import entity.Cost; public interface CostDao { List<Cost> findAll(); }
- 在Mapper(映射文件)配置添加SQL, CostMapper.xml:
<mapper namespace="dao.CostDao"> <select id="findAll" resultType="entity.Cost"> select cost_id as costId, name as name, base_duration as baseDuration, base_cost as baseCost, unit_cost as unitCost, status as status, descr as descr, creatime as creatime, startime as startime, cost_type as costType from cost order by #{costId} </select>
- 在業務層增加查詢資費的業務方法:
- 定義業務接口:CostService:定義查詢資費方法:
public interface CostService { List<Cost> findAll(); }
- 創建資費業務組件CostServiceImpl:
@Service("CostService") public class CostServiceImpl implements CostService { @Resource private CostDao costDao; public List<Cost> findAll() { return costDao.findAll(); } }
- 定義業務接口:CostService:定義查詢資費方法:
- 在控制器增加處理查詢請求的方法
- 創建資費模塊處理器CostController:
@Controller @RequestMapping("/cost") public class CostController { @Resource private CostService costService; @RequestMapping("/find.do") public String find(ModelMap model){ List<Cost> list = costService.findAll(); model.addAttribute("costs",list); return "cost/cost_list"; } }
- 創建資費模塊處理器CostController:
- 在頁面上使用JSTL+EL循環輸出數據
- 在WEB-INF/jsp/cost下創建資費列表頁面cost_list.jsp:
<%@page pageEncoding="utf-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>達內-NetCTOSS</title> <link type="text/css" rel="stylesheet" media="all" href="../styles/global.css" /> <link type="text/css" rel="stylesheet" media="all" href="../styles/global_color.css" /> <script language="javascript" type="text/javascript"> //排序按鈕的點擊事件 function sort(btnObj) { if (btnObj.className == "sort_desc") btnObj.className = "sort_asc"; else btnObj.className = "sort_desc"; } //啓用 function startFee() { var r = window.confirm("確定要啓用此資費嗎?資費啓用後將不能修改和刪除。"); document.getElementById("operate_result_info").style.display = "block"; } //刪除 function deleteFee() { var r = window.confirm("確定要刪除此資費嗎?"); document.getElementById("operate_result_info").style.display = "block"; } </script> </head> <body> <!--Logo區域開始--> <div id="header"> <img src="../images/logo.png" alt="logo" class="left"/> <a href="#">[退出]</a> </div> <!--Logo區域結束--> <!--導航區域開始--> <div id="navi"> <ul id="menu"> <li><a href="../index.html" class="index_off"></a></li> <li><a href="../role/role_list.html" class="role_off"></a></li> <li><a href="../admin/admin_list.html" class="admin_off"></a></li> <li><a href="../fee/fee_list.html" class="fee_on"></a></li> <li><a href="../account/account_list.html" class="account_off"></a></li> <li><a href="../service/service_list.html" class="service_off"></a></li> <li><a href="../bill/bill_list.html" class="bill_off"></a></li> <li><a href="../report/report_list.html" class="report_off"></a></li> <li><a href="../user/user_info.html" class="information_off"></a></li> <li><a href="../user/user_modi_pwd.html" class="password_off"></a></li> </ul> </div> <!--導航區域結束--> <!--主要區域開始--> <div id="main"> <form action="" method=""> <!--排序--> <div class="search_add"> <div> <!--<input type="button" value="月租" class="sort_asc" οnclick="sort(this);" />--> <input type="button" value="基費" class="sort_asc" οnclick="sort(this);" /> <input type="button" value="時長" class="sort_asc" οnclick="sort(this);" /> </div> <input type="button" value="增加" class="btn_add" οnclick="location.href='fee_add.html';" /> </div> <!--啓用操作的操作提示--> <div id="operate_result_info" class="operate_success"> <img src="../images/close.png" οnclick="this.parentNode.style.display='none';" /> 刪除成功! </div> <!--數據區域:用表格展示數據--> <div id="data"> <table id="datalist"> <tr> <th>資費ID</th> <th class="width100">資費名稱</th> <th>基本時長</th> <th>基本費用</th> <th>單位費用</th> <th>創建時間</th> <th>開通時間</th> <th class="width50">狀態</th> <th class="width200"></th> </tr> <c:forEach items="${costs}" var="c"> <tr> <td>${c.costId}</td> <td><a href="fee_detail.html">${c.name}</a></td> <td>${c.baseDuration}</td> <td>${c.baseCost}</td> <td>${c.unitCost}</td> <td>${c.creatime}</td> <td>${c.startime}</td> <td> <c:if test="${c.status==0}">開通</c:if> <c:if test="${c.status==1}">暫停</c:if> </td> <td> <input type="button" value="啓用" class="btn_start" οnclick="startFee();" /> <input type="button" value="修改" class="btn_modify" οnclick="location.href='fee_modi.html';" /> <input type="button" value="刪除" class="btn_delete" οnclick="deleteFee();" /> </td> </tr> </c:forEach> </table> <p>業務說明:<br /> 1、創建資費時,狀態爲暫停,記載創建時間;<br /> 2、暫停狀態下,可修改,可刪除;<br /> 3、開通後,記載開通時間,且開通後不能修改、不能再停用、也不能刪除;<br /> 4、業務賬號修改資費時,在下月底統一觸發,修改其關聯的資費ID(此觸發動作由程序處理) </p> </div> <!--分頁--> <div id="pages"> <a href="#">上一頁</a> <a href="#" class="current_page">1</a> <a href="#">2</a> <a href="#">3</a> <a href="#">4</a> <a href="#">5</a> <a href="#">下一頁</a> </div> </form> </div> <!--主要區域結束--> <div id="footer"> <p>[源自北美的技術,最優秀的師資,最真實的企業環境,最適用的實戰項目]</p> <p>版權所有(C)加拿大達內IT培訓集團公司</p> </div> </body> </html>
- 在WEB-INF/jsp/cost下創建資費列表頁面cost_list.jsp:
- 測試:
- 此處NULL值沒有顯示爲0,故在SQL語句中加入IFNULL()函數:
IFNULL(base_duration,0) as baseDuration, IFNULL(base_cost,0) as baseCost, IFNULL(unit_cost,0) as unitCost,
- 瀏覽器訪問http://localhost:8080/netctoss-trySSM/cost/find.do,瀏覽器顯示結果如下圖: