您的位置:首页 > Web前端 > JQuery

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

2014-09-21 16:52 1611 查看
首先贴出后台主页面:


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

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);
}
}
}


新闻的相关功能代码实现就贴到这,源码的下载在最后一篇博文中会有贴出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐