【SSH项目实战】国税协同平台-18.信息发布管理需求分析&CRUD

我们接下来要做一个信息发布管理的功能,首先来看看我们的需求分析:
要求
信息发布管理原型界面:


编辑信息原型界面:


2.6.2功能说明

信息发布管理:
根据信息标题、信息类型进行信息查询;可以在页面中点击“新增”发布信息,点击“删除”进行批量删除信息。列表数据包括信息标题、信息分类、申请人、申请时间、状态、操作;其中操作栏的内容为停用/发布、编辑、删除。当信息的状态为停用时,在操作栏显示发布、编辑、删除,当信息的状态为发布时,操作栏显示停用、编辑、删除。

编辑信息:
填写内容包括信息分类(通知公告、政策速递、纳税指导)、来源、信息标题、信息内容(需要编辑多种格式内容)、备注、申请人、申请时间。

首先我们用图形表达需求,使用流程图,我们使用Edraw Max来绘制流程图:



我们下面先着手来进行模块的开发:
首先编写实体类
[java]  view plain copy
  1. package cn.edu.hpu.tax.info.entity;  
  2.   
  3. import java.io.Serializable;  
  4. import java.sql.Timestamp;  
  5. import java.util.HashMap;  
  6. import java.util.Map;  
  7.   
  8. public class Info implements Serializable{  
  9.       
  10.     private String infoId;  
  11.     private String type;  
  12.     private String source;  
  13.     private String title;  
  14.     private String content;  
  15.     private String memo;  
  16.     private String creator;  
  17.     private Timestamp createTime;  
  18.     private String state;  
  19.       
  20.     //状态  
  21.     public static String INFO_STATE_PUBLIC = "1";//发布  
  22.     public static String INFO_STATE_STOP = "0";//停用  
  23.       
  24.     //信息分类  
  25.     public static String INFO_TYPE_TZGG="tzgg";  
  26.     public static String INFO_TYPE_ZCSD="zcsd";  
  27.     public static String INFO_TYPE_NSZD="nszd";  
  28.     public static Map<String,String> INFO_TYPE_MAP;  
  29.     static{  
  30.         INFO_TYPE_MAP=new HashMap<String,String>();  
  31.         INFO_TYPE_MAP.put(INFO_TYPE_TZGG, "通知公告");  
  32.         INFO_TYPE_MAP.put(INFO_TYPE_ZCSD, "政策速递");  
  33.         INFO_TYPE_MAP.put(INFO_TYPE_NSZD, "纳税指导");  
  34.     }  
  35.       
  36.       
  37.     public Info(){  
  38.           
  39.     }  
  40.       
  41.     public Info(String infoId, String type, String source, String title,  
  42.             String content, String memo, String creator, Timestamp createTime,  
  43.             String state) {  
  44.         super();  
  45.         this.infoId = infoId;  
  46.         this.type = type;  
  47.         this.source = source;  
  48.         this.title = title;  
  49.         this.content = content;  
  50.         this.memo = memo;  
  51.         this.creator = creator;  
  52.         this.createTime = createTime;  
  53.         this.state = state;  
  54.     }  
  55.     //下面是get和set方法,这里省略  
  56.       
  57. }  

然后使我们的映射文件:
Info.hbm.xml
[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4.   
  5.   
  6. <hibernate-mapping>  
  7.     <class name="cn.edu.hpu.tax.info.entity.Info" table="info">  
  8.         <id name="infoId" type="java.lang.String">  
  9.             <column name="info_id" length="32"/>  
  10.             <generator class="uuid.hex" />  
  11.         </id>  
  12.         <property name="type" type="java.lang.String">  
  13.             <column name="type" length="10" />  
  14.         </property>  
  15.         <property name="source" type="java.lang.String">  
  16.             <column name="source" length="50" />  
  17.         </property>  
  18.         <property name="title" type="java.lang.String">  
  19.             <column name="title" length="100" not-null="true" />  
  20.         </property>  
  21.         <property name="content" type="text">  
  22.             <column name="content" />  
  23.         </property>  
  24.         <property name="memo" type="java.lang.String">  
  25.             <column name="memo" length="200" />  
  26.         </property>  
  27.         <property name="creator" type="java.lang.String">  
  28.             <column name="creator" length="10" />  
  29.         </property>  
  30.         <property name="createTime" type="java.sql.Timestamp">  
  31.             <column name="create_time" length="19" />  
  32.         </property>  
  33.         <property name="state" type="java.lang.String">  
  34.             <column name="state" length="1" />  
  35.         </property>  
  36.     </class>  
  37. </hibernate-mapping>  

之后使我们的Dao层:
[java]  view plain copy
  1. package cn.edu.hpu.tax.info.dao;  
  2.   
  3. import cn.edu.hpu.tax.core.dao.BaseDao;  
  4. import cn.edu.hpu.tax.info.entity.Info;  
  5.   
  6. public interface InfoDao extends BaseDao<Info> {  
  7.   
  8. }  

[java]  view plain copy
  1. package cn.edu.hpu.tax.info.dao.impl;  
  2.   
  3. import cn.edu.hpu.tax.core.dao.impl.BaseDaoImpl;  
  4. import cn.edu.hpu.tax.info.dao.InfoDao;  
  5. import cn.edu.hpu.tax.info.entity.Info;  
  6.   
  7.   
  8. public class InfoDaoImpl extends BaseDaoImpl<Info> implements InfoDao {  
  9.   
  10.   
  11. }  

然后使我们的Service层:
[java]  view plain copy
  1. package cn.edu.hpu.tax.info.service;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5.   
  6. import cn.edu.hpu.tax.info.entity.Info;  
  7.   
  8.   
  9. public interface InfoService {  
  10.       
  11.     //新增  
  12.     public void save(Info entity);  
  13.     //更新  
  14.     public void update(Info enetity);  
  15.     //根据id删除  
  16.     public void delete(Serializable id);  
  17.     //根据id查找  
  18.     public Info findObjectById(Serializable id);  
  19.     //查找列表  
  20.     public List<Info> findObjects();  
  21. }  

[java]  view plain copy
  1. package cn.edu.hpu.tax.info.service.impl;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5.   
  6.   
  7. import javax.annotation.Resource;  
  8.   
  9.   
  10. import org.springframework.stereotype.Service;  
  11.   
  12.   
  13. import cn.edu.hpu.tax.info.dao.InfoDao;  
  14. import cn.edu.hpu.tax.info.entity.Info;  
  15.   
  16.   
  17. @Service("infoService")  
  18. public class InfoServiceImpl implements InfoService {  
  19.   
  20.   
  21.     @Resource  
  22.     private InfoDao infoDao;  
  23.       
  24.     @Override  
  25.     public void delete(Serializable id) {  
  26.         infoDao.delete(id);  
  27.     }  
  28.   
  29.   
  30.     @Override  
  31.     public Info findObjectById(Serializable id) {  
  32.         return infoDao.findObjectById(id);  
  33.     }  
  34.   
  35.   
  36.     @Override  
  37.     public List<Info> findObjects() {  
  38.         return infoDao.findObjects();  
  39.     }  
  40.   
  41.   
  42.     @Override  
  43.     public void save(Info entity) {  
  44.         infoDao.save(entity);  
  45.     }  
  46.   
  47.   
  48.     @Override  
  49.     public void update(Info enetity) {  
  50.         infoDao.update(enetity);  
  51.     }  
  52.   
  53.   
  54. }  

然后使我们的Action层:
[java]  view plain copy
  1. package cn.edu.hpu.tax.info.action;  
  2.   
  3. import java.util.HashSet;  
  4. import java.util.List;  
  5.   
  6. import javax.annotation.Resource;  
  7.   
  8. import cn.edu.hpu.tax.core.action.BaseAction;  
  9. import cn.edu.hpu.tax.core.content.Constant;  
  10. import cn.edu.hpu.tax.info.entity.Info;  
  11. import cn.edu.hpu.tax.info.service.InfoService;  
  12.   
  13. import com.opensymphony.xwork2.ActionContext;  
  14.   
  15. public class InfoAction extends BaseAction {  
  16.     @Resource  
  17.     private InfoService infoService;  
  18.     private List<Info> infoList;  
  19.     private Info info;  
  20.       
  21.     //列表页面  
  22.     public String listUI() throws Exception{  
  23.         try {  
  24.             //加载分类集合  
  25.             ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP);  
  26.             infoList=infoService.findObjects();  
  27.         } catch (Exception e) {  
  28.             throw new Exception(e.getMessage());  
  29.         }  
  30.         return "listUI";  
  31.     }  
  32.     //跳转到新增页面  
  33.     public String addUI(){  
  34.         //加载分类集合  
  35.         ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP);  
  36.         //在进入编辑页面的时候传入当前创建时间  
  37.         info=new Info();  
  38.         info.setCreateTime(new Timestamp(new Date().getTime()));  
  39.         return "addUI";  
  40.     }  
  41.     //保存新增  
  42.     public String add(){  
  43.         if(info!=null ){  
  44.             infoService.save(info);  
  45.         }  
  46.         return "list";  
  47.     }  
  48.     //跳转到编辑界面  
  49.     public String editUI(){  
  50.         //加载分类集合  
  51.         ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP);  
  52.         if(info!=null && info.getInfoId()!=null){  
  53.             info=infoService.findObjectById(info.getInfoId());  
  54.         }  
  55.         return "editUI";  
  56.     }  
  57.     //保存编辑  
  58.     public String edit(){  
  59.         infoService.update(info);  
  60.         return "list";  
  61.     }  
  62.     //删除  
  63.     public String delete(){  
  64.         if(info!=null && info.getInfoId()!=null){  
  65.             infoService.delete(info.getInfoId());  
  66.         }  
  67.         return "list";  
  68.     }  
  69.     //批量删除  
  70.     public String deleteSelected(){  
  71.         if(selectedRow!=null){  
  72.             for(String id:selectedRow){  
  73.                 infoService.delete(id);  
  74.             }  
  75.         }  
  76.         return "list";  
  77.     }  
  78.       
  79.     public List<Info> getInfoList() {  
  80.         return infoList;  
  81.     }  
  82.     public void setInfoList(List<Info> InfoList) {  
  83.         this.infoList = InfoList;  
  84.     }  
  85.     public Info getInfo() {  
  86.         return info;  
  87.     }  
  88.     public void setInfo(Info info) {  
  89.         this.info = info;  
  90.     }  
  91. }  

接下来使我们的配置文件:
info-spring.xml:
[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  6.     xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
  7.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   
  8.     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
  9.     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
  10.       
  11.     <!-- 继承了注入sessionFactory的抽象类,不用反复出入sessionFactory -->  
  12.     <bean id="infoDao" class="cn.edu.hpu.tax.info.dao.impl.InfoDaoImpl" parent="xDao"></bean>  
  13.       
  14.     <!-- 扫描Service -->  
  15.     <context:component-scan base-package="cn.edu.hpu.tax.info.service.impl"></context:component-scan>  
  16. </beans>  

info-struts.xml:
[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
  5.   
  6.   
  7. <struts>  
  8.     <package name="info-action" namespace="/tax" extends="base-default">  
  9.         <action name="info_*" class="cn.edu.hpu.tax.info.action.InfoAction" method="{1}">  
  10.             <result name="{1}">/WEB-INF/jsp/tax/info/{1}.jsp</result>  
  11.             <result name="list" type="redirectAction">  
  12.                 <param name="actionName">info_listUI</param>  
  13.             </result>  
  14.         </action>  
  15.     </package>  
  16. </struts>  

然后将info-struts.xml引入到总struts文件中:
[html]  view plain copy
  1. <!-- 信息发布的struts配置文件 -->  
  2. <include file="cn/edu/hpu/tax/info/conf/info-struts.xml"/>  

然后把我们美工做好的jsp页面引进来(addUI.jsp/editUI.jsp/listUI.jsp):
listUI.jsp
[html]  view plain copy
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>  
  2. <html>  
  3. <head>  
  4.     <%@include file="/common/header.jsp"%>  
  5.     <title>信息发布管理</title>  
  6.     <script type="text/javascript">  
  7.     //全选、全反选  
  8.     function doSelectAll(){  
  9.         // jquery 1.6 前  
  10.         //$("input[name=selectedRow]").attr("checked", $("#selAll").is(":checked"));  
  11.         //prop jquery 1.6+建议使用  
  12.         $("input[name=selectedRow]").prop("checked", $("#selAll").is(":checked"));        
  13.     }  
  14.     //新增  
  15.     function doAdd(){  
  16.         document.forms[0].action = "${basePath}tax/info_addUI.action";  
  17.         document.forms[0].submit();  
  18.     }  
  19.     //编辑  
  20.     function doEdit(id){  
  21.         document.forms[0].action = "${basePath}tax/info_editUI.action?info.infoId=" + id;  
  22.         document.forms[0].submit();  
  23.     }  
  24.     //删除  
  25.     function doDelete(id){  
  26.         document.forms[0].action = "${basePath}tax/info_delete.action?info.infoId=" + id;  
  27.         document.forms[0].submit();  
  28.     }  
  29.     //批量删除  
  30.     function doDeleteAll(){  
  31.         document.forms[0].action = "${basePath}tax/info_deleteSelected.action";  
  32.         document.forms[0].submit();  
  33.     }  
  34.        
  35.     </script>  
  36. </head>  
  37. <body class="rightBody">  
  38. <form name="form1" action="" method="post">  
  39.     <div class="p_d_1">  
  40.         <div class="p_d_1_1">  
  41.             <div class="content_info">  
  42.                 <div class="c_crumbs"><div><b></b><strong>信息发布管理</strong></div> </div>  
  43.                 <div class="search_art">  
  44.                     <li>  
  45.                         信息标题:<s:textfield name="info.title" cssClass="s_text" id="infoTitle"  cssStyle="width:160px;"/>  
  46.                     </li>  
  47.                     <li><input type="button" class="s_button" value="搜 索" onclick="doSearch()"/></li>  
  48.                     <li style="float:right;">  
  49.                         <input type="button" value="新增" class="s_button" onclick="doAdd()"/>   
  50.                         <input type="button" value="删除" class="s_button" onclick="doDeleteAll()"/>   
  51.                     </li>  
  52.                 </div>  
  53.   
  54.   
  55.                 <div class="t_list" style="margin:0px; border:0px none;">  
  56.                     <table width="100%" border="0">  
  57.                         <tr class="t_tit">  
  58.                             <td width="30" align="center"><input type="checkbox" id="selAll" onclick="doSelectAll()" /></td>  
  59.                             <td align="center">信息标题</td>  
  60.                             <td width="120" align="center">信息分类</td>  
  61.                             <td width="120" align="center">创建人</td>  
  62.                             <td width="140" align="center">创建时间</td>  
  63.                             <td width="80" align="center">状态</td>  
  64.                             <td width="120" align="center">操作</td>  
  65.                         </tr>  
  66.                         <s:iterator value="infoList" status="st">  
  67.                             <tr <s:if test="#st.odd"> bgcolor="f8f8f8" </s:if> >  
  68.                                 <td align="center"><input type="checkbox" name="selectedRow" value="<s:property value='infoId'/>"/></td>  
  69.                                 <td align="center"><s:property value="title"/></td>  
  70.                                 <td align="center">  
  71.                                     <s:property value="#infoTypeMap[type]"/>    
  72.                                 </td>  
  73.                                 <td align="center"><s:property value="creator"/></td>  
  74.                                 <td align="center"><s:date name="createTime" format="yyyy-MM-dd HH:mm"/></td>  
  75.                                 <td id="show_<s:property value='infoId'/>" align="center"><s:property value="state==1?'发布':'停用'"/></td>  
  76.                                 <td align="center">  
  77.                                       
  78.                                     <a href="#">停用</a>  
  79.                                       
  80.                                     <a href="javascript:doEdit('<s:property value='infoId'/>')">编辑</a>  
  81.                                     <a href="javascript:doDelete('<s:property value='infoId'/>')">删除</a>  
  82.                                 </td>  
  83.                             </tr>  
  84.                         </s:iterator>  
  85.                     </table>  
  86.                 </div>  
  87.             </div>  
  88.         <div class="c_pate" style="margin-top: 5px;">  
  89.         <table width="100%" class="pageDown" border="0" cellspacing="0"  
  90.             cellpadding="0">  
  91.             <tr>  
  92.                 <td align="right">  
  93.                     总共1条记录,当前第 1 页,共 1 页     
  94.                             <a href="#">上一页</a>  <a href="#">下一页</a>  
  95.                     到 <input type="text" style="width: 30px;" onkeypress="if(event.keyCode == 13){doGoPage(this.value);}" min="1"  
  96.                     max="" value="1" />     
  97.                 </td>  
  98.             </tr>  
  99.         </table>    
  100.         </div>  
  101.   
  102.   
  103.         </div>  
  104.     </div>  
  105. </form>  
  106.   
  107.   
  108. </body>  
  109. </html>  

addUI.jsp
[html]  view plain copy
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>  
  2. <html>  
  3. <head>  
  4.     <%@include file="/common/header.jsp"%>  
  5.     <title>信息发布管理</title>  
  6.        
  7.     <script>  
  8.            
  9.     </script>  
  10. </head>  
  11. <body class="rightBody">  
  12. <form id="form" name="form" action="${basePath }tax/info_add.action" method="post" enctype="multipart/form-data">  
  13.     <div class="p_d_1">  
  14.         <div class="p_d_1_1">  
  15.             <div class="content_info">  
  16.     <div class="c_crumbs"><div><b></b><strong>信息发布管理</strong> - 新增信息</div></div>  
  17.     <div class="tableH2">新增信息</div>  
  18.     <table id="baseInfo" width="100%" align="center" class="list" border="0" cellpadding="0" cellspacing="0"  >  
  19.         <tr>  
  20.             <td class="tdBg" width="200px">信息分类:</td>  
  21.             <td><s:select name="info.type" list="#infoTypeMap"/></td>  
  22.             <td class="tdBg" width="200px">来源:</td>  
  23.             <td><s:textfield name="info.source"/></td>  
  24.         </tr>  
  25.         <tr>  
  26.             <td class="tdBg" width="200px">信息标题:</td>  
  27.             <td colspan="3"><s:textfield name="info.title" cssStyle="width:90%"/></td>  
  28.         </tr>  
  29.         <tr>  
  30.             <td class="tdBg" width="200px">信息内容:</td>  
  31.             <td colspan="3"><s:textarea id="editor" name="info.content" cssStyle="width:90%;height:160px;" /></td>  
  32.         </tr>  
  33.         <tr>  
  34.             <td class="tdBg" width="200px">备注:</td>  
  35.             <td colspan="3"><s:textarea name="info.memo" cols="90" rows="3"/></td>  
  36.         </tr>  
  37.         <tr>  
  38.             <td class="tdBg" width="200px">创建人:</td>  
  39.             <td>  
  40.                 <s:property value="#session.SYS_USER.name"/>  
  41.                 <s:hidden name="info.creator" value="%{#session.SYS_USER.name}"/>  
  42.             </td>  
  43.             <td class="tdBg" width="200px">创建时间:</td>  
  44.             <td>  
  45.                 <s:date name="info.createTime" format="yyyy-MM-dd HH:mm"/>  
  46.                 <s:hidden name="info.createTime"/>  
  47.             </td>  
  48.         </tr>  
  49.     </table>  
  50.     <!-- 默认信息状态为 发布 -->  
  51.     <s:hidden name="info.state" value="1"/>  
  52.     <div class="tc mt20">  
  53.         <input type="submit" class="btnB2" value="保存" />  
  54.               
  55.         <input type="button"  onclick="javascript:history.go(-1)" class="btnB2" value="返回" />  
  56.     </div>  
  57.     </div></div></div>  
  58. </form>  
  59. </body>  
  60. </html>  

editUI.jsp
[html]  view plain copy
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>  
  2. <html>  
  3. <head>  
  4.     <%@include file="/common/header.jsp"%>  
  5.     <title>信息发布管理</title>  
  6.        
  7.     <script>  
  8.            
  9.     </script>  
  10.   
  11.   
  12. </head>  
  13. <body class="rightBody">  
  14. <form id="form" name="form" action="${basePath}tax/info_edit.action" method="post" enctype="multipart/form-data">  
  15.     <div class="p_d_1">  
  16.         <div class="p_d_1_1">  
  17.             <div class="content_info">  
  18.     <div class="c_crumbs"><div><b></b><strong>信息发布管理</strong> - 修改信息</div></div>  
  19.     <div class="tableH2">修改信息</div>  
  20.     <table id="baseInfo" width="100%" align="center" class="list" border="0" cellpadding="0" cellspacing="0"  >  
  21.         <tr>  
  22.             <td class="tdBg" width="200px">信息分类:</td>  
  23.             <td><s:select name="info.type" list="#infoTypeMap"/></td>  
  24.             <td class="tdBg" width="200px">来源:</td>  
  25.             <td><s:textfield name="info.source"/></td>  
  26.         </tr>  
  27.         <tr>  
  28.             <td class="tdBg" width="200px">信息标题:</td>  
  29.             <td colspan="3"><s:textfield name="info.title" cssStyle="width:90%"/></td>  
  30.         </tr>  
  31.         <tr>  
  32.             <td class="tdBg" width="200px">信息内容:</td>  
  33.             <td colspan="3"><s:textarea id="editor" name="info.content" cssStyle="width:90%;height:160px;" /></td>  
  34.         </tr>  
  35.         <tr>  
  36.             <td class="tdBg" width="200px">备注:</td>  
  37.             <td colspan="3"><s:textarea name="info.memo" cols="90" rows="3"/></td>  
  38.         </tr>  
  39.         <tr>  
  40.             <td class="tdBg" width="200px">创建人:</td>  
  41.             <td>  
  42.                 <s:property value="info.creator"/>  
  43.                 <s:hidden name="info.creator"/>  
  44.             </td>  
  45.             <td class="tdBg" width="200px">创建时间:</td>  
  46.             <td>  
  47.                 <s:date name="info.createTime" format="yyyy-MM-dd HH:mm"/>  
  48.                 <s:hidden name="info.createTime"/>  
  49.             </td>  
  50.         </tr>  
  51.     </table>  
  52.     <s:hidden name="info.infoId"/>  
  53.     <s:hidden name="info.state"/>  
  54.     <div class="tc mt20">  
  55.         <input type="submit" class="btnB2" value="保存" />  
  56.               
  57.         <input type="button"  onclick="javascript:history.go(-1)" class="btnB2" value="返回" />  
  58.     </div>  
  59.     </div></div></div>  
  60. </form>  
  61. </body>  
  62. </html>  

然后在子系统的frame框架的左边列表(left.jap)加入链接:
[html]  view plain copy
  1. <dl>  
  2.     <dt><a class="xxfb" href="${ctx }tax/info_listUI.action" target="mainFrame"><b></b>信息发布管理<s class="down"></s>   
  3.     </a></dt>  
  4. </dl>  

之后重启服务器测试;



新增一个信息:

新增成功:



编辑信息:

编辑成功:



删除信息

删除成功!

至此我们信息发布管理的基础增删改查完成了,但是我们还没有完成我们的所有需求,下一篇总结继续完成我们的信息发布管理业务的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值