项目编号:BS-PT-039
运行说明:
开发工具:IDEA / ECLIPSE
数据库:MYSQL5.7
应用服务器:TOMCAT8.5.31
JDK: 1.8
开发技术:JSP/SERVLET/JDBC
前端页面: EasyUI+jQuery+Ajax
本系统基于SSM框架开发实现了一个新闻发布和管理系统,前端主要使用easyUi+jquery开发实现。系统功能完整,界而简洁大方,自带完善的权限管理系统,可以根据系统需要自由灵活的设置相关人员的权限。下面来展示一下新闻发布系统的相关功能。
前端界面:
分类新闻查看
新闻详情展示:可以登陆后在此进行新闻信息评论
全站新闻搜索
后台管理展示
用户登陆
用户注册
后台管理首页
菜单管理
角色管理
密码修改
用户管理
系统日志
新闻分类管理
新闻管理
评论管理
以上是展示的部分系统功能,普通用户注册后可以登陆系统进行新闻的查看和评论,也可以添加后台普通管理用户,用于发布新闻等操作。系统结构清晰,功能完整,界面简洁大方,适合做毕业设计使用。
新闻发布系统的核心代码如下:
package com.ischoolbar.programmer.controller.admin; import java.io.File; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import com.ischoolbar.programmer.entity.admin.User; import com.ischoolbar.programmer.page.admin.Page; import com.ischoolbar.programmer.service.admin.RoleService; import com.ischoolbar.programmer.service.admin.UserService; /** * 用户管理控制器 * */ @RequestMapping("/admin/user") @Controller public class UserController { @Autowired private UserService userService; @Autowired private RoleService roleService; /** * 用户列表页面 * @param model * @return */ @RequestMapping(value="/list",method=RequestMethod.GET) public ModelAndView list(ModelAndView model){ Map<String, Object> queryMap = new HashMap<String, Object>(); model.addObject("roleList", roleService.findList(queryMap)); model.setViewName("user/list"); return model; } /** * 获取用户列表 * @param page * @param username * @param roleId * @param sex * @return */ @RequestMapping(value="/list",method=RequestMethod.POST) @ResponseBody public Map<String, Object> getList(Page page, @RequestParam(name="username",required=false,defaultValue="") String username, @RequestParam(name="roleId",required=false) Long roleId, @RequestParam(name="sex",required=false) Integer sex ){ Map<String, Object> ret = new HashMap<String, Object>(); Map<String, Object> queryMap = new HashMap<String, Object>(); queryMap.put("username", username); queryMap.put("roleId", roleId); queryMap.put("sex", sex); queryMap.put("offset", page.getOffset()); queryMap.put("pageSize", page.getRows()); ret.put("rows", userService.findList(queryMap)); ret.put("total", userService.getTotal(queryMap)); return ret; } /** * 添加用户 * @param user * @return */ @RequestMapping(value="/add",method=RequestMethod.POST) @ResponseBody public Map<String, String> add(User user){ Map<String, String> ret = new HashMap<String, String>(); if(user == null){ ret.put("type", "error"); ret.put("msg", "请填写正确的用户信息!"); return ret; } if(StringUtils.isEmpty(user.getUsername())){ ret.put("type", "error"); ret.put("msg", "请填写用户名!"); return ret; } if(StringUtils.isEmpty(user.getPassword())){ ret.put("type", "error"); ret.put("msg", "请填写密码!"); return ret; } if(user.getRoleId() == null){ ret.put("type", "error"); ret.put("msg", "请选择所属角色!"); return ret; } if(isExist(user.getUsername(), 0l)){ ret.put("type", "error"); ret.put("msg", "该用户名已经存在,请重新输入!"); return ret; } if(userService.add(user) <= 0){ ret.put("type", "error"); ret.put("msg", "用户添加失败,请联系管理员!"); return ret; } ret.put("type", "success"); ret.put("msg", "角色添加成功!"); return ret; } /** * 编辑用户 * @param user * @return */ @RequestMapping(value="/edit",method=RequestMethod.POST) @ResponseBody public Map<String, String> edit(User user){ Map<String, String> ret = new HashMap<String, String>(); if(user == null){ ret.put("type", "error"); ret.put("msg", "请填写正确的用户信息!"); return ret; } if(StringUtils.isEmpty(user.getUsername())){ ret.put("type", "error"); ret.put("msg", "请填写用户名!"); return ret; } // if(StringUtils.isEmpty(user.getPassword())){ // ret.put("type", "error"); // ret.put("msg", "请填写密码!"); // return ret; // } if(user.getRoleId() == null){ ret.put("type", "error"); ret.put("msg", "请选择所属角色!"); return ret; } if(isExist(user.getUsername(), user.getId())){ ret.put("type", "error"); ret.put("msg", "该用户名已经存在,请重新输入!"); return ret; } if(userService.edit(user) <= 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(userService.delete(ids) <= 0){ ret.put("type", "error"); ret.put("msg", "用户删除失败,请联系管理员!"); return ret; } ret.put("type", "success"); ret.put("msg", "用户删除成功!"); 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; } /** * 判断该用户名是否存在 * @param username * @param id * @return */ private boolean isExist(String username,Long id){ User user = userService.findByUsername(username); if(user == null)return false; if(user.getId().longValue() == id.longValue())return false; return true; } }
package com.ischoolbar.programmer.controller.admin; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.ischoolbar.programmer.entity.admin.Authority; import com.ischoolbar.programmer.entity.admin.Menu; import com.ischoolbar.programmer.entity.admin.Role; import com.ischoolbar.programmer.entity.admin.User; import com.ischoolbar.programmer.service.admin.AuthorityService; import com.ischoolbar.programmer.service.admin.LogService; import com.ischoolbar.programmer.service.admin.MenuService; import com.ischoolbar.programmer.service.admin.RoleService; import com.ischoolbar.programmer.service.admin.UserService; import com.ischoolbar.programmer.util.CpachaUtil; import com.ischoolbar.programmer.util.MenuUtil; /** * 系统操作类控制器 * */ @Controller @RequestMapping("/system") public class SystemController { @Autowired private UserService userService; @Autowired private RoleService roleService; @Autowired private AuthorityService authorityService; @Autowired private MenuService menuService; @Autowired private LogService logService; /** * 系统登录后的主页 * @param model * @return */ @RequestMapping(value="/index",method=RequestMethod.GET) public ModelAndView index(ModelAndView model,HttpServletRequest request){ List<Menu> userMenus = (List<Menu>)request.getSession().getAttribute("userMenus"); model.addObject("topMenuList", MenuUtil.getAllTopMenu(userMenus)); model.addObject("secondMenuList", MenuUtil.getAllSecondMenu(userMenus)); model.setViewName("system/index"); return model;//WEB-INF/views/+system/index+.jsp = WEB-INF/views/system/index.jsp } /** * 系统登录后的欢迎页 * @param model * @return */ @RequestMapping(value="/welcome",method=RequestMethod.GET) public ModelAndView welcome(ModelAndView model){ model.setViewName("system/welcome"); return model; } /** * 登陆页面 * @param model * @return */ @RequestMapping(value="/login",method=RequestMethod.GET) public ModelAndView login(ModelAndView model){ model.setViewName("system/login"); return model; } /** * 注册页面 * @param model * @return */ @RequestMapping(value="/register",method=RequestMethod.GET) public ModelAndView register(ModelAndView model){ model.setViewName("system/register"); return model; } /** * 登录表单提交处理控制器 * @param user * @param cpacha * @return */ @RequestMapping(value="/login",method=RequestMethod.POST) @ResponseBody public Map<String, String> loginAct(User user,String cpacha,HttpServletRequest request){ Map<String, String> ret = new HashMap<String, String>(); if(user == null){ ret.put("type", "error"); ret.put("msg", "请填写用户信息!"); return ret; } if(StringUtils.isEmpty(cpacha)){ ret.put("type", "error"); ret.put("msg", "请填写验证码!"); return ret; } if(StringUtils.isEmpty(user.getUsername())){ ret.put("type", "error"); ret.put("msg", "请填写用户名!"); return ret; } if(StringUtils.isEmpty(user.getPassword())){ ret.put("type", "error"); ret.put("msg", "请填写密码!"); return ret; } Object loginCpacha = request.getSession().getAttribute("loginCpacha"); if(loginCpacha == null){ ret.put("type", "error"); ret.put("msg", "会话超时,请刷新页面!"); return ret; } if(!cpacha.toUpperCase().equals(loginCpacha.toString().toUpperCase())){ ret.put("type", "error"); ret.put("msg", "验证码错误!"); logService.add("用户名为"+user.getUsername()+"的用户登录时输入验证码错误!"); return ret; } User findByUsername = userService.findByUsername(user.getUsername()); if(findByUsername == null){ ret.put("type", "error"); ret.put("msg", "该用户名不存在!"); logService.add("登录时,用户名为"+user.getUsername()+"的用户不存在!"); return ret; } if(!user.getPassword().equals(findByUsername.getPassword())){ ret.put("type", "error"); ret.put("msg", "密码错误!"); logService.add("用户名为"+user.getUsername()+"的用户登录时输入密码错误!"); return ret; } //说明用户名密码及验证码都正确 //此时需要查询用户的角色权限 if(!user.getRoleId().equals(findByUsername.getRoleId())){ ret.put("type", "error"); ret.put("msg", "角色错误!"); logService.add("用户名为"+user.getUsername()+"的用户登录时输入角色错误!"); return ret; } Role role = roleService.find(findByUsername.getRoleId()); List<Authority> authorityList = authorityService.findListByRoleId(role.getId());//根据角色获取权限列表 String menuIds = ""; for(Authority authority:authorityList){ menuIds += authority.getMenuId() + ","; } if(!StringUtils.isEmpty(menuIds)){ menuIds = menuIds.substring(0,menuIds.length()-1); } List<Menu> userMenus = menuService.findListByIds(menuIds); //把角色信息、菜单信息放到session中 request.getSession().setAttribute("admin", findByUsername); request.getSession().setAttribute("role", role); request.getSession().setAttribute("userMenus", userMenus); ret.put("type", "success"); ret.put("msg", "登录成功!"); logService.add("用户名为{"+user.getUsername()+"},角色为{"+role.getName()+"}的用户登录成功!"); return ret; } /** * 登录表单提交处理控制器 * @param user * @param cpacha * @return */ @RequestMapping(value="/register",method=RequestMethod.POST) @ResponseBody public Map<String, String> registerAct(User user,String cpacha,HttpServletRequest request){ Map<String, String> ret = new HashMap<String, String>(); if(user == null){ ret.put("type", "error"); ret.put("msg", "请填写用户信息!"); return ret; } if(StringUtils.isEmpty(cpacha)){ ret.put("type", "error"); ret.put("msg", "请填写验证码!"); return ret; } if(StringUtils.isEmpty(user.getUsername())){ ret.put("type", "error"); ret.put("msg", "请填写用户名!"); return ret; } if(StringUtils.isEmpty(user.getPassword())){ ret.put("type", "error"); ret.put("msg", "请填写密码!"); return ret; } Object loginCpacha = request.getSession().getAttribute("loginCpacha"); if(loginCpacha == null){ ret.put("type", "error"); ret.put("msg", "会话超时,请刷新页面!"); return ret; } if(!cpacha.toUpperCase().equals(loginCpacha.toString().toUpperCase())){ ret.put("type", "error"); ret.put("msg", "验证码错误!"); logService.add("用户名为"+user.getUsername()+"的用户注册时输入验证码错误!"); return ret; } User findByUsername = userService.findByUsername(user.getUsername()); if(findByUsername != null){ ret.put("type", "error"); ret.put("msg", "该用户名已存在!"); logService.add("注册时,用户名为"+user.getUsername()+"的用户已存在!"); return ret; } //新增用户 int result = userService.add(user); if(1 != result){ ret.put("type", "error"); ret.put("msg", "系统异常稍后尝试!"); } ret.put("type", "success"); ret.put("msg", "注册成功!"); logService.add("用户名为{"+user.getUsername()+"}用户登录成功!"); return ret; } /** * 后台退出注销功能 * @param request * @return */ @RequestMapping(value="/logout",method=RequestMethod.GET) public String logout(HttpServletRequest request){ HttpSession session = request.getSession(); session.setAttribute("admin", null); session.setAttribute("role", null); request.getSession().setAttribute("userMenus", null); return "redirect:login"; } /** * 修改密码页面 * @param model * @return */ @RequestMapping(value="/edit_password",method=RequestMethod.GET) public ModelAndView editPassword(ModelAndView model){ model.setViewName("system/edit_password"); return model; } @RequestMapping(value="/edit_password",method=RequestMethod.POST) @ResponseBody public Map<String, String> editPasswordAct(String newpassword,String oldpassword,HttpServletRequest request){ Map<String, String> ret = new HashMap<String, String>(); if(StringUtils.isEmpty(newpassword)){ ret.put("type", "error"); ret.put("msg", "请填写新密码!"); return ret; } User user = (User)request.getSession().getAttribute("admin"); if(!user.getPassword().equals(oldpassword)){ ret.put("type", "error"); ret.put("msg", "原密码错误!"); return ret; } user.setPassword(newpassword); if(userService.editPassword(user) <= 0){ ret.put("type", "error"); ret.put("msg", "密码修改失败,请联系管理员!"); return ret; } ret.put("type", "success"); ret.put("msg", "密码修改成功!"); logService.add("用户名为{"+user.getUsername()+"},的用户成功修改密码!"); return ret; } /** * 本系统所有的验证码均采用此方法 * @param vcodeLen * @param width * @param height * @param cpachaType:用来区别验证码的类型,传入字符串 * @param request * @param response */ @RequestMapping(value="/get_cpacha",method=RequestMethod.GET) public void generateCpacha( @RequestParam(name="vl",required=false,defaultValue="4") Integer vcodeLen, @RequestParam(name="w",required=false,defaultValue="100") Integer width, @RequestParam(name="h",required=false,defaultValue="30") Integer height, @RequestParam(name="type",required=true,defaultValue="loginCpacha") String cpachaType, HttpServletRequest request, HttpServletResponse response){ CpachaUtil cpachaUtil = new CpachaUtil(vcodeLen, width, height); String generatorVCode = cpachaUtil.generatorVCode(); request.getSession().setAttribute(cpachaType, generatorVCode); BufferedImage generatorRotateVCodeImage = cpachaUtil.generatorRotateVCodeImage(generatorVCode, true); try { ImageIO.write(generatorRotateVCodeImage, "gif", response.getOutputStream()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }