千家信息网

SSH如何实现信息发布管理

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了SSH如何实现信息发布管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。信息发布的开发,还是遵循从entity->d
千家信息网最后更新 2025年11月07日SSH如何实现信息发布管理

这篇文章主要介绍了SSH如何实现信息发布管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

信息发布的开发,还是遵循从entity->dao->service->action->config的方式进行。

这里面有几个知识点:

(1)对于表单中的大数据量文本域,在映射文件(*.hbm.xml)中其类型应使用text。

例如:Java文件中

private String content;

在Hibernate映射文件中

(2)对于Date、Calendar、Timstamp的理解

Java文件中

private Timestamp createTime;

在Hibernate映射文件中

(3)抽取BaseService

(4)在新增页面,显示当前时间

Java代码

info = new Info();info.setCreateTime(new Timestamp(new Date().getTime())); // 是为了在页面中显示出当前时间

在JSP页面中显示时间的struts标签

(5)在HTML标签的id值 结合数据库中主键 的使用,使得HTML标签的id值不会重复

1、entity层

Info.java

package com.rk.tax.entity;import java.io.Serializable;import java.sql.Timestamp;import java.util.HashMap;import java.util.Map;public class Info implements Serializable {        private String infoId;        private String type;        private String source;        private String title;        private String content;        private String memo;        private String creator;        private Timestamp createTime;        private String state;                //状态        public static String INFO_STATE_PUBLIC = "1";//发布        public static String INFO_STATE_STOP = "0";//停用                //信息分类         public static String INFO_TYPE_TZGG = "tzgg";        public static String INFO_TYPE_ZCSD = "zcsd";        public static String INFO_TYPE_NSZD = "nszd";        public static Map INFO_TYPE_MAP;        static{                INFO_TYPE_MAP = new HashMap();                INFO_TYPE_MAP.put(INFO_TYPE_TZGG, "通知公告");                INFO_TYPE_MAP.put(INFO_TYPE_ZCSD, "政策速递");                INFO_TYPE_MAP.put(INFO_TYPE_NSZD, "纳税指导");        }                // {{        public String getInfoId() {                return infoId;        }        public void setInfoId(String infoId) {                this.infoId = infoId;        }        public String getType() {                return type;        }        public void setType(String type) {                this.type = type;        }        public String getSource() {                return source;        }        public void setSource(String source) {                this.source = source;        }        public String getTitle() {                return title;        }        public void setTitle(String title) {                this.title = title;        }        public String getContent() {                return content;        }        public void setContent(String content) {                this.content = content;        }        public String getMemo() {                return memo;        }        public void setMemo(String memo) {                this.memo = memo;        }        public String getCreator() {                return creator;        }        public void setCreator(String creator) {                this.creator = creator;        }        public Timestamp getCreateTime() {                return createTime;        }        public void setCreateTime(Timestamp createTime) {                this.createTime = createTime;        }        public String getState() {                return state;        }        public void setState(String state) {                this.state = state;        }        // }}        }

Info.hbm.xml

                                                                                                                                                                                                        

2、dao层

InfoDao.java

package com.rk.tax.dao;import com.rk.core.dao.BaseDao;import com.rk.tax.entity.Info;public interface InfoDao extends BaseDao {}

InfoDaoImpl.java

package com.rk.tax.dao.impl;import com.rk.core.dao.impl.BaseDaoImpl;import com.rk.tax.dao.InfoDao;import com.rk.tax.entity.Info;public class InfoDaoImpl extends BaseDaoImpl implements InfoDao {}

关于BaseDao和BaseDaoImpl可以查看 http://lsieun.blog.51cto.com/9210464/1835776

3、service层

这里要抽取一个通用的Service,即BaseService。

BaseService.java

package com.rk.core.service;import java.io.Serializable;import java.util.List;public interface BaseService {        //新增        public void save(T entity);        //更新        public void update(T entity);        //根据id删除        public void delete(Serializable id);        //根据id查找        public T findById(Serializable id);        //查找列表        public List findAll();}

BaseServiceImpl.java 这里虽然通过baseDao完成了相应的操作,但是还是应该给baseDao提供一个具体的实例变量才能执行操作,否则会报null异常。在这个项目中,所有的dao、service都是由Spring的IOC容器进行管理,那么应该如何让Spring的IOC容器为BaseServiceImpl注入baseDao呢?答案:通过BaseServiceImpl的子类完成注入。

package com.rk.core.service.Impl;import java.io.Serializable;import java.util.List;import com.rk.core.dao.BaseDao;import com.rk.core.service.BaseService;public class BaseServiceImpl implements BaseService {        private BaseDao baseDao;        public void setBaseDao(BaseDao baseDao) {                this.baseDao = baseDao;        }                public void save(T entity) {                baseDao.save(entity);        }        public void update(T entity) {                baseDao.update(entity);        }        public void delete(Serializable id) {                baseDao.delete(id);        }        public T findById(Serializable id) {                return baseDao.findById(id);        }        public List findAll() {                return baseDao.findAll();        }}

InfoService.java

package com.rk.tax.service;import com.rk.core.service.BaseService;import com.rk.tax.entity.Info;public interface InfoService extends BaseService {}

InfoServiceImpl.java 注意:这里通过对infoDao的注入,来同时完成baseDao的注入。

package com.rk.tax.service.impl;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.rk.core.service.Impl.BaseServiceImpl;import com.rk.tax.dao.InfoDao;import com.rk.tax.entity.Info;import com.rk.tax.service.InfoService;@Service("infoService")public class InfoServiceImpl extends BaseServiceImpl implements InfoService {        private InfoDao infoDao;                @Resource        public void setInfoDao(InfoDao infoDao) {                setBaseDao(infoDao);                this.infoDao = infoDao;        }}

4、action层

InfoAction.java

package com.rk.tax.action;import java.sql.Timestamp;import java.util.Date;import java.util.List;import javax.annotation.Resource;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.opensymphony.xwork2.ActionContext;import com.rk.core.action.BaseAction;import com.rk.tax.entity.Info;import com.rk.tax.service.InfoService;@Controller("infoAction")@Scope("prototype")public class InfoAction extends BaseAction {                /*****1、业务数据*****/        private List infoList;        private Info info;                /*****2、业务实现类*****/        @Resource        private InfoService infoService;                /*****3、响应JSP页面的操作*****/        //列表页面        public String listUI(){                //加载分类集合                ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP);                infoList = infoService.findAll();                return "listUI";        }        //跳转到新增页面        public String addUI(){                //加载分类集合                ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP);                info = new Info();                info.setCreateTime(new Timestamp(new Date().getTime())); // 是为了在页面中显示出当前时间                return "addUI";        }                //保存新增        public String add(){                if(info != null){                        infoService.save(info);                }                return "list";        }                //跳转到编辑页面        public String editUI(){                //加载分类集合                ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP);                if(info != null && info.getInfoId() != null){                        info = infoService.findById(info.getInfoId());                }                return "editUI";        }                //保存编辑        public String edit(){                if(info != null){                        infoService.update(info);                }                return "list";        }                //删除        public String delete(){                if(info != null && info.getInfoId() != null){                        infoService.delete(info.getInfoId());                }                return "list";        }                //批量删除        public String deleteSelected(){                if(selectedRow != null){                        for(String id : selectedRow){                                infoService.delete(id);                        }                }                return "list";        }                //异步发布信息        public void publicInfo(){                try {                        if(info != null && info.getInfoId()!= null){                                //1、更新信息状态                                Info temp = infoService.findById(info.getInfoId());                                temp.setState(info.getState());                                infoService.update(temp);                                                                //2、输出更新结果                                HttpServletResponse response = ServletActionContext.getResponse();                                response.setContentType("text/html");                                ServletOutputStream outputStream = response.getOutputStream();                                outputStream.write("更新状态成功".getBytes("utf-8"));                                outputStream.close();                        }                } catch (Exception e) {                        e.printStackTrace();                }        }                // {{        public List getInfoList() {                return infoList;        }        public void setInfoList(List infoList) {                this.infoList = infoList;        }        public Info getInfo() {                return info;        }        public void setInfo(Info info) {                this.info = info;        }        // }}}

5、config

(1)entity层配置

就是Hibernate的映射文件

(2)dao层配置,就是将dao注入到Spring的IOC容器中

(3)service层配置,就是将service注入到Spring的IOC容器中

              

(4)action层配置,一是将action注入到Spring的IOC容器中,二是将action在struts中进行url的映射

(5)最后保存所有的配置都汇总到applicationContext和struts.xml中

6、前台JSP页面

6.1、listUI.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    <%@include file="/common/header.jsp"%>    信息发布管理    
总共1条记录,当前第 1 页,共 1 页    上一页  下一页 到    

知识点(1):struts中显示时间的标签

知识点(2):判断与字符串相等

注意:state的在Java文件中是一个字符串类型

知识点(3):在异步"发布"和"停用"消息的Javascript和HTML标签中的id值

Javascript部分

        //异步发布信息,信息的id及将要改成的信息状态              function doPublic(infoId, state){                      //1、更新信息状态                      $.ajax({                              url:"${basePath}/tax/info_publicInfo.action",                              data:{"info.infoId":infoId,"info.state":state},                              type:"post",                              success:function(msg){                                      //2、更新状态栏、操作拦的显示值                                      if("更新状态成功" == msg){                                              if(state == 1){//说明信息状态已经被改成 发布,状态栏显示 发布,操作栏显示 停用                                                      $('#show_'+infoId).html("发布");                                                      $('#oper_'+infoId).html('停用');                                              }                                              else{                                                      $('#show_'+infoId).html("停用");                                                      $('#oper_'+infoId).html('发布');                                              }                                      }                                      else{                                              alert("更新信息状态失败!");                                      }                              },                              error:function(){                                      alert("更新信息状态失败!");                              }                      });              }

HTML部分

        ">                                        ',0)">停用                                                        ',1)">发布                            编辑    删除

6.2、addUI.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    <%@include file="/common/header.jsp"%>    信息发布管理    

知识点(1):时间的显示和隐藏字段

注意一点,在使用时,我使用下面语句是错误的,只是因为没有加%{},因为我认为value中接受的值都是OGNL表达式,但是它没有正确显示出来(其实,我认为自己的理解是正确的,至于为什么没有显示出来,我不清楚)。

下面是错误的写法:

知识点(2):显示当前时间和隐藏时间字段

知识点(3):默认为"发布"状态

        

6.3、editUI.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    <%@include file="/common/header.jsp"%>    信息发布管理    

知识点(1):在编辑页面,要注意隐藏原来的id和数据状态

        

感谢你能够认真阅读完这篇文章,希望小编分享的"SSH如何实现信息发布管理"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

信息 状态 更新 时间 页面 管理 知识 发布管理 知识点 文件 分类 容器 标签 配置 数据 标题 篇文章 成功 创建人 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库热点 盛元网络安全工程师 网络安全四种威胁分类 数据库服务安卓下载 开封软件开发税务筹划哪些形式 庐山互联网科技有限公司 计算机网络技术对用户影响 计算机服务和软件开发报告 长沙建设网络安全城市 诛仙新建数据库 河北科技大学互联网成绩 服务器京东签到脚本 湖南华为服务器维修维保多少钱 世界互联网创新科技成果 鼓楼区方便软件开发 温州营销网络技术包括什么 上海电子网络技术费用是多少 oj梅奥数据库 广西壮族服饰文案数据库 四川crm软件开发公司 江北区技术刀片服务器售后服务 谷歌服务器怎么添加应用到桌面 春秋网络安全小结习题答案 软件开发 营业税 税率 软件开发查询的网站有哪些 嵌入式软件开发大学排名 软件开发要求80天交付 网络安全测试题免费下载 软件开发公司与客户的关系 两台服务器通过网线连接
0