基于javaweb的新闻发布系统(java+springboot+ssm+mysql)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb+springboot的新闻发布管理系统(java+Springboot+ssm+mysql+maven)

一、项目简述

功能: 区分为管理员用户和普通用户,管理员用户能删除评论, 调整新闻显示/隐藏,修改新闻,删除普通用户,普通用户能 登陆浏览,新用户可以注册基本功能实现了新闻增加,新 闻删除,新闻修改,新闻搜索其他功能:用户评论,管理 员删除差评,新闻分类,前台分类显示新闻,用户注册, 登录,个人信息修改等等功能。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP + SpringBoot + Servlert + htm l+ css + JavaScript + ECharts+ JQuery + Maven 等等

卡片控制层:

@Controller

public class CodeController {

@Autowired

private HttpServletRequest request;

public static final int WIDTH = 120;// 生成的图片的宽度

public static final int HEIGHT = 30;// 生成的图片的高度

@RequestMapping(“/CodeServlet”)

@ResponseBody

public void listforadmin(HttpServletResponse response) throws IOException {

String createTypeFlag = request.getParameter(“createTypeFlag”);// 接收客户端传递的createTypeFlag标识

// 1.在内存中创建一张图片

BufferedImage bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);

// 2.得到图片

Graphics g = bi.getGraphics();

// 3.设置图片的背影色

setBackGround(g);

// 4.设置图片的边框

setBorder(g);

// 5.在图片上画干扰线

drawRandomLine(g);

// 6.写在图片上随机数

// String random = drawRandomNum((Graphics2D) g,“ch”);//生成中文验证码图片

// String random = drawRandomNum((Graphics2D) g,“nl”);//生成数字和字母组合的验证码图片

// String random = drawRandomNum((Graphics2D) g,“n”);//生成纯数字的验证码图片

// String random = drawRandomNum((Graphics2D) g,“l”);//生成纯字母的验证码图片

String random = drawRandomNum((Graphics2D) g, createTypeFlag);// 根据客户端传递的createTypeFlag标识生成验证码图片

// 7.将随机数存在session中

request.getSession().setAttribute(“checkcode”, random);

// 8.设置响应头通知浏览器以图片的形式打开

response.setContentType(“image/jpeg”);// 等同于response.setHeader(“Content-Type”,

// “image/jpeg”);

// 9.设置响应头控制浏览器不要缓存

response.setDateHeader(“expries”, -1);

response.setHeader(“Cache-Control”, “no-cache”);

response.setHeader(“Pragma”, “no-cache”);

// 10.将图片写给浏览器

ImageIO.write(bi, “jpg”, response.getOutputStream());

/**

  • 设置图片的背景色

  • @param g

*/

private void setBackGround(Graphics g) {

// 设置颜色

g.setColor(Color.WHITE);

// 填充区域

g.fillRect(0, 0, WIDTH, HEIGHT);

/**

  • 设置图片的边框

  • @param g

*/

private void setBorder(Graphics g) {

// 设置边框颜色

g.setColor(Color.BLUE);

// 边框区域

g.drawRect(1, 1, WIDTH - 2, HEIGHT - 2);

/**

  • 在图片上画随机线条

  • @param g

*/

private void drawRandomLine(Graphics g) {

// 设置颜色

g.setColor(Color.GREEN);

// 设置线条个数并画线

for (int i = 0; i < 5; i++) {

int x1 = new Random().nextInt(WIDTH);

int y1 = new Random().nextInt(HEIGHT);

int x2 = new Random().nextInt(WIDTH);

int y2 = new Random().nextInt(HEIGHT);

g.drawLine(x1, y1, x2, y2);

/**

  • 画随机字符

  • @param g

  • @param createTypeFlag

  • @return String… createTypeFlag是可变参数,

  •     Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:
    
  •     可变参数必须位于最后一项
    

*/

private String drawRandomNum(Graphics2D g, String… createTypeFlag) {

// 设置颜色

g.setColor(Color.RED);

// 设置字体

g.setFont(new Font(“宋体”, Font.BOLD, 20));

// 常用的中国汉字

String baseChineseChar = “\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a\u7740\u4e2a\u5730\u5230\u5927\u91cc\u8bf4\u5c31\u53bb\u5b50\u5f97\u4e5f\u548c\u90a3\u8981\u4e0b\u770b\u5929\u65f6\u8fc7\u51fa\u5c0f\u4e48\u8d77\u4f60\u90fd\u628a\u597d\u8fd8\u591a\u6ca1\u4e3a\u53c8\u53ef\u5bb6\u5b66\u53ea\u4ee5\u4e3b\u4f1a\u6837\u5e74\u60f3\u751f\u540c\u8001\u4e2d\u5341\u4ece\u81ea\u9762\u524d\u5934\u9053\u5b83\u540e\u7136\u8d70\u5f88\u50cf\u89c1\u4e24\u7528\u5979\u56fd\u52a8\u8fdb\u6210\u56de\u4ec0\u8fb9\u4f5c\u5bf9\u5f00\u800c\u5df1\u4e9b\u73b0\u5c71\u6c11\u5019\u7ecf\u53d1\u5de5\u5411\u4e8b\u547d\u7ed9\u957f\u6c34\u51e0\u4e49\u4e09\u58f0\u4e8e\u9ad8\u624b\u77e5\u7406\u773c\u5fd7\u70b9\u5fc3\u6218\u4e8c\u95ee\u4f46\u8eab\u65b9\u5b9e\u5403\u505a\u53eb\u5f53\u4f4f\u542c\u9769\u6253\u5462\u771f\u5168\u624d\u56db\u5df2\u6240\u654c\u4e4b\u6700\u5149\u4ea7\u60c5\u8def\u5206\u603b\u6761\u767d\u8bdd\u4e1c\u5e2d\u6b21\u4eb2\u5982\u88ab\u82b1\u53e3\u653e\u513f\u5e38\u6c14\u4e94\u7b2c\u4f7f\u5199\u519b\u5427\u6587\u8fd0\u518d\u679c\u600e\u5b9a\u8bb8\u5feb\u660e\u884c\u56e0\u522b\u98de\u5916\u6811\u7269\u6d3b\u90e8\u95e8\u65e0\u5f80\u8239\u671b\u65b0\u5e26\u961f\u5148\u529b\u5b8c\u5374\u7ad9\u4ee3\u5458\u673a\u66f4\u4e5d\u60a8\u6bcf\u98ce\u7ea7\u8ddf\u7b11\u554a\u5b69\u4e07\u5c11\u76f4\u610f\u591c\u6bd4\u9636\u8fde\u8f66\u91cd\u4fbf\u6597\u9a6c\u54ea\u5316\u592a\u6307\u53d8\u793e\u4f3c\u58eb\u8005\u5e72\u77f3\u6ee1\u65e5\u51b3\u767e\u539f\u62ff\u7fa4\u7a76\u5404\u516d\u672c\u601d\u89e3\u7acb\u6cb3\u6751\u516b\u96be\u65e9\u8bba\u5417\u6839\u5171\u8ba9\u76f8\u7814\u4eca\u5176\u4e66\u5750\u63a5\u5e94\u5173\u4fe1\u89c9\u6b65\u53cd\u5904\u8bb0\u5c06\u5343\u627e\u4e89\u9886\u6216\u5e08\u7ed3\u5757\u8dd1\u8c01\u8349\u8d8a\u5b57\u52a0\u811a\u7d27\u7231\u7b49\u4e60\u9635\u6015\u6708\u9752\u534a\u706b\u6cd5\u9898\u5efa\u8d76\u4f4d\u5531\u6d77\u4e03\u5973\u4efb\u4ef6\u611f\u51c6\u5f20\u56e2\u5c4b\u79bb\u8272\u8138\u7247\u79d1\u5012\u775b\u5229\u4e16\u521a\u4e14\u7531\u9001\u5207\u661f\u5bfc\u665a\u8868\u591f\u6574\u8ba4\u54cd\u96ea\u6d41\u672a\u573a\u8be5\u5e76\u5e95\u6df1\u523b\u5e73\u4f1f\u5fd9\u63d0\u786e\u8fd1\u4eae\u8f7b\u8bb2\u519c\u53e4\u9ed1\u544a\u754c\u62c9\u540d\u5440\u571f\u6e05\u9633\u7167\u529e\u53f2\u6539\u5386\u8f6c\u753b\u9020\u5634\u6b64\u6cbb\u5317\u5fc5\u670d\u96e8\u7a7f\u5185\u8bc6\u9a8c\u4f20\u4e1a\u83dc\u722c\u7761\u5174\u5f62\u91cf\u54b1\u89c2\u82e6\u4f53\u4f17\u901a\u51b2\u5408\u7834\u53cb\u5ea6\u672f\u996d\u516c\u65c1\u623f\u6781\u5357\u67aa\u8bfb\u6c99\u5c81\u7ebf\u91ce\u575a\u7a7a\u6536\u7b97\u81f3\u653f\u57ce\u52b3\u843d\u94b1\u7279\u56f4\u5f1f\u80dc\u6559\u70ed\u5c55\u5305\u6b4c\u7c7b\u6e10\u5f3a\u6570\u4e61\u547c\u6027\u97f3\u7b54\u54e5\u9645\u65e7\u795e\u5ea7\u7ae0\u5e2e\u5566\u53d7\u7cfb\u4ee4\u8df3\u975e\u4f55\u725b\u53d6\u5165\u5cb8\u6562\u6389\u5ffd\u79cd\u88c5\u9876\u6025\u6797\u505c\u606f\u53e5\u533a\u8863\u822c\u62a5\u53f6\u538b\u6162\u53d4\u80cc\u7ec6”;

// 数字和字母的组合

String baseNumLetter = “0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ”;

// 纯数字

String baseNum = “0123456789”;

// 纯字母

String baseLetter = “ABCDEFGHJKLMNOPQRSTUVWXYZ”;

// createTypeFlag[0]==null表示没有传递参数

if (createTypeFlag.length > 0 && null != createTypeFlag[0]) {

if (createTypeFlag[0].equals(“ch”)) {

// 截取汉字

return createRandomChar(g, baseChineseChar);

} else if (createTypeFlag[0].equals(“nl”)) {

// 截取数字和字母的组合

return createRandomChar(g, baseNumLetter);

} else if (createTypeFlag[0].equals(“n”)) {

// 截取数字

return createRandomChar(g, baseNum);

} else if (createTypeFlag[0].equals(“l”)) {

// 截取字母

return createRandomChar(g, baseLetter);

} else {

// 默认截取数字和字母的组合

return createRandomChar(g, baseNumLetter);

return “”;

/**

  • 创建随机字符

  • @param g

  • @param baseChar

  • @return 随机字符

*/

private String createRandomChar(Graphics2D g, String baseChar) {

StringBuffer sb = new StringBuffer();

int x = 5;

String ch = “”;

// 控制字数

for (int i = 0; i < 4; i++) {

// 设置字体旋转角度

int degree = new Random().nextInt() % 30;

ch = baseChar.charAt(new Random().nextInt(baseChar.length())) + “”;

sb.append(ch);

// 正向角度

g.rotate(degree * Math.PI / 180, x, 20);

g.drawString(ch, x, 20);

// 反向角度

g.rotate(-degree * Math.PI / 180, x, 20);

x += 30;

return sb.toString();

新闻信息控制层:

@Controller

@RequestMapping(“NewsServlet”)

public class NewsController {

@Autowired

private HttpServletRequest request;

private NewsDao newsDao = new NewsDao();

private CategoryDao categoryDao = new CategoryDao();

private CommentsDao commentsDao = new CommentsDao();

@RequestMapping(“/publish”)

public String publish(){

String title = request.getParameter(“title”);

String content = request.getParameter(“content”);

String categoryid = request.getParameter(“categoryid”);

Users users = (Users) request.getSession().getAttribute(“loginUsers”);

Integer usersId = users.getId();

Integer deptid = users.getDeptid();

News news = new News();

news.setCategoryid(Integer.parseInt(categoryid));

news.setClicks(0);

news.setContent(content);

news.setPbdate(new Date());

news.setPbdeptid(deptid);

news.setPublisher(usersId);

news.setCategoryid(Integer.parseInt(categoryid));

news.setTitle(title);

newsDao.save(news);

return “redirect:listforadmin”;

@RequestMapping(“/listforadmin”)

public String listforadmin(){

List newsList = newsDao.queryAll();

request.setAttribute(“list”, newsList);

return “listnews”;

@RequestMapping(“/toaddnews”)

public String toaddnews(){

List newsList = newsDao.queryAll();

request.setAttribute(“list”, newsList);

List categoryList = categoryDao.queryAll();

request.setAttribute(“categoryList”, categoryList);

return “addnews”;

@RequestMapping(“/edit”)

public String edit(){

String title = request.getParameter(“title”);

String content = request.getParameter(“content”);

String categoryid = request.getParameter(“categoryid”);

News news = new News();

news.setCategoryid(Integer.parseInt(categoryid));

news.setContent(content);

news.setPbdate(new Date());

news.setId(Integer.parseInt(request.getParameter(“id”)));

news.setTitle(title);

newsDao.edit(news);

return “redirect:listforadmin”;

@RequestMapping(“/del”)

public String del(){

newsDao.deleteById(Integer.parseInt(request.getParameter(“id”)));

List newsList = newsDao.queryAll();

request.setAttribute(“list”, newsList);

return “listnews”;

@RequestMapping(“/toeditnews”)

public String toeditnews(){

News news = newsDao.queryByid(Integer.parseInt(request.getParameter(“id”)));

request.setAttribute(“v”, news);

List categoryList = categoryDao.queryAll();

request.setAttribute(“categoryList”, categoryList);

return “editnews”;

@RequestMapping(“/queryByType”)

public String queryByType(){

String categoryid = request.getParameter(“categoryid”);

List newsList = newsDao.queryAll();

request.setAttribute(“list”, newsList.stream()

.filter(x -> x.getCategoryid().equals(Integer.parseInt(categoryid))).collect(Collectors.toList()));

List categoryList = categoryDao.queryAll();

request.setAttribute(“categoryList”,

categoryList.stream().filter(x -> x.getState().equals(“1”)).collect(Collectors.toList()));

return “typenews”;

@RequestMapping(“/detail”)

public String detail(){

//测试

String id = request.getParameter(“id”);

if(id.contains(“.jsp”))

id= request.getParameter(“id”).replaceAll(“.jsp”,“”);

News news = newsDao.queryByid(Integer.parseInt(id));

news.setClicks(news.getClicks() + 1);

newsDao.setClicksIncrement(news);

NewsDetail detail = new NewsDetail();

detail.setNews(news);

Category category = categoryDao.queryById(news.getCategoryid());

detail.setCategory(category);

String content = news.getContent();

int length = content.length();

length = length / 60;

length = length * 27 + 10;

request.setAttribute(“length”, length);

request.setAttribute(“v”, detail);

List categoryList = categoryDao.queryAll();

List commentsList = commentsDao.getByNewsId(news.getId());

request.setAttribute(“commentsList”, commentsList);

request.setAttribute(“contentstr”, content);

request.setAttribute(“categoryList”,

categoryList.stream().filter(x -> x.getState().equals(“1”)).collect(Collectors.toList()));

return “detailnews”;

@RequestMapping(“/search”)

public String search(){

String search = request.getParameter(“search”);

request.setAttribute(“searchStr”, search);

List newsList = newsDao.queryAll();

newsList=newsList.stream().filter(x -> x.getTitle().contains(search)).collect(Collectors.toList());

newsList= newsList.stream().map(x->{

String title = x.getTitle();

/* String[] split = title.split(search);

*/

/*if(split.length>=2){

for(int i=0;i<split.length-1;i++){

title=split[i]+“”+search+“”+split[i+1];

}else{

title=split[0]+“”+search+“”;

}*/

title=title.replace(search, “”+search+“”);

System.out.println(title);

x.setTitle(title);

return x;

}).collect(Collectors.toList());

request.setAttribute(“list”,newsList

);

List categoryList = categoryDao.queryAll();

request.setAttribute(“categoryList”,

categoryList.stream().filter(x -> x.getState().equals(“1”)).collect(Collectors.toList()));

return “searchnews”;

用户信息控制层:

@Controller

@RequestMapping(“UsersServlet”)

public class UsersController {

private UsersDao usersDao = new UsersDao();

@Autowired

private HttpServletRequest request;

@RequestMapping(“/loginadmin”)

public String loginadmin() {

String username = request.getParameter(“username”);

String password = request.getParameter(“password”);

Users users = usersDao.login(username, password);

if (users != null) {

request.getSession().setAttribute(“loginUsers”, users);

return “admin_index”;

} else {

request.setAttribute(“msg”, “登录失败,账号密码不匹配”);

return “admin_login”;

@RequestMapping(“/userlogin”)

public String userlogin() {

String userName = request.getParameter(“username”);

String password = request.getParameter(“password”);

String clientCheckcode = request.getParameter(“validateCode”);

String serverCheckcode = (String) request.getSession().getAttribute(“checkcode”);

if (clientCheckcode.equals(serverCheckcode)) {

// 2. 去访问dao , 看看是否满足登录。

Users Users = usersDao.userlogin(userName, password);

// 3. 针对dao的返回结果,做出响应

if (Users != null) {

request.getSession().setAttribute(“usersLogin”, Users);

CategoryDao categoryDao = new CategoryDao();

List categoryList = categoryDao.queryAll();

request.setAttribute(“categoryList”, categoryList.stream().filter(x -> x.getState().equals(“1”)).collect(Collectors.toList()));

return “index”;

} else {

request.setAttribute(“error”, “用户名或密码错误!”);

return “login”;

} else {

request.setAttribute(“error”, “登录失败,验证码不正确!”);

return “login”;

@RequestMapping(“/userreg”)

public String userreg() {

String username = request.getParameter(“username”);

String password = request.getParameter(“password”);

String account = request.getParameter(“account”);

String email = request.getParameter(“email”);

String password2 = request.getParameter(“password2”);

if (!password.equals(password2)) {

request.setAttribute(“error”, “注册失败,密码与确认密码不一致!”);

return “reg”;

} else {

boolean isSuccess = usersDao.isReg(account);

if (!isSuccess) {

request.setAttribute(“error”, “注册失败,该用户名已存在!”);

return “reg”;

} else {

usersDao.reg(username, account, password, email);

request.setAttribute(“error”, “注册成功!”);

return “reg”;

@RequestMapping(“/listforadmin”)

public String listforadmin() {

List list = usersDao.getUsers();

request.setAttribute(“list”, list);

return “listusers”;

@RequestMapping(“/del”)

public String del(Integer id) {

usersDao.del(id);

List list = usersDao.getUsers();

request.setAttribute(“list”, list);

return “listusers”;


基于javaweb的新闻发布系统(java+springboot+ssm+mysql)相关推荐

  1. Java项目:新闻发布系统(java+Springboot+ssm+mysql+maven)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 功能: 区分为管理员用户和普通用户,管理员用户能删除评论, 调整新闻显示/隐藏,修改新闻,删除普通用户,普通用户能 登陆浏览, ...

  2. 基于javaweb的大学生兼职系统(java+springboot+jsp+mysql)

    基于javaweb的大学生兼职系统(java+springboot+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均 ...

  3. 基于javaweb的在线游戏商城系统(java+springboot+mybatis+mysql+layui+jsp)

    基于javaweb的在线游戏商城系统(java+springboot+mybatis+mysql+layui+jsp) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/ ...

  4. 基于javaweb的兼职平台系统(java+springboot+ssm+html+ajax+mysql)

    基于javaweb的兼职平台系统(java+springboot+ssm+html+ajax+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myecli ...

  5. 基于javaweb的小区物业管理系统(java+springboot+ssm+mysql)

    基于javaweb的小区物业管理系统(java+springboot+ssm+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等 ...

  6. 基于javaweb的仓库管理系统(java+springboot+layui+html+thymeleaf+mysql+实训报告)

    基于javaweb的仓库管理系统(java+springboot+layui+html+thymeleaf+mysql+实训报告) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse ...

  7. 基于javaweb的精美物流管理系统(java+springboot+vue+mysql)

    基于javaweb的精美物流管理系统(java+springboot+vue+mysql) 运行环境 Java≥8.MySQL≥5.7.Node.js≥10 开发工具 后端:eclipse/idea/ ...

  8. 基于javaweb的网上商城系统(java+jsp+servlert+mysql+ajax)

    基于javaweb的网上商城系统(java+jsp+servlert+mysql+ajax) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myec ...

  9. 基于javaweb的课程信息管理系统(java+springboot+freemarker+mysql)

    基于javaweb的课程信息管理系统(java+springboot+freemarker+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclip ...

最新文章

  1. [A Dangerous Maze LightOJ - 1027 ][概率题]
  2. Bluetooth GAP介绍
  3. JZOJ 5396. 【NOIP2017提高A组模拟10.6】Blocks
  4. CodeForces - 343D Water Tree(树链剖分+线段树)
  5. ga 工具箱 matlab,初识遗传算法之MatlabGA工具箱
  6. python使用codecs模块进行文件操作-读写中英文字符
  7. Backbox Linux简介与配置内网IP
  8. java timer.schedule如何控制执行次数_Java 面试——JIT详解
  9. ios查看帧率的软件_iOS显示当前页面帧数
  10. SQL Server 2008 R2的完全卸载
  11. Android 修改屏幕亮度
  12. Speedoffice(word)怎么撤回上一步的操作
  13. 后端开发岗位要求汇总
  14. 80和443端口的区别
  15. Yuga Labs 收购 CryptoPunks 的始末
  16. 在kile上通过串口实现scanf输入和printf打印
  17. Longest Commen Prefix
  18. 通过VBA宏合并Excel工作表
  19. Python Day 1
  20. HTML字体以及图标字体iconfont、Font Awesome的使用

热门文章

  1. 手机浏览器唤起支付宝并打开指定页面
  2. 计算机维修员周记300字,计算机实习周记300字.doc
  3. Android app开发入门复习一(1-2章)
  4. 数据库与Excel报表的动态生成
  5. [Data Structure] 数据结构中各种树
  6. openstack 安装keystone初始化数据库失败
  7. 对企业信息化建设的研究
  8. CAN总线入门(硬件部分)
  9. 网络考试系统存在的问题与对策
  10. Xcode方便开发的插件推荐