1 项目搭建以及环境配置

<font size=4>本项目是一个简单的新闻资讯的发布管理系统,新闻工作人员可以添加新闻,删除,修改新闻。也可以编辑发布新闻。</font>

1.1 新建news_flash项目(web项目结构)maven配置,下图是项目的整体结构。

1.2 领域对象的建立domain

package cn.czg.core.dao;import java.io.Serializable;
import java.util.Date;/*** 新闻领域对象*/
public class News implements Serializable{//新闻idprivate Long id;//新闻题目private String title;//新闻内容private String context;//新闻图片路径private String imgUrl;//新闻录入时间private Date inputDate;//浏览次数(热点新闻)private Integer viewCount;//是否推荐新闻private Boolean isRecommend;//新闻类型private NewsType type;//新闻录入人(自动生成)private User user;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContext() {return context;}public void setContext(String context) {this.context = context;}public String getImgUrl() {return imgUrl;}public void setImgUrl(String imgUrl) {this.imgUrl = imgUrl;}public Date getInputDate() {return inputDate;}public void setInputDate(Date inputDate) {this.inputDate = inputDate;}public Integer getViewCount() {return viewCount;}public void setViewCount(Integer viewCount) {this.viewCount = viewCount;}public Boolean getRecommend() {return isRecommend;}public void setRecommend(Boolean recommend) {isRecommend = recommend;}public NewsType getType() {return type;}public void setType(NewsType type) {this.type = type;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}
}

上述的是News对象,下面以此建立NewsType、以及User对象

package cn.czg.core.dao;import java.io.Serializable;/*** 新闻类型领域对象*/
public class NewsType implements Serializable{/** 新闻类型id*/private Long id;/** 新闻类型名称*/private String name;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
package cn.czg.core.dao;import java.io.Serializable;/*** 用户领域对象*/
public class User implements Serializable {/** 用户id*/private Long id;/** 用户名称*/private String name;/** 用户密码*/private String password;/** 0:代表管理员(管理后台)  1:普通用户(可以留言)*/private Integer type;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getType() {return type;}public void setType(Integer type) {this.type = type;}
}

1.3 根据domain建立数据库mysql

第一张表:t_news,建表语句如下:

CREATE TABLE t_news (
id bigint(20) NOT NULL AUTO_INCREMENT,
title varchar(50) DEFAULT NULL,
context longtext,
imgUrl varchar(255) DEFAULT NULL,
viewCount int(11) DEFAULT NULL,
isRecommend bit(1) DEFAULT NULL,
inputDate datetime DEFAULT NULL,
type_id bigint(20) DEFAULT NULL,
user_id bigint(20) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第二张表:t_newsType,建表语句如下:

CREATE TABLE t_newstype (
id bigint(20) NOT NULL AUTO_INCREMENT,
name varchar(50) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第三张表:t_user,建表语句如下:

CREATE TABLE t_user (
id bigint(20) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
password varchar(255) DEFAULT NULL,
type int(11) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.4 配置数据源,装配bean,根据bean创建dao层

jdbc.properties文件:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///news_flash
jdbc.username=root
jdbc.password=gosaint

applicationContext.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- druid数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="driverClassName" value="${jdbc.driverClassName}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean><context:property-placeholder location="classpath:jdbc.properties"/><bean id="newsDAO" class="cn.czg.core.dao.impl.NewsDAOImpl"><property name="dataSource" ref="dataSource"></property></bean>
</beans>

创建dao以及dao的实现类,这里使用JdbcDaoSupport

package cn.czg.core.dao;import cn.czg.core.domain.News;import java.util.List;/*** 新闻咨询的CRUD接口*/
public interface NewsDAO {void save(News news);void delete(Long id);void update(News news);News query(Long id);List<News> list();
}
package cn.czg.core.dao.impl;import cn.czg.core.dao.NewsDAO;
import cn.czg.core.domain.News;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;/*** 继承JdbcDaoSupport,里面有数据源对象*/
public class NewsDAOImpl extends JdbcDaoSupport implements NewsDAO{/*** 保存一个news对象* @param news*/@Overridepublic void save(News news) {super.getJdbcTemplate().update("insert into t_news(title,context,imgUrl,viewCount,isRecommend,inputDate) values (?,?,?,?,?,?)",news.getTitle(),news.getContext(),news.getImgUrl(),news.getViewCount(),news.getIsRecommend(),news.getInputDate());}@Overridepublic void delete(Long id) {super.getJdbcTemplate().update("DELETE FROM t_news WHERE id",id);}@Overridepublic void update(News news) {super.getJdbcTemplate().update("update t_news set title=?,context=?,imgUrl=?,viewCount=?,isRecommend=?,inputDate=? where id=?",news.getTitle(),news.getContext(),news.getImgUrl(),news.getViewCount(),news.getIsRecommend(),news.getInputDate(),news.getId());}@Overridepublic News query(Long id) {return super.getJdbcTemplate().queryForObject("select * from t_news where id=?", new NewsRowMapper()) ;}@Overridepublic List<News> list() {return super.getJdbcTemplate().query("select * from t_news",new NewsRowMapper());}/*** 使用静态内部类封装了结果集对象*/public static class NewsRowMapper implements RowMapper<News>{@Overridepublic News mapRow(ResultSet resultSet, int i) throws SQLException {News news = new News();news.setId(resultSet.getLong("id"));news.setTitle(resultSet.getString("title"));news.setContext(resultSet.getString("context"));news.setImgUrl(resultSet.getString("imgUrl"));news.setViewCount(resultSet.getInt("viewCount"));news.setIsRecommend(resultSet.getBoolean("isRecommend"));news.setInputDate(resultSet.getDate("inputDate"));return news;}}
}

1.5 service层

package cn.czg.core.service.impl;import cn.czg.core.dao.NewsDAO;
import cn.czg.core.domain.News;
import cn.czg.core.service.NewsService;import java.util.List;public class NewsServiceImpl implements NewsService{/*** 注入dao* @param news*/private NewsDAO newsDAO;public void setNewsDAO(NewsDAO newsDAO) {this.newsDAO = newsDAO;}@Overridepublic void save(News news) {newsDAO.save(news);}@Overridepublic void delete(Long id) {newsDAO.delete(id);}@Overridepublic void update(News news) {newsDAO.update(news);}@Overridepublic News findNewsById(Long id) {return newsDAO.query(id);}@Overridepublic List<News> list() {return newsDAO.list();}
}

1.6 单元测试

1 抽取BaseTest类(Spring测试的注解配置)
2 CRUD的测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class BaseTest {}
public class NewsTest extends BaseTest {@Autowiredprivate NewsService newsService;@Testpublic void saveTest(){News news=new News();news.setTitle("刘强东:敢在京东卖假货,就敢让你破产");news.setViewCount(77);news.setIsRecommend(true);news.setInputDate(new Date());news.setImgUrl("E:\\就业资料\\14_aigou\\2017-07-31-B2C商城(爱购网)-DAY01\\code\\news_flash\\img\\f3624688c24ee77_w495_h277.jpg");news.setContext("刘强东:做供给链处事。互联网有两个情势,一个是轻情势,一个是重情势,轻情势就是做平台,然则多么没有价值,我们要做有价值的任务,所以,供给链路子是对的,我们是独一的一家重运营重资产的情势。");newsService.save(news);}@Testpublic void testQuery(){News newsById = newsService.findNewsById(16L);System.out.println(newsById);}@Testpublic void delete(){newsService.delete(10L);}@Testpublic void updateTest(){News news = newsService.findNewsById(16L);news.setTitle("寺库的危机");newsService.update(news);}@Testpublic void testList(){List<News> list = newsService.list();System.out.println(list);}
}

1.7 web.xml的配置

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><!--上下文的配置--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!--struts2的核心过滤器的配置--><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--spring监听的配置--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
</web-app>

.启动tomcat,运行即可,发现程序正式启动,第二章会为大家带来相关的页面,以及分页和高级查询,以及图片上传等相关的技术。敬请期待。相关的代码我会在最后一章的时候发布到我的Github地址上,感兴趣的可以下载下来直接使用,当然相应的sql文件包括在内

代码请见最后一章,有Github地址

news_flash新闻快讯项目 Chapter 1相关推荐

  1. 今日新闻快讯摘要十条

    今日新闻快讯摘要十条 [365资讯简报]每天一分钟,知晓天下事!2020年11月17日 星期四 农历十一月初三 1.凌晨1时59分,嫦娥五号返回器成功着陆,我国首次地外天体采样返回任务圆满完成. 2. ...

  2. Bootstrap4+MySQL前后端综合实训-Day08-PM【ajax获取表单标签内容、根据“栏目信息”添加“新闻信息”、新闻管理系统-项目展示】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 ajax获取表单标签内容 ajax根据数据库加载select下来列 ...

  3. 今日新闻快报 新闻快讯摘要10条

    今日新闻快报 新闻快讯摘要10条.每天一分钟,知晓天下事! [365资讯简报]每天一分钟,知晓天下事!2020年12月25日 星期五 农历十一月十一 1.跨年寒潮将速冻全国,25个省会级城市气温将创新 ...

  4. 科技类新闻快讯_新闻快讯—您可能使用了错误HTML。

    科技类新闻快讯 I've spent the past decade freelancing as an accessibility and efficiency consultant to webs ...

  5. 基于java的校园新闻_基于jsp的校园新闻-JavaEE实现校园新闻 - java项目源码

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的校园新闻, 该项目可用各类java课程设计大作业中, 校园新闻的系统架构分为前后台两部分, 最终实现在线上进行校园 ...

  6. 今日新闻快讯10条 每天一分钟 知晓天下事 4月28日

    今日新闻早报 早报简报12条 每日新闻晨报 每日精选12条新闻简报 今日新闻快讯10条--365资讯简报,每日精选10-12条热点新闻,每天一分钟,知晓天下事! 2021年4月28日 星期三 农历三月 ...

  7. 写给用我的“新闻推荐项目”做毕设的同学们

    故事的背景是这样滴 14年的时候,我还在读研究生,那时候机器学习还算不上是一个重要的计算机学科,如果能顺嘴说一说TF-IDF.Collaborative Filtering这种算法(虽然现在听起来很n ...

  8. 新闻发布项目——访问温馨提示

    1.本项目开发的软件:MyEclipse10.0+tomcat7.0+sql servel2012 2.本项目所有的CSS下载地址:Jsp实现新闻发布系统的CSS界面 3.本项目所有的JS下载地址:J ...

  9. 真 · 前端Vue实战:头条新闻开发项目(下)

    现在在企业里面,Vue成为前端框架中最火的一个.由于其简单易学,越来越多的网站前端开始采用Vue开发,毋庸置疑,掌握Vue技术可以为你的职场增加更多的机会.  今晚,黑马程序员金牌讲师伍老师,将为大家 ...

最新文章

  1. 固态硬盘上安装centos_固态硬盘使用f2fs作为根分区安装linux
  2. 再深一点:面试工作两不误,源码级理解Spring事务
  3. 最近看Kafka源码,着实被它的客户端缓冲池技术优雅到了
  4. linux中用户与组的概念,Linux用户和组的概念
  5. mysql数据库优化面试
  6. 数字图像处理 第一章 概述
  7. C语言 数组定义和使用 - C语言零基础入门教程
  8. 常见三种存储方式DAS、NAS、SAN的架构及比较
  9. openstack 功能_2016年OpenStack的新功能:看一下Newton版本
  10. python获取网站图片_python获取网站图片
  11. POI写Word换行
  12. 绝地求生进游戏显示服务器未正常运行,绝地求生BE服务器未正常运行怎么办 BE服务器未运行解决方法...
  13. 【自考总结】寒冬里的温暖
  14. Linux系统Zookeeper集群配置
  15. centos nginx不是命令_Linux使用yum安装nginx服务教程
  16. shell执行perl_TOOLFK工具-在线Perl代码执行工具
  17. java中同步代码块具体步骤,Java同步块
  18. 16款最佳的 jQuery Time Picker 时间选择插件
  19. 程序员编程入门一定知道!程序员需要学什么?
  20. 7-9 幂集(回溯法) (20 分)(C语言版)

热门文章

  1. 信息课为什么不叫计算机课,信息技术课
  2. Linux下的文本网页浏览器
  3. 学物理可以让我们永远年轻吗?
  4. 校内代码 xiaonei代码 xiaonei黑色非主流代码
  5. 新站如何快速提升百度索引量
  6. 博图程序需要手动同步_西门子博途S7-1200 PWM 功能组态及编程方法
  7. 5800计算机交点法程序大全,FX5800计算器交点法正反算程序加入高程及隧道超欠挖...
  8. 基于ESP8266+433射频控制系统
  9. Ubuntu 16.04 中文版安装基础入门教程
  10. 965年10元纸币收藏价值