作者主页:Java毕设网
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
一、项目介绍
本项目分为前后台,分为管理员与普通用户角色,前台为普通用户登录,后台为管理员登录;
用户角色包含以下功能:
新闻搜索,查看新闻,用户首页,评论新闻等功能。
管理员角色包含以下功能:
分类管理,新闻管理,管理员登录,评论管理等功能。
由于本程序规模不大,可供课程设计,毕业设计学习演示之用
二、环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:否;
三、技术栈
1. 后端:Spring+SpringMVC+Mybatis
2. 前端:JSP+CSS+JavaScript+jquery+bootstrap
四、使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中config/db.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入http://localhost:8080/News 登录
管理员账号/密码:admin/admin
用户账号/密码:小青年/123456
五、运行截图
前台界面
后台界面
六、相关代码
日志管理控制器
/**
* 日志管理控制器
* @author llq
*
*/
@RequestMapping("/admin/log")
@Controller
public class LogController {
@Autowired
private LogService logService;
/**
* 日志列表页面
* @param model
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.GET)
public ModelAndView list(ModelAndView model){
model.setViewName("log/list");
return model;
}
/**
* 获取日志列表
* @param page
* @param content
* @param roleId
* @param sex
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> getList(Page page,
@RequestParam(name="content",required=false,defaultValue="") String content
){
Map<String, Object> ret = new HashMap<String, Object>();
Map<String, Object> queryMap = new HashMap<String, Object>();
queryMap.put("content", content);
queryMap.put("offset", page.getOffset());
queryMap.put("pageSize", page.getRows());
ret.put("rows", logService.findList(queryMap));
ret.put("total", logService.getTotal(queryMap));
return ret;
}
/**
* 添加日志
* @param user
* @return
*/
@RequestMapping(value="/add",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> add(Log log){
Map<String, String> ret = new HashMap<String, String>();
if(log == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的日志信息!");
return ret;
}
if(StringUtils.isEmpty(log.getContent())){
ret.put("type", "error");
ret.put("msg", "请填写日志内容!");
return ret;
}
log.setCreateTime(new Date());
if(logService.add(log) <= 0){
ret.put("type", "error");
ret.put("msg", "日志添加失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "日志添加成功!");
return ret;
}
/**
* 批量删除日志
* @param ids
* @return
*/
@RequestMapping(value="/delete",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> delete(String ids){
Map<String, String> ret = new HashMap<String, String>();
if(StringUtils.isEmpty(ids)){
ret.put("type", "error");
ret.put("msg", "选择要删除的数据!");
return ret;
}
if(ids.contains(",")){
ids = ids.substring(0,ids.length()-1);
}
if(logService.delete(ids) <= 0){
ret.put("type", "error");
ret.put("msg", "日志删除失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "日志删除成功!");
return ret;
}
}
新闻管理控制器
/**
* 新闻控制器
* @author llq
*
*/
@RequestMapping("/admin/news")
@Controller
public class NewsController {
@Autowired
private NewsCategoryService newsCategoryService;
@Autowired
private NewsService newsService;
/**
* 新闻列表页面
* @param model
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.GET)
public ModelAndView list(ModelAndView model){
model.addObject("newsCategoryList", newsCategoryService.findAll());
model.setViewName("news/list");
return model;
}
/**
* 新闻添加页面
* @param model
* @return
*/
@RequestMapping(value="/add",method=RequestMethod.GET)
public ModelAndView add(ModelAndView model){
model.addObject("newsCategoryList", newsCategoryService.findAll());
model.setViewName("news/add");
return model;
}
/**
* 新闻添加
* @param news
* @return
*/
@RequestMapping(value="/add",method=RequestMethod.POST)
@ResponseBody
public Map<String,String> add(News news){
Map<String,String> ret = new HashMap<String, String>();
if(news == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的信息!");
return ret;
}
if(StringUtils.isEmpty(news.getTitle())){
ret.put("type", "error");
ret.put("msg", "新闻标题不能为空!");
return ret;
}
if(news.getCategoryId() == null){
ret.put("type", "error");
ret.put("msg", "请选择新闻分类!");
return ret;
}
if(StringUtils.isEmpty(news.getAbstrs())){
ret.put("type", "error");
ret.put("msg", "新闻摘要不能为空!");
return ret;
}
if(StringUtils.isEmpty(news.getTags())){
ret.put("type", "error");
ret.put("msg", "新闻标签不能为空!");
return ret;
}
if(StringUtils.isEmpty(news.getPhoto())){
ret.put("type", "error");
ret.put("msg", "新闻封面图片必须上传!");
return ret;
}
if(StringUtils.isEmpty(news.getAuthor())){
ret.put("type", "error");
ret.put("msg", "新闻作者不能为空!");
return ret;
}
if(StringUtils.isEmpty(news.getContent())){
ret.put("type", "error");
ret.put("msg", "新闻内容不能为空!");
return ret;
}
news.setCreateTime(new Date());
if(newsService.add(news) <= 0){
ret.put("type", "error");
ret.put("msg", "添加失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "添加成功!");
return ret;
}
/**
* 新闻编辑页面
* @param model
* @return
*/
@RequestMapping(value="/edit",method=RequestMethod.GET)
public ModelAndView edit(ModelAndView model,Long id){
model.addObject("newsCategoryList", newsCategoryService.findAll());
model.addObject("news", newsService.find(id));
model.setViewName("news/edit");
return model;
}
/**
* 新闻信息编辑
* @param newsCategory
* @return
*/
@RequestMapping(value="/edit",method=RequestMethod.POST)
@ResponseBody
public Map<String,String> edit(News news){
Map<String,String> ret = new HashMap<String, String>();
if(news == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的信息!");
return ret;
}
if(StringUtils.isEmpty(news.getTitle())){
ret.put("type", "error");
ret.put("msg", "新闻标题不能为空!");
return ret;
}
if(news.getCategoryId() == null){
ret.put("type", "error");
ret.put("msg", "请选择新闻分类!");
return ret;
}
if(StringUtils.isEmpty(news.getAbstrs())){
ret.put("type", "error");
ret.put("msg", "新闻摘要不能为空!");
return ret;
}
if(StringUtils.isEmpty(news.getTags())){
ret.put("type", "error");
ret.put("msg", "新闻标签不能为空!");
return ret;
}
if(StringUtils.isEmpty(news.getPhoto())){
ret.put("type", "error");
ret.put("msg", "新闻封面图片必须上传!");
return ret;
}
if(StringUtils.isEmpty(news.getAuthor())){
ret.put("type", "error");
ret.put("msg", "新闻作者不能为空!");
return ret;
}
if(StringUtils.isEmpty(news.getContent())){
ret.put("type", "error");
ret.put("msg", "新闻内容不能为空!");
return ret;
}
if(newsService.edit(news) <= 0){
ret.put("type", "error");
ret.put("msg", "修改失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "修改成功!");
return ret;
}
/**
* 删除新闻
* @param id
* @return
*/
@RequestMapping(value="/delete",method=RequestMethod.POST)
@ResponseBody
public Map<String,String> delete(Long id){
Map<String,String> ret = new HashMap<String, String>();
if(id == null){
ret.put("type", "error");
ret.put("msg", "请选择要删除的信息!");
return ret;
}
try{
if(newsService.delete(id) <= 0){
ret.put("type", "error");
ret.put("msg", "删除失败,请联系管理员!");
return ret;
}
}catch(Exception e){
ret.put("type", "error");
ret.put("msg", "该新闻下有评论信息,不可删除!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "删除成功!");
return ret;
}
/**
* 分页模糊搜索查询列表
* @param name
* @param page
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.POST)
@ResponseBody
public Map<String,Object> getList(
@RequestParam(name="title",required=false,defaultValue="") String title,
@RequestParam(name="author",required=false,defaultValue="") String author,
@RequestParam(name="categoryId",required=false) Long categoryId,
Page page
){
Map<String,Object> ret = new HashMap<String, Object>();
Map<String,Object> queryMap = new HashMap<String, Object>();
queryMap.put("title", title);
queryMap.put("author", author);
if(categoryId != null && categoryId.longValue() != -1){
queryMap.put("categoryId", categoryId);
}
queryMap.put("offset", page.getOffset());
queryMap.put("pageSize", page.getRows());
ret.put("rows", newsService.findList(queryMap));
ret.put("total", newsService.getTotal(queryMap));
return ret;
}
/**
* 上传图片
* @param photo
* @param request
* @return
*/
@RequestMapping(value="/upload_photo",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> uploadPhoto(MultipartFile photo,HttpServletRequest request){
Map<String, String> ret = new HashMap<String, String>();
if(photo == null){
ret.put("type", "error");
ret.put("msg", "选择要上传的文件!");
return ret;
}
if(photo.getSize() > 1024*1024*1024){
ret.put("type", "error");
ret.put("msg", "文件大小不能超过10M!");
return ret;
}
//获取文件后缀
String suffix = photo.getOriginalFilename().substring(photo.getOriginalFilename().lastIndexOf(".")+1,photo.getOriginalFilename().length());
if(!"jpg,jpeg,gif,png".toUpperCase().contains(suffix.toUpperCase())){
ret.put("type", "error");
ret.put("msg", "请选择jpg,jpeg,gif,png格式的图片!");
return ret;
}
String savePath = request.getServletContext().getRealPath("/") + "/resources/upload/";
File savePathFile = new File(savePath);
if(!savePathFile.exists()){
//若不存在改目录,则创建目录
savePathFile.mkdir();
}
String filename = new Date().getTime()+"."+suffix;
try {
//将文件保存至指定目录
photo.transferTo(new File(savePath+filename));
}catch (Exception e) {
// TODO Auto-generated catch block
ret.put("type", "error");
ret.put("msg", "保存文件异常!");
e.printStackTrace();
return ret;
}
ret.put("type", "success");
ret.put("msg", "用户上传图片成功!");
ret.put("filepath",request.getServletContext().getContextPath() + "/resources/upload/" + filename );
return ret;
}
}