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

首先贴出后台主页面:JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第三篇:新闻发布,新闻修改,新闻删除功能的实现_第1张图片

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

1,首先贴出后台主界面的代码:

<%@页面语言=“java的”进口=“java.util中。*”的pageEncoding =“UTF-8”%>
<!DOCTYPE HTML PUBLIC“ -  // W3C // DTD HTML 4.01过渡// EN”>

  
    <标题>新闻发布系统
    <%@ include文件=“public.jsp”%>
      <脚本类型=“文/ JavaScript的”SRC =“<%=根目录%> / JS / global.js”>  
  	<脚本类型=“文本/ 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 =' ' ;
             返回秒;
       }
         //绑定标签的右键菜单 
        $(“#标签”)。标签({ 
            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;我
  	<风格类型=“文本/ CSS”>
  		#welcome {浮动:权利;颜色:白色;字体大小:均为15px}
  		#logout {保证金顶:30像素;保证金左:300像素,高度:20像素; WebKit的边界半径:3px的;万盎司,边界半径:3px的;背景色:#005aa0;填充:3px的10px的;}
  		#logout> A {填充:3px的,10px的;高度:20像素;}
  		#logout>答:悬停{背景:#418ED6}
  	
   
   	<身体ID =“CC”级=“easyui布局”>
   			 /影像/ bk_head.jpg');“>
   				
您好:$ {user.username},欢迎您登陆新闻发布后台管理系统
/ UserAction行动=退出“的风格=”颜色:白色“>注销

版权归计科1111-陈楚东,孙凌峰,叶秋东所有 !< - - >

    / ForwardServlet?包含=新闻列表”>
    关闭
    关闭其他
    关闭所有


2,新闻列表的功能实现:


3,新闻发布界面的功能实现:

首先导入ckeditor编辑器包(可以网上下载),也可以在博文的最后一篇文章的整个系统源码下载链接下载:

新闻发布界面代码:

<%@页面进口=“com.news.domain.News”%>
<%@页面语言=“java的”进口=“java.util中。*”的pageEncoding =“UTF-8”%>

<!DOCTYPE HTML PUBLIC“ -  // W3C // DTD HTML 4.01过渡// EN”>

  
    <标题>新闻发布
     <%@ include文件=“public.jsp”%>
    <脚本类型=“文/ JavaScript的”SRC =“CKEDITOR / ckeditor.js”> 
    <脚本类型=“文/ JavaScript的”SRC =“CKEDITOR / config.js”> 
    <脚本类型=“文本/ 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(“关闭”);
				关闭视窗();
			}
		});
	}
    
  
     
<表ID =“FF”的方法=“POST”的风格=“文本对齐:中心;”> ”> <李> <标签>新闻标题(*必填): <输入值=“<%=新闻= NULL news.getTitle():!?”“%>”NAME =“标题”ID =“标题“类型=”文本“的风格=”宽度:400像素,高度:30像素;“ CLASS =“easyui-validatebox”/> <李> <标签>新闻分类(*必填):  <选择CLASS =“easyui-组合框”NAME =“CATEGORY_ID”> <期权价值=“1”>科技新闻 <期权价值=“2”>体育新闻 <期权价值=“3”>娱乐新闻 <李> <标签>新闻内容(*必填): <李> <%=新闻= NULL news.getContent():!?“”%> 的 <李的风格=“文本对齐:中心;”> 保存 取消

新闻实体新闻:

包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(“操作”,“删除编辑“);
				 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项目)