基于javaweb+mysql的springboot新闻发布系统(java+springboot+ssm+mysql+maven+jsp)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot新闻发布系统(java+springboot+ssm+mysql+maven+jsp)
一、项目简述
功能: 区分为管理员用户和普通用户,管理员用户能删除评论, 调整新闻显示/隐藏,修改新闻,删除普通用户,普通用户能 登陆浏览,新用户可以注册基本功能实现了新闻增加,新 闻删除,新闻修改,新闻搜索其他功能:用户评论,管理 员删除差评,新闻分类,前台分类显示新闻,用户注册, 登录,个人信息修改等等功能。
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP + SpringBoot + Servlert + htm l+ css + JavaScript + ECharts+ JQuery + Maven 等等
@RequestMapping("/search")
public String search(){
String search = request.getParameter("search");
request.setAttribute("searchStr", search);
List<News> 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]+"<font color='red'>"+search+"</font>"+split[i+1];
}
}else{
title=split[0]+"<font color='red'>"+search+"</font>";
}*/
title=title.replace(search, "<font color='red'>"+search+"</font>");
System.out.println(title);
x.setTitle(title);
return x;
}).collect(Collectors.toList());
request.setAttribute("list",newsList
);
List<Category> categoryList = categoryDao.queryAll();
request.setAttribute("categoryList",
categoryList.stream().filter(x -> x.getState().equals("1")).collect(Collectors.toList()));
List<Users> list = usersDao.getUsers();
request.setAttribute("list", list);
return "listusers";
}
}
@Controller
@RequestMapping("CategoryServlet")
public class CategoryController {
@Autowired
private HttpServletRequest request;
private CategoryDao categoryDao=new CategoryDao();
@RequestMapping("/listforadmin")
public String listforadmin(){
List<Category> categoryList = categoryDao.queryAll();
request.setAttribute("list", categoryList);
return "listcategory";
}
@RequestMapping("/show")
public String show(){
List<Category> categoryList = categoryDao.queryAll();
categoryList=categoryList.stream().filter(x->x.getState().equals("1")).collect(Collectors.toList());
if(categoryList.size()>=5)
{
request.setAttribute("list", categoryDao.queryAll());
request.setAttribute("msg","设置栏目显示失败,前台栏目最多显示5个");
} 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();
}
}
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<News> newsList = newsDao.queryAll();
request.setAttribute("list", newsList);
return "listnews";
}
@RequestMapping("/toaddnews")
public String toaddnews(){
List<News> newsList = newsDao.queryAll();
request.setAttribute("list", newsList);
List<Category> 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")
// 设置颜色
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
return "listusers";
}
@RequestMapping("/del")
public String del(Integer id) {
usersDao.del(id);
List<Users> list = usersDao.getUsers();
request.setAttribute("list", list);
return "listusers";
}
}
@Controller
@RequestMapping("CategoryServlet")
public class CategoryController {
@Autowired
private HttpServletRequest request;
private CategoryDao categoryDao=new CategoryDao();
@RequestMapping("/listforadmin")
public String listforadmin(){
List<Category> categoryList = categoryDao.queryAll();
request.setAttribute("list", categoryList);
return "listcategory";
}
@RequestMapping("/show")
public String show(){
List<Category> categoryList = categoryDao.queryAll();
categoryList=categoryList.stream().filter(x->x.getState().equals("1")).collect(Collectors.toList());
if(categoryList.size()>=5)
{
request.setAttribute("list", categoryDao.queryAll());
request.setAttribute("msg","设置栏目显示失败,前台栏目最多显示5个");
return "listcategory";
}else {
categoryDao.show(Integer.parseInt(request.getParameter("id")));
return "redirect:listforadmin";
}
request.setAttribute("error", "注册失败,该用户名已存在!");
return "reg";
} else {
usersDao.reg(username, account, password, email);
request.setAttribute("error", "注册成功!");
return "reg";
}
}
}
@RequestMapping("/listforadmin")
public String listforadmin() {
List<Users> list = usersDao.getUsers();
request.setAttribute("list", list);
return "listusers";
}
@RequestMapping("/del")
public String del(Integer id) {
usersDao.del(id);
List<Users> list = usersDao.getUsers();
request.setAttribute("list", list);
return "listusers";
}
}
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.equalsIgnoreCase(serverCheckcode)) {
// 2. 去访问dao , 看看是否满足登录。
Users Users = usersDao.userlogin(userName, password);
// 3. 针对dao的返回结果,做出响应
if (Users != null) {
request.getSession().setAttribute("usersLogin", Users);
CategoryDao categoryDao = new CategoryDao();
List<Category> 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() {
@Controller
@RequestMapping("CategoryServlet")
public class CategoryController {
@Autowired
private HttpServletRequest request;
private CategoryDao categoryDao=new CategoryDao();
@RequestMapping("/listforadmin")
public String listforadmin(){
List<Category> categoryList = categoryDao.queryAll();
request.setAttribute("list", categoryList);
return "listcategory";
}
@RequestMapping("/show")
public String show(){
List<Category> categoryList = categoryDao.queryAll();
categoryList=categoryList.stream().filter(x->x.getState().equals("1")).collect(Collectors.toList());
if(categoryList.size()>=5)
{
request.setAttribute("list", categoryDao.queryAll());
request.setAttribute("msg","设置栏目显示失败,前台栏目最多显示5个");
return "listcategory";
}else {
categoryDao.show(Integer.parseInt(request.getParameter("id")));
return "redirect:listforadmin";
}
}
@RequestMapping("/hidden")
public String hidden(){
categoryDao.hidden(Integer.parseInt(request.getParameter("id")));
return "redirect:listforadmin";
}
@RequestMapping("/add")
public String add(){
String name=request.getParameter("name");
String state=request.getParameter("state");
Category category=new Category();
category.setName(name);
category.setState(state);
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<News> newsList = newsDao.queryAll();
request.setAttribute("list", newsList);
return "listnews";
}
@RequestMapping("/toaddnews")
public String toaddnews(){
List<News> newsList = newsDao.queryAll();
request.setAttribute("list", newsList);
List<Category> categoryList = categoryDao.queryAll();
request.setAttribute("categoryList", categoryList);
return "addnews";
}
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<News> newsList = newsDao.queryAll();
request.setAttribute("list", newsList);
return "listnews";
}
@RequestMapping("/toaddnews")
public String toaddnews(){
List<News> newsList = newsDao.queryAll();
request.setAttribute("list", newsList);
List<Category> 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");
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<News> 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<Category> categoryList = categoryDao.queryAll();
request.setAttribute("categoryList", categoryList);
return "editnews";
}
@RequestMapping("/queryByType")
public String queryByType(){
String categoryid = request.getParameter("categoryid");
List<News> newsList = newsDao.queryAll();
request.setAttribute("list", newsList.stream()
.filter(x -> x.getCategoryid().equals(Integer.parseInt(categoryid))).collect(Collectors.toList()));
List<Category> categoryList = categoryDao.queryAll();
request.setAttribute("categoryList",
categoryList.stream().filter(x -> x.getState().equals("1")).collect(Collectors.toList()));
return "typenews";
}
public String del(Integer id) {
usersDao.del(id);
List<Users> list = usersDao.getUsers();
request.setAttribute("list", list);
return "listusers";
}
}
@Controller
@RequestMapping("CategoryServlet")
public class CategoryController {
@Autowired
private HttpServletRequest request;
private CategoryDao categoryDao=new CategoryDao();
@RequestMapping("/listforadmin")
public String listforadmin(){
List<Category> categoryList = categoryDao.queryAll();
request.setAttribute("list", categoryList);
return "listcategory";
}
@RequestMapping("/show")
public String show(){
List<Category> categoryList = categoryDao.queryAll();
categoryList=categoryList.stream().filter(x->x.getState().equals("1")).collect(Collectors.toList());
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<Users> list = usersDao.getUsers();
request.setAttribute("list", list);
return "listusers";
}
@RequestMapping("/del")
public String del(Integer id) {
usersDao.del(id);
List<Users> list = usersDao.getUsers();
request.setAttribute("list", list);
return "listusers";
}
}
}
}
@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);
}
@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.equalsIgnoreCase(serverCheckcode)) {
// 2. 去访问dao , 看看是否满足登录。
Users Users = usersDao.userlogin(userName, password);
// 3. 针对dao的返回结果,做出响应
if (Users != null) {
request.getSession().setAttribute("usersLogin", Users);
CategoryDao categoryDao = new CategoryDao();
List<Category> 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");
// 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) {
// 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);