JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第三篇:新闻发布,新闻修改,新闻删除功能的实现
2014-09-21 16:52
1611 查看
首先贴出后台主页面:
下面新闻列表,新闻发布,新闻修改,新闻删除功能:
1,首先贴出后台主界面的代码:
2,新闻列表的功能实现:
3,新闻发布界面的功能实现:
首先导入ckeditor编辑器包(可以网上下载),也可以在博文的最后一篇文章的整个系统源码下载链接下载:
新闻发布界面代码:
新闻实体新闻:
控制层的代码:
业务层代码:
DAO层的代码:
新闻的相关功能代码实现就贴到这,源码的下载在最后一篇博文中会有贴出。
下面新闻列表,新闻发布,新闻修改,新闻删除功能:
1,首先贴出后台主界面的代码:
<%@页面语言=“java的”进口=“java.util中。*”的pageEncoding =“UTF-8”%> <!DOCTYPE HTML PUBLIC“ - // W3C // DTD HTML 4.01过渡// EN”> <HTML> <HEAD> <标题>新闻发布系统</ TITLE> <%@ include文件=“public.jsp”%> <脚本类型=“文/ JavaScript的”SRC =“<%=根目录%> / JS / global.js”> </ SCRIPT> <脚本类型=“文本/ javascript中”> $(函数(){ window.setInterval(cmsLoad,1000); //动态菜单数据 变种treeData = [{ 文:“新闻管理”, 儿童:[{ 文:“新闻发布”, 属性:{ 网址:“<%=根目录%> / ForwardServlet包含= newsEdit” } },{ 文:“新闻列表” 属性:{ 网址:“<%=根目录%> / ForwardServlet包含=新闻列表” } },{ 文字:“一级菜单3”, 状态:“关闭”, 儿童:[{ 文字:“二级菜单1”, 属性:{ 网址:“” } },{ 文字:“二级菜单2”, 属性:{ 网址:“” } },{ 文字:“二级菜单3”, 属性:{ 网址:“” } } ] } ] } ]; //实例化树形菜单 $(“#树”)。树({ 数据:treeData, 行:真的, onContextMenu:功能(E,职称){ e.preventDefault(); $(“#tabsMenu”)。菜单('秀',{ 左:e.pageX, 顶:e.pageY 。})数据(“tabTitle”,title.text); }, 点击:功能(节点){ 如果(node.attributes){ 打开(node.text,node.attributes.url); } } }); //在右边中心区域打开菜单,新增标签 函数open(文字,URL){ 如果($(“#标签”)。选项卡('存在',文本)){ $('#标签')选项卡('选择',文本); 其他() $('#标签“)。选项卡('添加',{ 标题:文本, 可关闭的:真实, 内容:createFrame(URL) }); } } 功能createFrame(URL){ 变种S ='<iframe的名字=“mainFrame中”滚动=“无”FRAMEBORDER =“0”SRC =“”+ URL +'“的风格=”宽度:100%;身高:100%;“> </ IFRAME>' ; 返回秒; } //绑定标签的右键菜单 $(“#标签”)。标签({ onContextMenu:功能(E,职称){ e.preventDefault(); $('#tabsMenu“)。菜单('秀',{ 左:e.pageX, 顶:e.pageY 。})数据(“tabTitle”称号); } }); //实例化菜单的的onClick事件 $(“#tabsMenu”)。菜单({ 点击:函数(项目){ CloseTab(这一点,item.name); } }); //几个关闭事件的实现 功能CloseTab(菜单式){ VAR curTabTitle = $(菜单).DATA(“tabTitle”); VAR标签= $(“#标签”); 如果(类型===“关闭”){ tabs.tabs(“关闭”,curTabTitle); 返回; } VAR allTabs = tabs.tabs(“标签”); VAR closeTabsTitle = []; $每个(allTabs,函数(){ VAR选择= $(本).panel(「购股权」); 如果(opt.closable && opt.title!= curTabTitle &&类型===“其他”){ closeTabsTitle.push(opt.title); }否则,如果(opt.closable &&类型===“全部”){ closeTabsTitle.push(opt.title); } }); 对于(VAR I = 0;我<closeTabsTitle.length,我+ +){ tabs.tabs(“关闭”,closeTabsTitle由[i]); } }}); </ SCRIPT> <风格类型=“文本/ CSS”> #welcome {浮动:权利;颜色:白色;字体大小:均为15px} #logout {保证金顶:30像素;保证金左:300像素,高度:20像素; WebKit的边界半径:3px的;万盎司,边界半径:3px的;背景色:#005aa0;填充:3px的10px的;} #logout> A {填充:3px的,10px的;高度:20像素;} #logout>答:悬停{背景:#418ED6} </样式> </ HEAD> <身体ID =“CC”级=“easyui布局”> <DIV数据选项=“区域:'北',标题:”新闻发布后台管理系统“,分裂:真实”的风格=“高度:150像素,背景图像:网址('<%=根目录%> /影像/ bk_head.jpg');“> <DIV ID =“欢迎”> <SPAN>您好:$ {user.username},欢迎您登陆新闻发布后台管理系统</ SPAN> <BR/> <DIV ID =“时钟”> </ DIV> </ BR> <DIV ID =“注销”> <a href="<%=root%> /index.jsp“的风格=”颜色:白色“目标=”_ blank将“>网站首页</A> <a href="<%=root%> / UserAction行动=退出“的风格=”颜色:白色“>注销</A> </ DIV> </ DIV> </ DIV> <DIV数据选项=“区域:'南',标题:”新闻发布后台管理系统“,分裂:真实”的风格=“高度:75像素;”> <p class =“中心”>版权归计科1111-陈楚东,孙凌峰,叶秋东所有</ P> </ DIV> !< - <DIV数据选项=“区域:'东',iconCls:'图标重载”,标题:“东方”,分裂:真实“的风格=”宽度:100像素;“> </ DIV> - > <DIV数据选项=“区域:”西方“,标题:”导航菜单“,分裂:真实”的风格=“宽度:200像素;”> <DIV ID =“AA”级=“easyui-手风琴”的风格=“的位置是:绝对的;顶:27px;左:0px;右:0px;底:0px;”> <UL ID =“树”> </ UL> </ DIV> </ DIV> <DIV数据选项=“区域:'中心',标题:”新闻管理'“的风格=”填充:5像素;背景:#eee;“> <DIV CLASS =“easyui-标签”贴合=“真正的”边界=“假”ID =“标签”> <DIV标题=“首页”> <iframe的宽度=“100%”高度=“100%”FRAMEBORDER =“0”SRC =“<%=根目录%> / ForwardServlet?包含=新闻列表”> </ IFRAME> </ DIV> </ DIV> </ DIV> </ DIV> <DIV ID =“tabsMenu”级=“easyui菜单”的风格=“宽度:120像素;” > <DIV NAME =“关闭”>关闭</ DIV> <DIV NAME =“其他”>关闭其他</ DIV> <DIV NAME =“全部”>关闭所有</ DIV> </ DIV> </ BODY> </ HTML>
2,新闻列表的功能实现:
3,新闻发布界面的功能实现:
首先导入ckeditor编辑器包(可以网上下载),也可以在博文的最后一篇文章的整个系统源码下载链接下载:
新闻发布界面代码:
<%@页面进口=“com.news.domain.News”%> <%@页面语言=“java的”进口=“java.util中。*”的pageEncoding =“UTF-8”%> <!DOCTYPE HTML PUBLIC“ - // W3C // DTD HTML 4.01过渡// EN”> <HTML> <HEAD> <标题>新闻发布</ TITLE> <%@ include文件=“public.jsp”%> <脚本类型=“文/ JavaScript的”SRC =“CKEDITOR / ckeditor.js”> </ SCRIPT> <脚本类型=“文/ JavaScript的”SRC =“CKEDITOR / config.js”> </ SCRIPT> <脚本类型=“文本/ javascript中”> 在window.onload =函数() { CKEDITOR.replace('项目',{高度:“380px”}); $('#取胜')。窗口({ 标题:“当前位置/新闻管理', 最大化:真实, 可调整大小:假的, 可关闭的:假的, 可最小化:假的, 模式:真 }); }; 功能关闭视窗(){ window.location.href =“<%=根目录%> / ForwardServlet包含=新闻列表”; } <% 新闻新闻=(新闻)request.getAttribute(“新京报”); %> 功能saveNews(){ <%字符串URL =新闻= NULL!?“NewsManagerAction行动= updateNews?”:“?NewsManagerAction行动= addNews”%> VAR URL =“<%= URL%>'; $ .messager.progress(); $('#FF“)的形式('提交',{ 网址:网址, 的onsubmit:函数(){ VAR的isValid = $(本).FORM('验证'); 如果(!的isValid){ $ .messager.progress(“关闭”); } 返回的isValid; }, 成功:功能(数据){ $ .messager.progress(“关闭”); 关闭视窗(); } }); } </ SCRIPT> </ HEAD> <DIV ID =“赢”iconCls =“图标保存”标题=“我的窗口”的风格=“保证金顶:20像素;”> <表ID =“FF”的方法=“POST”的风格=“文本对齐:中心;”> <UL风格=“列表样式:无;”> <INPUT TYPE =“隐藏”名称=“news_id”值=“<%=新闻= NULL news.getNews_id():!?”“%>”> <李> <标签>新闻标题(*必填):</标签> <输入值=“<%=新闻= NULL news.getTitle():!?”“%>”NAME =“标题”ID =“标题“类型=”文本“的风格=”宽度:400像素,高度:30像素;“ CLASS =“easyui-validatebox”/> </ LI> <李> <标签>新闻分类(*必填):</标签> <选择CLASS =“easyui-组合框”NAME =“CATEGORY_ID”> <期权价值=“1”>科技新闻</选项> <期权价值=“2”>体育新闻</选项> <期权价值=“3”>娱乐新闻</选项> </ SELECT> </ LI> <李> <标签>新闻内容(*必填):</标签> </ LI> <李> <textarea的行数=“30”COLS =“20”ID =“文章”NAME =“内容”> <%=新闻= NULL news.getContent():!?“”%> </ textarea>的</ LI> <INPUT TYPE =“隐藏”名称=“的article_id”/> <李的风格=“文本对齐:中心;”> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="saveNews()">保存</A> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="closeWindow()">取消</A> </ LI> </ UL> </ FORM> </ DIV> </ HTML>
新闻实体新闻:
包com.news.domain; 进口的java.sql.Date; 公共类新闻{ 私人整数news_id; 私人字符串名称; 私人字符串的内容; 私人时间日期; 私营范畴的类别; 公共新闻(){ 超级(); // TODO自动生成构造函数存根 } 公共字符串的getTitle(){ 返回称号; } 公开日期GETDATE(){ 返回日期; } 公共无效的setDate(日期为准){ this.date =日期; } 公共无效setTitle(字符串名称){ this.title =称号; } 公共字符串的getContent(){ 返回的内容; } 公共无效使用setContent(字符串内容){ this.content =内容; } 公共类别的getCategory(){ 返回类别; } 公共无效setCategory(类别分类){ this.category =类别; } 公共新闻(整数news_id,标题字符串,字符串的内容,类别分类){ 超级(); this.news_id = news_id; this.title =称号; this.content =内容; this.category =类别; } 公共整数getNews_id(){ 返回news_id; } 公共无效setNews_id(整数news_id){ this.news_id = news_id; } }
控制层的代码:
包com.news.action; 进口java.io.IOException异常; 进口的java.io.Writer; 进口的java.util.Map; 进口javax.servlet.ServletException; 进口javax.servlet.http.HttpServlet; 进口javax.servlet.http.HttpServletRequest; 进口javax.servlet.http.HttpServletResponse; 进口net.sf.json.JSONObject; 进口com.news.domain.Category; 进口com.news.domain.News; 进口com.news.service.NewsManagerService; 公共类NewsManagerAction扩展BaseAction { 公共无效for2(HttpServletRequest的请求,HttpServletResponse的响应){ 尝试{ request.getRequestDispatcher(“/ WEB-INF / JSP中/ index.jsp的”)转发(请求,响应)。 }赶上(例外五){ e.printStackTrace(); } } 私人NewsManagerService服务=新NewsManagerService(); 公共无效addNews(HttpServletRequest的请求,HttpServletResponse的响应){ System.out.println(“添加新闻”); 尝试{ 字符串名称= request.getParameter(“标题”); 字符串内容= request.getParameter(“内容”); 整CATEGORY_ID =新的整数(request.getParameter(“CATEGORY_ID”)); 新闻新闻=新新闻(NULL,标题,内容,新的类别(CATEGORY_ID,NULL)); service.addNews(新闻); request.getRequestDispatcher(“/ WEB-INF / JSP中/ newsList.jsp”)转发(请求,响应)。 }赶上(例外五){ // TODO:在处理异常 e.printStackTrace(); } } 公共无效新闻列表(HttpServletRequest的请求,HttpServletResponse的响应){ 字串的页面; 字符串的行; INT每页= 5; INT当前= 1; 页= request.getParameter(“页”); 如果(页!= NULL){ 当前=整数。(页); } 行= request.getParameter(“行”); 如果(行!= NULL){ 每页=整数。(行); } 尝试{ 地图<字符串,对象>地图= service.findAll(当前,页面大小); System.out.println(JSONObject.fromObject(图)的ToString()); 。response.getWriter()写(JSONObject.fromObject(图)的ToString()); } 赶上(例外五){ e.printStackTrace(); } } 公共无效findNewsById(HttpServletRequest的请求,HttpServletResponse的响应){ INT news_id =整数。(request.getParameter(“news_id”)); 新闻新闻= service.findNewsById(news_id); request.setAttribute(“新闻”,新闻); 尝试{ request.getRequestDispatcher(“/ WEB-INF / JSP中/ newsEdit.jsp”)转发(请求,响应)。 }赶上(例外五){ // TODO自动生成的catch块 e.printStackTrace(); } } 公共无效deleteNewsById(HttpServletRequest的请求,HttpServletResponse的响应)抛出异常{ 作家写= response.getWriter(); 尝试{ INT news_id =整数。(request.getParameter(“news_id”)); service.deleteNewsById(news_id); write.write(“删除成功”); }赶上(例外五){ // TODO:在处理异常 e.printStackTrace(); write.write(“删除失败”); } } 公共无效updateNews(HttpServletRequest的请求,HttpServletResponse的响应){ INT news_id =整数。(request.getParameter(“news_id”)); 字符串名称= request.getParameter(“标题”); 字符串内容= request.getParameter(“内容”); 整CATEGORY_ID =新的整数(request.getParameter(“CATEGORY_ID”)); 新闻新闻=新新闻(news_id,标题,内容,新的类别(CATEGORY_ID,NULL)); 尝试{ service.updateNews(新闻); request.getRequestDispatcher(“/ WEB-INF / JSP中/ newsList.jsp”)转发(请求,响应)。 }赶上(例外五){ // TODO自动生成的catch块 e.printStackTrace(); } } }
业务层代码:
包com.news.service; 进口的java.util.Map; 进口com.news.dao.CategoryDao; 进口com.news.dao.NewsManagerDao; 进口com.news.domain.News; 公共类NewsManagerService { NewsManagerDao道=新NewsManagerDao(); 公共无效addNews(新闻新闻){ dao.addNews(新闻); } 公共地图<字符串,对象>的findAll(INT当前,诠释每页) 抛出异常{ 返回dao.findAll(当前,每页); } 公共新闻findNewsById(INT news_id){ 返回dao.findByNews_id(news_id); } 公共无效updateNews(新闻新闻){ dao.updateNews(新闻); } 公共无效deleteNewsById(INT news_id){ dao.deleteNewsById(news_id); } }
DAO层的代码:
包com.news.dao; 进口的java.sql.Connection; 进口的java.sql.Date; 进口java.sql.PreparedStatement中; 进口java.sql.ResultSet中; 进口java.sql.SQLException; 进口java.sql.Statement中; 进口的java.util.ArrayList; 进口的java.util.HashMap; 进口的java.util.List; 进口的java.util.Map; 进口net.sf.json.JSONArray; 进口org.apache.commons.dbutils.DbUtils; 进口com.news.domain.Category; 进口com.news.domain.News; 进口com.news.utils.JdbcUtils; 进口com.news.utils.WebUtils; 公共类NewsManagerDao { 公共无效addNews(新闻新闻){ 字符串的SQL =“插入tb_news(标题,内容,日期,CATEGORY_ID)值(,,,??)”; 连接康恩= NULL; PreparedStatement的PST = NULL; 尝试{ 康恩= JdbcUtils.getConnection(); PST = conn.prepareStatement(SQL); pst.setString(1,news.getTitle()); pst.setString(2,news.getContent()); pst.setDate(3,WebUtils.getCurrentTime()); pst.setInt(4 news.getCategory()getCategory_id()); pst.executeUpdate(); }赶上(的SQLException E){ // TODO自动生成的catch块 e.printStackTrace(); }最后{ DbUtils.closeQuietly(CONN,PST,NULL); } } 公共无效updateNews(新闻新闻){ 字符串的SQL =“?更新tb_news设置标题=?,内容=?,日期=?CATEGORY_ID =其中id =?” 连接康恩= NULL; PreparedStatement的PST = NULL; 尝试{ 康恩= JdbcUtils.getConnection(); PST = conn.prepareStatement(SQL); pst.setString(1,news.getTitle()); pst.setString(2,news.getContent()); pst.setDate(3,WebUtils.getCurrentTime()); pst.setInt(4 news.getCategory()getCategory_id()); pst.setInt(5,news.getNews_id()); pst.executeUpdate(); }赶上(的SQLException E){ // TODO自动生成的catch块 e.printStackTrace(); }最后{ DbUtils.closeQuietly(CONN,PST,NULL); } } 公共新闻findByNews_id(INT news_id){ 字符串的SQL =“选择n.title,n.content,n.date,c.id C_ID,c.name从tb_news N,tb_category C其中n.category_id = c.id和n.id =?” 连接康恩= NULL; PreparedStatement的PST = NULL; 结果集RS = NULL; 新闻新闻= NULL; 尝试{ 康恩= JdbcUtils.getConnection(); PST = conn.prepareStatement(SQL); pst.setInt(1,news_id); RS = pst.executeQuery(); 如果(方法rs.next()){ 新闻=新新闻(); news.setNews_id(news_id); news.setTitle(rs.getString(“标题”)); news.setContent(rs.getString(“内容”)); news.setDate(rs.getDate(“DATE”)); news.setCategory(新类别(rs.getInt(“C_ID”),rs.getString(“姓名”))); } }赶上(的SQLException E){ // TODO自动生成的catch块 e.printStackTrace(); }最后{ DbUtils.closeQuietly(CONN,PST,NULL); } 返回新闻; } 公共无效deleteNewsById(INT news_id){ 字符串的SQL =“从tb_news其中id =删除吗?” 连接康恩= NULL; PreparedStatement的PST = NULL; 尝试{ 康恩= JdbcUtils.getConnection(); PST = conn.prepareStatement(SQL); pst.setInt(1,news_id); pst.executeUpdate(); }赶上(的SQLException E){ // TODO自动生成的catch块 e.printStackTrace(); }最后{ DbUtils.closeQuietly(CONN,PST,NULL); } } 公共地图<字符串,对象>的findAll(INT当前,诠释每页)抛出异常{ 地图<字符串,对象>结果=新的HashMap <字符串,对象>(); 连接康恩= NULL; PreparedStatement的PST = NULL; 结果集RS = NULL; 尝试{ 康恩= JdbcUtils.getConnection(); 字符串的SQL =“选择n.id,n.title,n.date,从tb_newsÑc.name,tb_category C其中n.category_id = c.id限制,??”; PST = conn.prepareStatement(SQL); pst.setInt(1,(当前为-1)*页大小); pst.setInt(2,页面大小); RS = pst.executeQuery(); 列表<地图<字符串,对象>>列表=新的ArrayList <地图<字符串,对象>>(); 而(方法rs.next()){ 地图<字符串,对象>地图=新的HashMap <字符串,对象>(); INT news_id = rs.getInt(“ID”); 字符串名称= rs.getString(“标题”); 串CATEGORY_NAME = rs.getString(“姓名”); map.put(“news_id”,news_id +“”); map.put(“标题”,标题); map.put(“日期”,rs.getDate(“DATE”)+“”); map.put(“CATEGORY_NAME”,CATEGORY_NAME); map.put(“操作”,“<a href='javascript:void(0);' onclick=\"deleteNews('"+news_id+"')\">删除</A>的<a href =”javascript的:无效(0);'的onclick = \“findNewsById('”+ news_id +“')\”>编辑</A>“); list.add(图); } result.put(“行”,JSONArray.fromObject(列表)); SQL =“选择tb_news COUNT(*)”; PST = conn.prepareStatement(SQL); RS = pst.executeQuery(); 如果(方法rs.next()){ result.put(“总”,rs.getInt(1)); } 返回结果; }赶上(例外五){ 抛出新的异常(E); }最后{ DbUtils.closeQuietly(CONN,PST,RS); } } }
新闻的相关功能代码实现就贴到这,源码的下载在最后一篇博文中会有贴出。
相关文章推荐
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第二篇:登陆和注销功能实现
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第一篇:前期环境准备
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第四篇:前台首页,新闻分类(体育新闻,科技新闻等),新闻列表分页的实现
- CMS内容管理系统开发- Java Web开发及发布实例(2)—使用JSP实现动态数据交互
- Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- Eclipse+maven配置+web项目实现(修改maven下jsp报错和其web项目默认的jdk和servlet版本)
- JSP+Servlet培训班作业管理系统[9] -登录功能的实现
- [java源码] Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- Java Web 图片管理与分享系统(Struts2+Hibernate+JSP实现)
- JSP+Servlet培训班作业管理系统[1]-登录功能的简单实现
- JSP+Servlet培训班作业管理系统[6]-人员管理功能实现
- asp.net 非常简易的新闻发布系统,结合了ajax,json,Nvelocity模板引擎,只完成了一部分功能,非常适合新手看,我以前是学java方向的,刚接触.net,做的不好的别喷哈
- Servlet+Javabean+Html实现简单的查询.删除.修改.添加四个功能
- Java项目 1 - 学生成绩管理系统---采用 Servlet+Jsp+JavaBean+MySql 设计方式,
- Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- JSP+JavaBean+Servlet技术实现某网站用户注册和登录功能
- [J2EE]UEditor编辑器实现新闻发布系统[jsp版]
- java web 项目 图书管理系统的设计与实现
- [JavaWeb基础] 004.用JSP + SERVLET 进行简单的增加删除修改
- JavaWeb物流管理项目开发(JSP、Servlet、JDBC):3、环境搭建