JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第三篇:新闻发布,新闻修改,新闻删除功能的实现

首先贴出后台主页面:

下面新闻列表,新闻发布,新闻修改,新闻删除功能:

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" οnclick="saveNews()">保存</A>
		 		 <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" οnclick="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);' οnclick=\"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);
		}
	}
}

新闻的相关功能代码实现就贴到这,源码的下载在最后一篇博文中会有贴出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值