IDEA+Java+Servlet+JSP+Mysql实现新闻发布系统
Posted 水坚石青
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA+Java+Servlet+JSP+Mysql实现新闻发布系统相关的知识,希望对你有一定的参考价值。
目录
一、系统介绍
1.开发环境
开发工具:IDEA2018.2
JDK版本:jdk1.8
mysql版本:8.0.13
2.技术选型
后端使用Java+Servlet进行开发,前端为Jsp,数据库为Mysql。
3.系统功能
1.用户
1.浏览首页
2.查看新闻
2.超级管理员
1.登录系统
2.用户管理
用户的增删改查
3.用户类型管理
用户类型的增删改查
4.新闻类型管理
新闻类型的增删改查
5.权限分配
用户发布新闻的权限分配
3.管理员
1.登录系统
2.新闻管理
新闻的增删改查与发布。
4.数据库
/*
Navicat Premium Data Transfer
Source Server : Mysql
Source Server Type : MySQL
Source Server Version : 80013
Source Host : localhost:3306
Source Schema : jsp_servlet_newspublic
Target Server Type : MySQL
Target Server Version : 80013
File Encoding : 65001
Date: 17/07/2021 23:13:42
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for news
-- ----------------------------
DROP TABLE IF EXISTS `news`;
CREATE TABLE `news` (
`newsID` bigint(20) NOT NULL AUTO_INCREMENT,
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`publishTime` datetime(0) NOT NULL,
`deadLine` datetime(0) NULL DEFAULT NULL,
`count` int(11) NULL DEFAULT NULL,
`operator` bigint(20) NOT NULL,
`type` bigint(20) NOT NULL,
`status` smallint(2) NULL DEFAULT NULL COMMENT '1.新建 2.已发布 3.取消发布',
PRIMARY KEY (`newsID`) USING BTREE,
INDEX `new_operator`(`operator`) USING BTREE,
INDEX `news_newsType`(`type`) USING BTREE,
INDEX `News_title`(`title`) USING BTREE,
CONSTRAINT `new_operator` FOREIGN KEY (`operator`) REFERENCES `operator` (`operatorid`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `news_newsType` FOREIGN KEY (`type`) REFERENCES `newstype` (`newstypeid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 647 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of news
-- ----------------------------
INSERT INTO `news` VALUES (8, '我校成功承办“高端装备传动系统共性基础问题研讨会”', ' 由国家自然科学基金委员会工程与材料科学部主办、我校与北京工业大学、重庆大学联合承办的“高端装备传动系统共性基础问题研讨会”,于2014年1月10日—12日在重庆天宇大酒店隆重举行。精密机械和微纳机械专家王立鼎院士、齿轮协会名誉会长王声堂教授级高工、合肥工业大学副校长赵韩教授、北京工业大学长江学者石照耀教授、西安交通大学毛世明教授、重庆大学秦大同教授等传动领域知名学者,以及国家自然科学基金委员会工程与材料科学部二处赖一楠主任出席了会议。我校石晓辉校长、许洪斌副校长,机械工程学院、车辆工程学院、汽车零部件先进制造技术教育部重点实验室、机械检测技术与装备教育部工程中心、科研处等部门领导和教师代表出席了会议。会议聚集了全国齿轮行业高端人才80余人。\\r\\n\\r\\n 本次会议从国家重大工程需求和行业发展的高度,梳理研究现状,分析我国的差距与特色优势,探讨高端装备中传动系统的共性基础问题,侧重齿轮传动新原理及新方法等方面研讨。会议主要由大会主题报告与分组讨论两阶段构成。\\r\\n\\r\\n 石晓辉校长在致辞中热情欢迎王立鼎院士及国家自然科学基金委领导,感谢他们对重庆理工大学各项工作的支持。王立鼎院士做了题为“关于精密圆柱齿轮加工与测试技术的思考”的报告,提出了精密圆柱齿轮加工的新思路;王声堂会长做了题为“齿轮共性技术平台的市场化建设问题”的报告,畅想了科技与市场相结合的新模式;赵韩副校长详尽剖析了国内齿轮的研究情况;许洪斌副校长做了题为“齿轮表面工程新技术及研究进展”报告,共享了齿轮表面工程的新技术,并提出了下一步工作的新方向;北京工业大学石照耀教授探讨了齿轮测量的前沿问题;西安交通大学毛世明教授介绍了英国齿轮传动技术的研究现状。与会代表踊跃发言,为我国高端传动领域今后的发展献言献策。新年伊始,国家自然科学基金委将全年召开的为数不多的学术研讨会,首先定位在“高端传动领域”,并由我校承办,足见基金委对传动研究领域的重视以及对我校科研工作的肯定。\\r\\n\\r\\n 最后,基金委领导就高端传动领域下一步的研究工作做出了重要指示:要从注重传动单元技术转向关注传动系统整体集成技术;从国家重大需求出发,站在理论研究前沿实现传动机理的突破;从行业需求的角度,从下至上梳理科学问题,进行学科交叉,实现理论与实践的完美结合。\\r\\n\\r\\n(机械工程学院、车辆工程学院、科研处供稿并提供图片 责编/钟世潋)\\r\\n\\r\\n3国家自然科学基金委领导做报告\\r\\n\\r\\n由国家自然科学基金委员会工程与材料科学部主办、我校与北京工业大学、重庆大学联合承办的“高端装备传动系统共性基础问题研讨会”,于2014年1月10日—12日在重庆天宇大酒店隆重举行\\r\\n\\r\\n2王立鼎院士做报告\\r\\n\\r\\n王立鼎院士做报告\\r\\n\\r\\n4王声堂会长做报告\\r\\n\\r\\n王声堂会长做报告\\r\\n\\r\\n5合肥工业大学副校长赵韩教授做报告\\r\\n\\r\\n合肥工业大学副校长赵韩教授做报告\\r\\n\\r\\n6重庆理工大学副校长许洪斌教授做报告\\r\\n\\r\\n重庆理工大学副校长许洪斌教授做报告\\r\\n\\r\\n7石耀照教授做报告\\r\\n\\r\\n石耀照教授做报告\\r\\n\\r\\n8西安交通大学毛世明教授做报告\\r\\n\\r\\n西安交通大学毛世明教授做报告\\r\\n\\r\\n9王立鼎院士与学校领导交流合影\\r\\n\\r\\n王立鼎院士与学校领导交流合影\\r\\n', '2014-01-15 13:45:12', NULL, 7, 2, 19, 2);
INSERT INTO `news` VALUES (25, '视频监控显成效 我校破获一起学生寝室笔记本电脑盗窃案件', ' 2014年1月13日11时20分,车辆学院学生张某报案称:8时30分寝室四名同学参加考试离开寝室(榕轩),11时15分回寝室时发现四台笔记本电脑被盗,随即向保卫处报案。\\r\\n 接到报案后,保卫处高度重视,立即成立专案组,组织力量进行侦破。通过相关技术侦查手段和调取视频监控录像,于当天下午14时左右锁定了犯罪嫌疑人,并完整再现了嫌疑人进出校区的所有活动轨迹。并在1月14日上午开展的抓捕行动中成功将该嫌疑人抓获,并配合地方公安机关立即开展追赃行动,成功将四台笔记本电脑追回,挽回了学生损失,目前该嫌疑人已移交公安机关刑拘,等待的将是法律的严惩。\\r\\n 本次案件的快速侦破,我校视频监控系统发挥了积极地作用,虽然嫌疑人进行了伪装作案,但法网恢恢,疏而不漏,电子眼全天候监控,将尽最大力度保障师生生命财产安全。\\r\\n 保卫处在此提醒:春节寒假将至,也是每年的案件高发时期,同学们应妥善保管好自身财物,避免财产意外损失。同时,保卫处设立举报电话,对无学籍却违规滞留在学生宿舍的校漂族(本次作案嫌疑人即为无学籍却违规滞留在学生宿舍的校漂族)进行举报,举报电话:023-62563110。\\r\\n(保卫处供稿并提供图片 责编/钟世潋)\\r\\n \\r\\n8QW`TQD[H27QAM7I6KYMJ55\\r\\n保卫处向公安机关移交犯罪嫌疑人', '2014-01-16 15:04:32', NULL, 21, 2, 19, 2);
INSERT INTO `news` VALUES (26, '我校科技人才队伍建设取得显著成效', ' 2013年,我校坚持实施人才强校战略,不断推进科技人才队伍建设工作,取得了显著成效。\\r\\n 在科研创新团队建设方面,继续抓好已有市级高校创新团队的建设工作,在科学研究、标志性成果打造、人才培养、带头人塑造、体制创新性探索等方面均取得了较好成绩,其中,“精密检测技术与智能传感器”和“汽车传动系统零部件制造与检测技术”2个首批团队在国内已凸显了一定的科研优势和社会影响;通过积极谋划和精心组织,择优遴选推荐的“高性能齿轮先进制造技术及传动系统”、“企业战略与技术创新”和“汽车性能CAE开发技术”3个团队成功入选了第三批重庆市高校创新团队建设计划。目前我校已累计获得8个创新团队建设计划支持,在市属高校中名列前茅。\\r\\n 在科技人才培养方面,通过政策的引领,营造人才成长的良好环境。同时依托校级、市级科研创新团队建设计划、校级青年英才等人才队伍建设工程,形成了定位明确、层次清晰、衔接紧密、促进优秀人才可持续发展的培养和支持体系。于2013年获得了一批省部级科技人才支持计划。如:刘小康教授获得了教育部新世纪人才支持计划;林治华教授入选首批重庆市科技创新领军人才;全学军教授获得了重庆市百名工程技术高端人才培养计划;蒋成约博士、但远宏博士、胡学步博士和杨朝龙博士获得了首批重庆市新产品创新青年科技人才培养项目支持。\\r\\n 2014年是我校实现“十二五”规划发展目标的攻坚之年,我校将进一步推进人才强校战略,培养一批青年科技人才,建设一批高水平的科研创新团队,为提升学校科研水平起到积极推动作用。\\r\\n(科研处供稿 责编/钟世潋)', '2014-01-16 15:05:37', NULL, 18, 2, 19, 2);
INSERT INTO `news` VALUES (643, '中国自研操作系统欲破垄断 未知研发成本', ' 比特网(ChinaByte)1月20日消息,中科院软件研究所携上海联彤日前发布了一款自主开发的智能手机操作系统:COS,宣称要打破谷歌、苹果和微软系统在中国的垄断地位。\\r\\n\\r\\n 这是继同洲960之后第二款号称拥有自主产权的智能终端操作系统。目前,微博上已经曝光了搭载该系统的首款手机谍照,以及其UI界面。\\r\\n\\r\\n 据美国《纽约时报》网站1月17日报道,15日在北京举行的一个发布会上,中国科学院和上海联彤网络通讯技术有限公司发布了自主开发的“中国操作系统”(COS),这款操作系统可应用于智能手机、个人电脑等许多设备。\\r\\n\\r\\n 报道称,中科院称COS系统是维护国家安全的一款战略性产品,在美国曝出监控丑闻和微软宣布将停止对Windows XP提供进一步支持的消息后,中国急需这样一款自主研发的操作系统。\\r\\n\\r\\n 中科院网站上刊登的一篇文章称,COS系统从底层代码到用户界面构建“完全”是独立演进的;目前基于开源的操作系统在安全性上存在很多问题,国外公司主导的操作系统存在“水土不服”的情况,COS的出现将同时解决这两方面的问题。\\r\\n\\r\\n 中科院软件研究所所长李明树15日表示,研究人员打算继续改进COS系统,以便让它赶上甚至超越如今垄断中国市场的其他操作系统。\\r\\n\\r\\n 事实上,COS系统并不是唯一自主开发的国产操作系统。最近,中国科技公司深圳同洲电子股份有限公司宣布开发了拥有独立知识产权的国内首款智能手机操作系统。据同洲电子董事长袁明表示,这款名为960 OS的手机操作系统前后开发了15年。\\r\\n\\r\\n COS系统花了多长时间开发、其研发成本有多高尚未公布。', '2014-01-20 14:03:14', NULL, 9, 2, 30, 2);
INSERT INTO `news` VALUES (646, 'Java资源分享公众号开张了', '微信公众号搜索 Java资源分享,获取Java课件。', '2021-07-16 14:29:15', NULL, 33, 2, 30, 2);
INSERT INTO `news` VALUES (647, '抖音带货', '抖音之所以会火,是因为它强大的传播力和带货能力。而这两点,是由抖音自身的平台基因,和用户上抖音时的状态决定的。\\r\\n\\r\\n当用户进入其它平台时,目的往往是“看资讯”、“做任务”;而抖音不同,它的底层逻辑,就是给用户“杀时间”。\\r\\n\\r\\n如果你问一个经常刷抖音的人:“你为什么看这个?”\\r\\n\\r\\n他十有八九会回答你:好玩or搞笑or有漂亮的小姐姐小哥哥or新鲜……\\r\\n\\r\\n这一切,都是杀时间的重要元素。\\r\\n\\r\\n这也决定了用户上抖音的状态,是放松的,随机的,无意识的。这种状态下,非常容易接收到广告主希望植入给他们的信息。', '2021-07-17 15:10:52', NULL, 2, 2, 17, 2);
-- ----------------------------
-- Table structure for newstype
-- ----------------------------
DROP TABLE IF EXISTS `newstype`;
CREATE TABLE `newstype` (
`newsTypeID` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`newsTypeID`) USING BTREE,
UNIQUE INDEX `NewsType_name`(`name`) USING BTREE,
INDEX `newsTypeID`(`newsTypeID`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 33 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of newstype
-- ----------------------------
INSERT INTO `newstype` VALUES (32, '军事频道');
INSERT INTO `newstype` VALUES (17, '商业频道');
INSERT INTO `newstype` VALUES (19, '学生频道');
INSERT INTO `newstype` VALUES (30, '科技频道');
-- ----------------------------
-- Table structure for operator
-- ----------------------------
DROP TABLE IF EXISTS `operator`;
CREATE TABLE `operator` (
`operatorID` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`account` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '登录时候用{3,16}',
`password` varchar(18) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '{6,18}位',
`type` bigint(20) NOT NULL COMMENT '普通用户、管理员、系统管理员',
`email` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`gender` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '男或者女',
`photo` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '保存头像文件的相对路径',
PRIMARY KEY (`operatorID`) USING BTREE,
UNIQUE INDEX `Operator_account`(`account`) USING BTREE,
INDEX `operatorID`(`operatorID`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for operatortype
-- ----------------------------
DROP TABLE IF EXISTS `operatortype`;
CREATE TABLE `operatortype` (
`operatorTypeID` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`operatorTypeID`) USING BTREE,
UNIQUE INDEX `OperatorType_name`(`name`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of operatortype
-- ----------------------------
INSERT INTO `operatortype` VALUES (2, '管理员');
INSERT INTO `operatortype` VALUES (1, '系统管理员');
-- ----------------------------
-- Table structure for permission
-- ----------------------------
DROP TABLE IF EXISTS `permission`;
CREATE TABLE `permission` (
`permissionID` bigint(20) NOT NULL AUTO_INCREMENT,
`operator` bigint(20) NOT NULL COMMENT '登录时候用{3,16}',
`newstype` bigint(20) NOT NULL COMMENT '一个管理员可以分配多个类型的新闻,管理员只能发布自己有权限的类型的新闻。',
PRIMARY KEY (`permissionID`) USING BTREE,
INDEX `permission_operator`(`operator`) USING BTREE,
INDEX `permission_newsType`(`newstype`) USING BTREE,
CONSTRAINT `permission_newsType` FOREIGN KEY (`newstype`) REFERENCES `newstype` (`newstypeid`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `permission_operator` FOREIGN KEY (`operator`) REFERENCES `operator` (`operatorid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 45 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of permission
-- ----------------------------
INSERT INTO `permission` VALUES (39, 3, 32);
INSERT INTO `permission` VALUES (40, 3, 17);
INSERT INTO `permission` VALUES (42, 2, 30);
INSERT INTO `permission` VALUES (43, 2, 19);
INSERT INTO `permission` VALUES (44, 2, 17);
SET FOREIGN_KEY_CHECKS = 1;
二、系统展示
1.用户-浏览首页
2.用户-查看新闻明细
3.超级管理员-登录页面
4.超级管理员-主页面
5.超级管理员-用户管理
6.超级管理员-用户类型管理
7.超级管理员-新闻类型管理
8.超级管理员-权限分配
9.管理员-主页面
10.管理员-新增新闻
11.管理员-详细信息
12.管理员-编辑新闻
三、部分代码
AdminLogin
package com.cqut.recruitPortal.servlet;
import com.cqut.recruitPortal.entity.Operator;
import com.cqut.recruitPortal.service.OperatorService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
* 项目名称:recruitPortal
* 类名称:AdminLogin
* 类描述:该类负责处理 用户登录 ,它是一个Serlvet,为什么 ?英文它继承至 HttpServlet,要写一个serlvet 程序,
* 必须实现 doGet 和 doPost 方法。这两个方法是用来处理客户端发送的http请求,分别处理get请求和post请求
* 修改备注:
*
* @version 1.0
* Copyright (c) 2014 ChongQing University Of Technology
*/
public class AdminLogin extends HttpServlet {
private static final long serialVersionUID = 1L;
OperatorService service = new OperatorService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//为了方便我们统一将页面的get请求交给doPost方法来处理
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//通过HttpServletRequest 可以得到用户传递过来的信息
//得到 登录帐号
String account = request.getParameter("account");
//得到登录密码
String password = request.getParameter("password");
//调用OperatorService 来处理登录
List<Object> result = service.login(account, password);
boolean accountIsOk = Boolean.parseBoolean(result.get(0).toString());
boolean passwordIsOk = Boolean.parseBoolean(result.get(1).toString());
String accountMessage = "";
String passwordMessage = "";
if (!accountIsOk) {
accountMessage = "该帐号不存在";
}
if (!passwordIsOk) {
passwordMessage = "密码错误";
}
System.out.println(accountIsOk + "," + passwordIsOk);
//登录成功
if (accountIsOk && passwordIsOk) {
//把登录成功的用户信息存入Session里面。方便以后的调用
request.getSession().setAttribute("loginOperator", (Operator) result.get(2));
//如果登录成功就去跳转到 /admin/AdminServlet (只是一个Serlvet 在web.xml里面经行了配置的)
//跳转到登录界面。为了避免 F5 刷新页面提交表单 我们用 response对象的 sendRedirect方法跳转页面
response.sendRedirect("/AdminServlet");
}
//登录失败 ,还是跳转到登录界面
else {
request.setAttribute("account", account);
request.setAttribute("accountMessage", accountMessage);
request.setAttribute("password", password);
request.setAttribute("passwordMessage", passwordMessage);
request.getServletContext().getRequestDispatcher("/admin/login.jsp").forward(request, response);
}
}
}
NewsAdd
package com.cqut.recruitPortal.servlet;
import com.cqut.recruitPortal.entity.Operator;
import com.cqut.recruitPortal.service.NewsService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.util.Date;
/**
* Servlet implementation class NewsAdd
*/
public class NewsAdd extends HttpServlet {
private static final long serialVersionUID = 1L;
NewsService service = new NewsService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
boolean isOK = true;
String title = request.getParameter("title");
String titleMessage = "";
if (title == null || title.equals("")) {
isOK = false;
titleMessage = "标题不能为空";
}
String content = request.getParameter("content");
String contentMessage = "";
if (content == null || content.equals("")) {
isOK = false;
contentMessage = "内容不能为空";
} else {
}
String deadLine = request.getParameter("deadLine");
String deadLineMessage = "";
String type = request.getParameter("type");
String typeMessage = "";
if (type == null || type.equals("")) {
typeMessage = "请选择";
}
Long operatorID = ((Operator) request.getSession().getAttribute("loginOperator")).getOperatorID();
Date publishTime = new Date();
Date deadLineTime = null;
if (deadLine != null && !deadLine.equals("")) {
try {
deadLineTime = SysUtil.praseDate(deadLine);
if (deadLineTime.getTime() < publishTime.getTime()) {
isOK = false;
deadLineMessage = "截至时间不能小于当前时间";
}
} catch (ParseException e) {
isOK = false;
deadLineMessage = "截至时间格式不正确,应为:2014-01-14 22:51:10";
e.printStackTrace();
}
}
String addMessage = "";
if (isOK) {
String sql = "insert into news(`title`,`content`,`type`,`publishTime`,`deadLine`,`count`,`operator`,`status`) values(?,?,?,?,?,?,?,?)";
Object objs[] = {title, content, Long.parseLong(type), publishTime, deadLineTime, 0, operatorID, 1};
int updateCount = service.cd.executeUpdate(sql, objs);
if (updateCount != 1) {
addMessage = "新增失败";
} else {
request.getServletContext().getRequestDispatcher("/admin/NewsServlet").forward(request, response);
return;
}
}
request.setAttribute("titleMessage", titleMessage);
request.setAttribute("contentMessage", contentMessage);
request.setAttribute("deadLineMessage", deadLineMessage);
request.setAttribute("typeMessage", typeMessage);
request.setAttribute("addMessage", addMessage);
request.setAttribute("title", title);
request.setAttribute("content", content);
request.setAttribute("deadLine", deadLine);
//request.setAttribute("title", title);
String phtml = service.createOperationPermissionHtml(type, operatorID);
request.setAttribute("phtml", phtml);
request.getServletContext().getRequestDispatcher("/admin/newsAdd.jsp").forward(request, response);
}
}
NewsCanclePublish
package com.cqut.recruitPortal.servlet;
import com.cqut.recruitPortal.service.NewsService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Servlet implementation class NewsCanclePublish
*/
public class NewsCanclePublish extends HttpServlet {
private static final long serialVersionUID = 1L;
NewsService service = new NewsService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String newsID = request.getParameter("newsID");
//更新状态为3
String sql = "update news set status=3 where newsID=?";
service.cd.executeUpdate(sql, new Object[]{Long.parseLong(newsID)});
request.getServletContext().getRequestDispatcher("/admin/NewsServlet").forward(request, response);
}
}
NewsDelete
package com.cqut.recruitPortal.servlet;
import com.cqut.recruitPortal.service.NewsService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Servlet implementation class NewsDelete
*/
public class NewsDelete extends HttpServlet {
private static final long serialVersionUID = 1L;
NewsService service = new NewsService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String newsID = request.getParameter("newsID");
//删除
String sql = "delete from news where newsID=?";
service.cd.executeUpdate(sql, new Object[]{Long.parseLong(newsID)});
request.getServletContext().getRequestDispatcher("/admin/NewsServlet").forward(request, response);
}
}
NewsDetail
package com.cqut.recruitPortal.servlet;
import com.cqut.recruitPortal.service.NewsService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class NewsDetail extends HttpServlet {
private static final long serialVersionUID = 1L;
NewsService service = new NewsService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String newsID = request.getParameter("newsID");
//查询给定ID的 新闻
String sql = "select n.newsID AS newsID, " +
"n.title AS title, " +
"n.publishTime AS publishTime, " +
"n.deadLine AS deadLine, " +
"n.count AS count, " +
"n.operator AS operator, " +
"n.type AS type, " +
"nt.`name` AS typeName, " +
"o.`name` AS operatorName, " +
"n.`content` AS content, " +
"n.`status` AS status " +
"from news n LEFT JOIN newstype AS nt ON n.type = nt.newsTypeID " +
"LEFT JOIN operator AS o ON o.operatorID = n.operator where newsID=?";
List<Map<String, Object>> listMap = service.cd.executeQuery(sql, new Object[]{Long.parseLong(newsID)});
if (listMap.size() == 1) {
Map<String, Object> news = listMap.get(0);
if (news.get("publishTime") != null) {
news.put("publishTime", SysUtil.formatDate((Date) news.get("publishTime")));
}
if (news.get("deadLine") != null) {
news.put("deadLine", SysUtil.formatDate((Date) news.get("deadLine")));
}
//为了在jsp页面上有格式我们需要做一定的处理
String content = news.get("content").toString();
content = content.replaceAll(" ", " ");
content = content.replaceAll("\\t", " ");
content = content.replaceAll("\\r\\n", "<br/>");
news.put("content", content);
request.setAttribute("news", news);
}
request.getServletContext().getRequestDispatcher("/admin/newsDetail.jsp").forward(request, response);
}
}
NewsEdit
package com.cqut.recruitPortal.servlet;
import com.cqut.recruitPortal.entity.Operator;
import com.cqut.recruitPortal.service.NewsService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* Servlet implementation class NewsEdit
*/
public class NewsEdit extends HttpServlet {
private static final long serialVersionUID = 1L;
NewsService service = new NewsService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
boolean isOK = true;
String newsID = request.getParameter("newsID");
String title = request.getParameter("title");
String titleMessage = "";
if (title == null || title.equals("")) {
isOK = false;
titleMessage = "标题不能为空";
}
String content = request.getParameter("content");
String contentMessage = "";
if (content == null || content.equals("")) {
isOK = false;
contentMessage = "内容不能为空";
}
String type = request.getParameter("type");
String typeMessage = "";
if (type == null || type.equals("")) {
typeMessage = "请选择";
}
Long operatorID = ((Operator) request.getSession().getAttribute("loginOperator")).getOperatorID();
Date publishTime = new Date();
Date deadLineTime = null;
String deadLine = request.getParameter("deadLine");
String deadLineMessage = "";
if (deadLine != null && !deadLine.equals("")) {
try {
deadLineTime = SysUtil.praseDate(deadLine);
if (deadLineTime.getTime() < publishTime.getTime()) {
isOK = false;
deadLineMessage = "截至时间不能小于当前时间";
}
} catch (ParseException e) {
isOK = false;
deadLineMessage = "截至时间格式不正确,应为:2014-01-14 22:51:10";
e.printStackTrace();
}
}
String addMessage = "";
if (isOK) {
String updateSql = "update news set `title`=?, `content`=?, `type`=?, `deadLine`=? where newsID=?";
Object objs[] = {title, content, Long.parseLong(type), deadLineTime, Long.parseLong(newsID)};
int updateCount = service.cd.executeUpdate(updateSql, objs);
if (updateCount != 1) {
addMessage = "编辑失败";
} else {
request.getServletContext().getRequestDispatcher("/admin/NewsServlet").forward(request, response);
return;
}
}
request.setAttribute("titleMessage", titleMessage);
request.setAttribute("contentMessage", contentMessage);
request.setAttribute("deadLineMessage", deadLineMessage);
request.setAttribute("typeMessage", typeMessage);
request.setAttribute("addMessage", addMessage);
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", title);
map.put("content", content);
map.put("deadLine", deadLine);
map.put("newsID", newsID);
request.setAttribute("news", map);
//request.setAttribute("title", title);
String phtml = service.createOperationPermissionHtml(type, operatorID);
request.setAttribute("phtml", phtml);
request.getServletContext().getRequestDispatcher("/admin/newsEdit.jsp").forward(request, response);
}
}
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>后台管理</title>
<style type="text/css">
body {
margin: 0;
}
/*下面的 css 用于框架的布局*/
.content {
position: absolute;
top: 87px;
left: 0;
bottom: 0;
right: 0;
}
.left {
position: absolute;
left: 5px;
width: 190px;
bottom: 5px;
top: 5px;
overflow-x: hidden;
overflow-y: auto;
border: 1px solid #e5e5e5;
}
.right {
position: absolute;
left: 202px;
top: 5px;
right: 5px;
bottom: 5px;
border: 1px solid #e5e5e5;
}
/*设置Iframe的样式*/
.innerFrame {
border: 0;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<!-- ${loginOperator.name} 这样的代码叫做EL表达式 -->
<div>
<table width="100%" bgcolor="#383838">
<tr>
<td width="80%">
<img alt="" src="image/ll.png">
</td>
<td width="20%" valign="middle">
<div style="height: 32px;line-height: 32px; min-width: 50px;float: left;">
<font color="#ffffff">欢迎 ${loginOperator.name}          </font>
</div>
<a href="admin/AdminLogout"><img alt="" src="image/exit.png"></a>
</td>
</tr>
</table>
<div class="content">
<div class="left">
<!-- 系统管理员 -->
<c:if test="${loginOperator.type==1}">
<p> <a href="admin/OperatorServlet" target="innerFrame">用户管理</a></p>
<p> <a href="admin/OperatorTypeServlet" target="innerFrame">用户类型管理</a></p>
<p> <a href="admin/NewsTypeServlet" target="innerFrame">新闻类型管理</a></p>
<p> <a href="admin/PermissionServlet" target="innerFrame">权限分配</a></p>
</c:if>
<!-- 管理员 -->
<c:if test="${loginOperator.type==2}">
<p> <a href="admin/NewsServlet" target="innerFrame">新闻管理</a></p>
</c:if>
</div>
<div class="right">
<iframe src="admin/welcome.jsp" class="innerFrame" name="innerFrame" frameborder="0" scrolling="auto"
style="margin: 0px auto; height: 100%; -ms-overflow-x: hidden;"></iframe>
</div>
</div>
</div>
</body>
</html>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录</title>
<link href="css/page.css" rel="stylesheet"/>
<link href="css/common.css" rel="stylesheet"/>
<style type="text/css">
/*为了降低初学的难度,我尽量的不用 css,javascript 。但是 我也会引入一些(毕竟做web,写网站离不开这些东西),在引入的地点我都有详细的说明*/
.loginform {
/*这是css。这段代码的作用是让 class属性为 loginform 的 元素水平垂直居中。很经典的代码 */
position: absolute;
width: 400px;
height: 250px;
top: 50%;
left: 50%;
margin-top: -125px;
margin-left: -200px;
/*设置边框*/
border: 1px solid #8a8a8a;
}
/*给页面设置背景颜色*/
body {
background-color: #e5e5e5;
}
</style>
</head>
<body>
<a href="#">前台首页</a>
<hr/>
<div class="loginform">
<form action="admin/AdminLogin" method="post">
<br>
<p class="logintitle"> 管理员登录</font></p>
<br>
<label for="accountField">登录帐号:</label> <input type="text" name="account"
value="${account}" id="accountField"/>
<font color="red">${accountMessage}</font><br><br>
<label for="passwordField">登录密码:</label> <input type="password" name="password"
id="passwordField"/> <font
color="red">${passwordMessage}</font><br><br>
<input type="submit"
value="登录"/>
</form>
</div>
</body>
</html>
newsList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新闻列表</title>
<link href="css/page.css" rel="stylesheet"/>
<link href="css/common.css" rel="stylesheet"/>
</head>
<body>
<table width="100%">
<tr>
<td width="50%" align="left" valign="middle">
当前位置:<a href="admin/NewsServlet">新闻管理</a>
</td>
<td align="right">
<a href="admin/NewsInitAdd">新增</a>
</td>
</tr>
</table>
<hr>
<form action="admin/NewsServlet" method="post">
<p>
新闻标题:<input type="text" name="querytitle" value="${querytitle}"/> <input type="submit" value="查询"/>
</p>
</form>
<table width="100%" class="dataTable">
<thead>
<tr class="title">
<td>新闻标题</td>
<td width="100">类型</td>
<td width="100" align="center">发布时间</td>
<td width="100" align="center">截至时间</td>
<td width="90" align="center">发布人</td>
<td width="90" align="right">浏览次数</td>
<td width="90" align="center">状态</td>
<td width="270">操作</td>
</tr>
</thead>
<tbody>
<c:forEach items="${list}" var="item">
<tr>
<td>${item.title}</td>
<td>${item.typeName}</td>
<td align="center">${item.publishTime}</td>
<td align="center">${item.deadLine }</td>
<td align="center">${item.operatorName}</td>
<td align="right">${item.count}</td>
<td align="center">${item.status}</td>
<td>${item.operate}</td>
</tr>
</c:forEach>
</tbody>
</table>
<c:if test="${not empty paginationHtml}">
<div class="page">${paginationHtml}</div>
</c:if>
</body>
</html>
四、其他
1.其他系统实现
1.JavaWeb系统系列实现
Java+SSH+Bootstrap实现在线考试系统(含论文)
Java+Springboot+Mybatis+Bootstrap+Maven实现网上商城系统
2.JavaSwing系统系列实现
2.获取源码
点击以下链接获取源码,数据库文件在sql文件下面。
J 以上是关于IDEA+Java+Servlet+JSP+Mysql实现新闻发布系统的主要内容,如果未能解决你的问题,请参考以下文章 IDEA+Java+Servlet+JSP+Mysql实现新闻发布系统 IDEA+Java+Servlet+JSP+Mysql实现Web图书管理系统 IDEA+Java+Servlet+JSP+Bootstrap+Mysql实现Web学生成绩管理系统 IDEA+Java+Servlet+JSP+Bootstrap+Mysql实现Web学生成绩管理系统