源码获取:博客首页 "资源" 里下载!

项目介绍

该项目为后管系统,主要功能包括:

看板、业务机会管理、客户管理、联系人管理、我的日报、团队日报、主数据管理:组织架构管理;系统管理:用户管理、角色管理、菜单管理等;

环境需要

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. 后端:SpringBoot+mybatis

2. 前端:FreeMarker+Angular+bootstrap+echarts+jQuery

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;

2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;

3. 将项目中application-powerteam.yml配置文件中的数据库配置改为自己的配置;
4. 前台访问路径:http://localhost:8080/
登录账号:admin  登录密码:admin

用户管理控制层:

@Controller
@RequestMapping("admin/system/user")
public class UserController {@AutowiredUserService userService;@AutowiredRoleService roleService;@AutowiredUploadService uploadService;@RequestMapping("list")@SysLog("跳转系统用户列表页面")public String list(){return "admin/user/list";}@RequiresPermissions("sys:user:list")@PostMapping("list")@ResponseBodypublic PageData<User> list(@RequestParam(value = "page",defaultValue = "1")Integer page,@RequestParam(value = "limit",defaultValue = "10")Integer limit,ServletRequest request){Map map = WebUtils.getParametersStartingWith(request, "s_");PageData<User> userPageData = new PageData<>();QueryWrapper<User> userWrapper = new QueryWrapper<>();if(!map.isEmpty()){String type = (String) map.get("type");if(StringUtils.isNotBlank(type)) {userWrapper.eq("is_admin", "admin".equals(type) ? true : false);}String keys = (String) map.get("key");if(StringUtils.isNotBlank(keys)) {userWrapper.and(wrapper -> wrapper.like("login_name", keys).or().like("tel", keys).or().like("email", keys));}}IPage<User> userPage = userService.page(new Page<>(page,limit),userWrapper);userPageData.setCount(userPage.getTotal());userPageData.setData(userPage.getRecords());return userPageData;}@RequestMapping("add")public String add(ModelMap modelMap){List<Role> roleList = roleService.selectAll();modelMap.put("roleList",roleList);return "admin/user/add";}@RequiresPermissions("sys:user:add")@PostMapping("add")@ResponseBody@SysLog("保存新增系统用户数据")public ResponseEntity add(@RequestBody  User user){if(StringUtils.isBlank(user.getLoginName())){return ResponseEntity.failure("登录名不能为空");}if(user.getRoleLists() == null || user.getRoleLists().size() == 0){return  ResponseEntity.failure("用户角色至少选择一个");}if(userService.userCount(user.getLoginName())>0){return ResponseEntity.failure("登录名称已经存在");}
//        if(StringUtils.isNotBlank(user.getEmail())){
//            if(userService.userCount(user.getEmail())>0){
//                return ResponseEntity.failure("该邮箱已被使用");
//            }
//        }
//        if(StringUtils.isNoneBlank(user.getTel())){
//            if(userService.userCount(user.getTel())>0){
//                return ResponseEntity.failure("该手机号已被绑定");
//            }
//        }//设置默认密码if(StringUtils.isBlank(user.getPassword())){user.setPassword(Constants.DEFAULT_PASSWORD);}userService.saveUser(user);if(StringUtils.isBlank(user.getId())){return ResponseEntity.failure("保存用户信息出错");}//保存用户角色关系userService.saveUserRoles(user.getId(),user.getRoleLists());return ResponseEntity.success("操作成功");}@RequestMapping("edit")public String edit(String id,ModelMap modelMap){User user = userService.findUserById(id);String roleIds = "";if(user != null) {roleIds = user.getRoleLists().stream().map(role -> role.getId()).collect(Collectors.joining(","));}List<Role> roleList = roleService.selectAll();modelMap.put("localuser",user);modelMap.put("roleIds",roleIds);modelMap.put("roleList",roleList);return "admin/user/edit";}@RequiresPermissions("sys:user:edit")@PostMapping("edit")@ResponseBody@SysLog("保存系统用户编辑数据")public ResponseEntity edit(@RequestBody  User user){if(StringUtils.isBlank(user.getId())){return ResponseEntity.failure("用户ID不能为空");}if(StringUtils.isBlank(user.getLoginName())){return ResponseEntity.failure("登录名不能为空");}if(user.getRoleLists() == null || user.getRoleLists().size() == 0){return  ResponseEntity.failure("用户角色至少选择一个");}User oldUser = userService.findUserById(user.getId());if(StringUtils.isNotBlank(user.getEmail())){if(!user.getEmail().equals(oldUser.getEmail())){if(userService.userCount(user.getEmail())>0){return ResponseEntity.failure("该邮箱已被使用");}}}if(StringUtils.isNotBlank(user.getLoginName())){if(!user.getLoginName().equals(oldUser.getLoginName())) {if (userService.userCount(user.getLoginName()) > 0) {return ResponseEntity.failure("该登录名已存在");}}}if(StringUtils.isNotBlank(user.getTel())){if(!user.getTel().equals(oldUser.getTel())) {if (userService.userCount(user.getTel()) > 0) {return ResponseEntity.failure("该手机号已经被绑定");}}}user.setIcon(oldUser.getIcon());userService.updateUser(user);if(StringUtils.isBlank(user.getId())){return ResponseEntity.failure("保存用户信息出错");}userService.saveUserRoles(user.getId(),user.getRoleLists());return ResponseEntity.success("操作成功");}@RequiresPermissions("sys:user:lock")@PostMapping("lock")@ResponseBody@SysLog("锁定或开启系统用户")public ResponseEntity lock(@RequestParam(value = "id",required = false)String id){if(StringUtils.isBlank(id)){return ResponseEntity.failure("参数错误");}User user = userService.getById(id);if(user == null){return ResponseEntity.failure("用户不存在");}userService.lockUser(user);return ResponseEntity.success("操作成功");}@RequiresPermissions("sys:user:delete")@PostMapping("delete")@ResponseBody@SysLog("删除系统用户数据(单个)")public ResponseEntity delete(@RequestParam(value = "id",required = false)String id){if(StringUtils.isBlank(id)){return ResponseEntity.failure("参数错误");}User user = userService.getById(id);if(user == null){return ResponseEntity.failure("用户不存在");}else if(user.getAdminUser()) {return ResponseEntity.failure("不能删除后台用户");}userService.deleteUser(user);return ResponseEntity.success("操作成功");}@RequiresPermissions("sys:user:delete")@PostMapping("deleteSome")@ResponseBody@SysLog("删除系统用户数据(多个)")public ResponseEntity deleteSome(@RequestBody List<User> users){if(users == null || users.size()==0){return ResponseEntity.failure("请选择需要删除的用户");}for (User u : users){if(u.getAdminUser()){return ResponseEntity.failure("不能删除超级管理员");}else{userService.deleteUser(u);}}return ResponseEntity.success("操作成功");}@RequestMapping("userinfo")public String toEditMyInfo(ModelMap modelMap){String userId = MySysUser.id();User user = userService.findUserById(userId);modelMap.put("userinfo",user);modelMap.put("userRole",user.getRoleLists());return "admin/user/userInfo";}@SysLog("系统用户个人信息修改")@PostMapping("saveUserinfo")@ResponseBodypublic ResponseEntity saveUserInfo(User user){if(StringUtils.isBlank(user.getId())){return ResponseEntity.failure("用户ID不能为空");}if(StringUtils.isBlank(user.getLoginName())){return ResponseEntity.failure("登录名不能为空");}User oldUser = userService.findUserById(user.getId());if(StringUtils.isNotBlank(user.getEmail())){if(!user.getEmail().equals(oldUser.getEmail())){if(userService.userCount(user.getEmail())>0){return ResponseEntity.failure("该邮箱已被使用");}}}if(StringUtils.isNotBlank(user.getTel())){if(!user.getTel().equals(oldUser.getTel())) {if (userService.userCount(user.getTel()) > 0) {return ResponseEntity.failure("该手机号已经被绑定");}}}userService.updateById(user);return ResponseEntity.success("操作成功");}@RequestMapping("changePassword")public String changePassword(ModelMap modelMap){modelMap.put("currentUser",userService.getById(MySysUser.id()));return "admin/user/changePassword";}@CrossOrigin@SysLog("用户修改密码")@PostMapping("changePassword")@ResponseBodypublic ResponseEntity changePassword(@RequestParam(value = "userName",required = false)String userName,@RequestParam(value = "oldPwd",required = false)String oldPwd,@RequestParam(value = "newPwd",required = false)String newPwd,@RequestParam(value = "confirmPwd",required = false)String confirmPwd){if(StringUtils.isBlank(oldPwd)){return ResponseEntity.failure("旧密码不能为空");}if(StringUtils.isBlank(newPwd)){return ResponseEntity.failure("新密码不能为空");}if(StringUtils.isBlank(confirmPwd)){return ResponseEntity.failure("确认密码不能为空");}if(!confirmPwd.equals(newPwd)){return ResponseEntity.failure("确认密码与新密码不一致");}//小程序修改密码if(StringUtils.isBlank(userName)){//PC修改密码User user = userService.findUserById(MySysUser.id());byte[] hashPassword = Encodes.sha1(oldPwd.getBytes(), Encodes.SHA1, Encodes.decodeHex(user.getSalt()), Constants.HASH_INTERATIONS);String password = Encodes.encodeHex(hashPassword);if(!user.getPassword().equals(password)){return ResponseEntity.failure("旧密码错误");}user.setPassword(newPwd);Encodes.entryptPassword(user);userService.updateById(user);return ResponseEntity.success("操作成功");}else {//小程序修改密码User user = userService.findUserByLoginName(userName);byte[] hashPassword = Encodes.sha1(oldPwd.getBytes(), Encodes.SHA1, Encodes.decodeHex(user.getSalt()), Constants.HASH_INTERATIONS);String password = Encodes.encodeHex(hashPassword);if(!user.getPassword().equals(password)){return ResponseEntity.failure("旧密码错误");}user.setPassword(newPwd);Encodes.entryptPassword(user);userService.updateById(user);return ResponseEntity.success("操作成功");}}@SysLog("上传头像")@PostMapping("uploadFace")@ResponseBodypublic ResponseEntity uploadFile(@RequestParam("icon") MultipartFile file, HttpServletRequest httpServletRequest) {if(file == null){return ResponseEntity.failure("上传文件为空 ");}String url = null;Map map = new HashMap();try {url = uploadService.upload(file);map.put("url", url);map.put("name", file.getOriginalFilename());} catch (Exception e) {e.printStackTrace();return ResponseEntity.failure(e.getMessage());}return ResponseEntity.success("操作成功").setAny("data",map);}}

角色管理控制层:

@Controller
@RequestMapping("admin/system/role")
public class RoleController {@AutowiredRoleService roleService;@AutowiredUserService userService;@AutowiredMenuService menuService;@RequestMapping(value = "list")public String list(){return "admin/role/list";}@RequiresPermissions("sys:role:list")@PostMapping("list")@ResponseBodypublic PageData<Role> list(@RequestParam(value = "page",defaultValue = "1")Integer page,@RequestParam(value = "limit",defaultValue = "10")Integer limit,ServletRequest request){Map map = WebUtils.getParametersStartingWith(request, "s_");PageData<Role> rolePageData = new PageData<>();QueryWrapper<Role> roleWrapper = new QueryWrapper<>();roleWrapper.eq("del_flag",false);if(!map.isEmpty()){String keys = (String) map.get("key");if(StringUtils.isNotBlank(keys)) {roleWrapper.like("name", keys);}}IPage<Role> rolePage = roleService.page(new Page<>(page,limit),roleWrapper);rolePageData.setCount(rolePage.getTotal());rolePageData.setData(setUserToRole(rolePage.getRecords()));return rolePageData;}private List<Role> setUserToRole(List<Role> roles){roles.forEach(r -> {if(StringUtils.isNotBlank(r.getCreateId())){User u = userService.findUserById(r.getCreateId());if(StringUtils.isBlank(u.getNickName())){u.setNickName(u.getLoginName());}r.setCreateUser(u);}if(StringUtils.isNotBlank(r.getUpdateId())){User u  = userService.findUserById(r.getUpdateId());if(StringUtils.isBlank(u.getNickName())){u.setNickName(u.getLoginName());}r.setUpdateUser(u);}});return roles;}@RequestMapping("add")public String add(ModelMap modelMap){Map<String,Object> map =  new HashMap();map.put("parentId",null);map.put("isShow",false);List<Menu> menuList = menuService.selectAllMenus(map);modelMap.put("menuList",menuList);return "admin/role/add";}@RequiresPermissions("sys:role:add")@PostMapping("add")@ResponseBody@SysLog("保存新增角色数据")public ResponseEntity add(@RequestBody Role role){if(StringUtils.isBlank(role.getName())){return ResponseEntity.failure("角色名称不能为空");}if(roleService.getRoleNameCount(role.getName())>0){return ResponseEntity.failure("角色名称已存在");}roleService.saveRole(role);return ResponseEntity.success("操作成功");}@RequestMapping("edit")public String edit(String id,ModelMap modelMap){Role role = roleService.getRoleById(id);String menuIds = null;if(role != null) {menuIds  = role.getMenuSet().stream().map(menu -> menu.getId()).collect(Collectors.joining(","));}Map<String,Object> map = new HashMap();map.put("parentId",null);map.put("isShow",Boolean.FALSE);List<Menu> menuList = menuService.selectAllMenus(map);modelMap.put("role",role);modelMap.put("menuList",menuList);modelMap.put("menuIds",menuIds);return "admin/role/edit";}@RequiresPermissions("sys:role:edit")@PostMapping("edit")@ResponseBody@SysLog("保存编辑角色数据")public ResponseEntity edit(@RequestBody Role role){if(StringUtils.isBlank(role.getId())){return ResponseEntity.failure("角色ID不能为空");}if(StringUtils.isBlank(role.getName())){return ResponseEntity.failure("角色名称不能为空");}Role oldRole = roleService.getRoleById(role.getId());if(!oldRole.getName().equals(role.getName())){if(roleService.getRoleNameCount(role.getName())>0){return ResponseEntity.failure("角色名称已存在");}}roleService.updateRole(role);return ResponseEntity.success("操作成功");}@RequiresPermissions("sys:role:delete")@PostMapping("delete")@ResponseBody@SysLog("删除角色数据")public ResponseEntity delete(@RequestParam(value = "id",required = false)String id){if(StringUtils.isBlank(id)){return ResponseEntity.failure("角色ID不能为空");}Role role = roleService.getRoleById(id);roleService.deleteRole(role);return ResponseEntity.success("操作成功");}@RequiresPermissions("sys:role:delete")@PostMapping("deleteSome")@ResponseBody@SysLog("多选删除角色数据")public ResponseEntity deleteSome(@RequestBody List<Role> roles){if(roles == null || roles.size()==0){return ResponseEntity.failure("请选择需要删除的角色");}for (Role r : roles){roleService.deleteRole(r);}return ResponseEntity.success("操作成功");}
}

登录管理控制层:

@Controller
public class LonginController {private final static Logger LOGGER = LoggerFactory.getLogger(LonginController.class);public final static String LOGIN_TYPE = "loginType";@Autowired@Qualifier("captchaProducer")DefaultKaptcha captchaProducer;@AutowiredUserService userService;@AutowiredMenuService menuService;public enum LoginTypeEnum {PAGE,ADMIN;}//    @RequestMapping(value = "")
//    public String welcome() {
//        return "redirect:admin";
//    }@RequestMapping(value = {"admin","admin/index"})public String adminIndex(RedirectAttributes attributes, ModelMap map) {Subject s = SecurityUtils.getSubject();attributes.addFlashAttribute(LOGIN_TYPE, LoginTypeEnum.ADMIN);if(s.isAuthenticated()) {return "redirect:index";}return "redirect:toLogin";}@RequestMapping(value = "toLogin")public String adminToLogin(HttpSession session, @ModelAttribute(LOGIN_TYPE) String loginType) {if(StringUtils.isBlank(loginType)) {LoginTypeEnum attribute = (LoginTypeEnum) session.getAttribute(LOGIN_TYPE);loginType = attribute == null ? loginType : attribute.name();}if(LoginTypeEnum.ADMIN.name().equals(loginType)) {session.setAttribute(LOGIN_TYPE,LoginTypeEnum.ADMIN);return "admin/login";}else {session.setAttribute(LOGIN_TYPE,LoginTypeEnum.PAGE);return "login";}}@RequestMapping(value = "index")public String index(HttpSession session, @ModelAttribute(LOGIN_TYPE) String loginType) {if(StringUtils.isBlank(loginType)) {LoginTypeEnum attribute = (LoginTypeEnum) session.getAttribute(LOGIN_TYPE);loginType = attribute == null ? loginType : attribute.name();}if(LoginTypeEnum.ADMIN.name().equals(loginType)) {AuthRealm.ShiroUser principal = (AuthRealm.ShiroUser) SecurityUtils.getSubject().getPrincipal();session.setAttribute("icon",StringUtils.isBlank(principal.getIcon()) ? "/static/admin/img/face.jpg" : principal.getIcon());return "admin/index";}else {AuthRealm.ShiroUser principal = (AuthRealm.ShiroUser) SecurityUtils.getSubject().getPrincipal();return "admin/index";}}@RequestMapping("/getCaptcha")public void getCaptcha(HttpServletRequest request, HttpServletResponse response) throws IOException {//设置页面不缓存response.setHeader("Pragma", "no-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);String verifyCode = captchaProducer.createText();//将验证码放到HttpSession里面request.getSession().setAttribute(Constants.VALIDATE_CODE, verifyCode);LOGGER.info("本次生成的验证码为[" + verifyCode + "],已存放到HttpSession中");//设置输出的内容的类型为JPEG图像response.setContentType("image/jpeg");BufferedImage bufferedImage = captchaProducer.createImage(verifyCode);//写给浏览器ImageIO.write(bufferedImage, "JPEG", response.getOutputStream());}@PostMapping("admin/login")@SysLog("用户登录")@ResponseBodypublic ResponseEntity adminLogin(HttpServletRequest request) {String username = request.getParameter("username");String password = request.getParameter("password");String rememberMe = request.getParameter("rememberMe");String code = request.getParameter("code");String driver = request.getParameter("driver");String errorMsg = null;//判断登陆设备if(StringUtils.isBlank(driver)){//电脑登录if(StringUtils.isBlank(username) || StringUtils.isBlank(password)){return ResponseEntity.failure("用户名或者密码不能为空");}else if(StringUtils.isBlank(code)){return ResponseEntity.failure("验证码不能为空");}HttpSession session = request.getSession();if(session == null){return ResponseEntity.failure("session超时");}String trueCode = (String)session.getAttribute(Constants.VALIDATE_CODE);if(StringUtils.isBlank(trueCode)){return ResponseEntity.failure("验证码超时");}if(StringUtils.isBlank(code) || !trueCode.toLowerCase().equals(code.toLowerCase())){return ResponseEntity.failure("验证码错误");}else {Subject user = SecurityUtils.getSubject();UsernamePasswordToken token = new UsernamePasswordToken(username,password,Boolean.valueOf(rememberMe));try {user.login(token);}catch (IncorrectCredentialsException e) {errorMsg = "用户名密码错误!";}catch (UnknownAccountException e) {errorMsg = "账户不存在!";}catch (LockedAccountException e) {errorMsg = "账户已被锁定!";}catch (UserTypeAccountException e) {errorMsg = "账户不是管理用户!";}if(StringUtils.isBlank(errorMsg)) {ResponseEntity responseEntity = new ResponseEntity();responseEntity.setSuccess(Boolean.TRUE);responseEntity.setAny("url","index");return responseEntity;}else {return ResponseEntity.failure(errorMsg);}}}else{//小程序或APP登录if(StringUtils.isBlank(username) || StringUtils.isBlank(password)){return ResponseEntity.failure("用户名或者密码不能为空");}Subject user = SecurityUtils.getSubject();UsernamePasswordToken token = new UsernamePasswordToken(username,password,Boolean.valueOf(rememberMe));try {user.login(token);}catch (IncorrectCredentialsException e) {errorMsg = "用户名或密码错误!";}catch (UnknownAccountException e) {errorMsg = "账户不存在!";}catch (LockedAccountException e) {errorMsg = "账户已被锁定!";}catch (UserTypeAccountException e) {errorMsg = "账户不是管理用户!";}if(StringUtils.isBlank(errorMsg)) {ResponseEntity responseEntity = new ResponseEntity();responseEntity.setSuccess(Boolean.TRUE);responseEntity.setAny("url","index");return responseEntity;}else {return ResponseEntity.failure(errorMsg);}}}@RequestMapping("admin/main")public String main(ModelMap map){return "admin/main";}/**** 获得用户所拥有的菜单列表* @return*/@RequestMapping("/admin/user/getUserMenu")@ResponseBodypublic List<ShowMenuVo> getUserMenu(){String userId = MySysUser.id();List<ShowMenuVo> list = menuService.getShowMenuByUser(userId);return list;}@RequestMapping("systemLogout")@SysLog("退出系统")public String logOut(){SecurityUtils.getSubject().logout();return "redirect:home";}}

源码获取:博客首页 "资源" 里下载!

Java项目:销售团队后台管理系统(java+SpringBoot+FreeMarker+bootstrap+echarts+mysql)相关推荐

  1. Java项目:网上书城+后台管理系统(java+jsp+servlert+mysql+ajax)

    源码获取:博客首页 "资源" 里下载! 一.项目简述(附带IW文档) 功能: 前台: * 用户模块 * 分类模块 * 图书模块 * 购物车模块 * 订单模块 后台: * 管理员模块 ...

  2. Java项目:CRM客户关系管理系统(java+Springboot+maven+mysql)

    源码获取:博客首页 "资源" 里下载! Springboot项目CRM客户关系管理系统: 系统实现了CRM客户关系系统的基本功能,主要有看板(当月参与的业务机会.当月转化情况.将要 ...

  3. Java项目:中小医院信息管理系统(java+Springboot+ssm+mysql+maven+jsp)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括:实现了挂号收费,门诊管理,划价收 费,药房取药,体检管理,药房管理,系统维护等各个模块功能,非常不错. 二.项 ...

  4. Java项目:快递取件管理系统(java+SSM+JSP+jQuery+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 车险理赔管理系统源码,分为两个角色,一个管理员,一个普通用户 主要功能说明: 管理员角色包含以下功能:管理员登录,个人资料修改 ...

  5. Java项目:教务处学生成绩管理系统(java+JSP+bootstrap+servlet+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目包含管理员.教师.学生三种角色: 用户角色包含以下功能: 修改密码,查看自己的信息,查看自己的成绩,登录界面等功能. 管 ...

  6. Java项目:在线电子商城管理系统(java+SpringBoot+Thymeleaf+bootstrap+jQ+layui+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 本项目分为管理员与普通用户两种角色, 管理员角色包含以下功能: 发货,后台登录后首页,商品管理,商城类别增删改查,用户管理,管理员 ...

  7. Java项目:学生在线考试管理系统(java+SpringBoot+Thymleaf+BootStrap+Html+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 学生在线考试管理系统,分为管理员与老师.学生三种角色: 教师/管理员主要功能: 1. 学生管理:查看所有学生的基本信息,管理员则还 ...

  8. Java项目:疫情人员流动管理系统(java+JSP+SSM+Springboot+maven+Mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统主要实现的功能有: 社区疫情流动人员管理系统,住户管理,出入管理,访客管理,体温录入,高风险警示等等. 二.项目运行 环 ...

  9. Java项目:嘟嘟图片展览馆管理系统(java+Springboot+SpringMVC+JPA+Jsp+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclisp ...

最新文章

  1. SpringMVC(二八) 重定向
  2. Java高并发编程(二):Java并发机制的底层实现机制
  3. 泛微e9隐藏明细表_泛微E8 隐藏行、明细表
  4. 图说开源许可协议:GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
  5. TCP 三次握手 和 四次挥手
  6. yum报错[Errno 256] No more mirrors to try.
  7. Jexus支持HTTPS协议
  8. php网站点击按钮更新程序,php页面 点击按钮执行更新操作
  9. 深度学习自学(三十七):基于用户自定义要求3D房间自动设计研究
  10. #单机只打开一次窗口_单窗口单IP和单机单IP哪个好?
  11. 网络协议篇之CWMP协议(三)—— RPC方法
  12. 计算机网络按拓扑结构可以划分为,计算机网络按拓扑结构分为哪些
  13. Bootstrap(三)可视化布局系统
  14. 一个理工女宝妈和西牧乳业奶粉的故事
  15. nginx根据url中的参数进行转发
  16. vanilla_使用Vanilla JavaScript的快速简单的搜索过滤器
  17. 如何使用IDM下载电子书
  18. Silverlight用户体验优化
  19. EOS系列 - EOSIO 跨链通信
  20. 将本地文件上传到GitLab中,遇到The authenticity of host ‘gitlab.*.org (192.168.*.*)‘ can‘t be established.问题解决

热门文章

  1. medoo连接mysql_Medoo初始化及数据库配置方法
  2. 快速入门 | 篇十一: 正运动技术运动控制器中断的应用​
  3. python3 列表 元组 字典 文件 编码转码
  4. 简单进制转换(十、二、八、十六)
  5. php session unset,php使用unset()函数删除/释放session变量
  6. 第九届中国数据库技术大会(DTCC2018),我来了,你在哪儿?
  7. 计算机一级证二级证是什么样的,计算机一级证和二级证有什么区别?
  8. 电脑自学修理排除故障
  9. 实战:垃圾短信分类检测
  10. oracle JDK 和 open jdk 的关系与区别 ?