您现在的位置是:首页 > 正文

Java项目:企业官方平台(java+SSM+HTML+JavaScript+jsp+mysql)

2024-02-01 04:06:46阅读 1

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

项目介绍

管理员角色包含以下功能:
登录,首页,写公司资讯,评论审核,公司资讯信息管理,公司资讯类别信息管理,添加导航,导航信息管理,评论信息管理,修改个人信息,友情链接管理,修改密码,退出系统等功能。
用户角色包含以下功能:
首页,招聘信息,产品介绍,联系我们,关于我们,后台地址,公司荣誉,最新公司资讯,技术支持等功能。


环境需要

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版本;


技术栈

1. 后端:Spring+SpringMVC+Mybatis
2. 前端:HTML+CSS+JavaScript+jsp


使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/ 登录

 

 

 

 

 

 

 

用户管理控制层:

@Controller
@RequestMapping("/user")
public class UserController extends BaseController{

    private String prefix = "system/user/";

    @Autowired
    IUserService iUserService;
    @Autowired
    IRoleService iRoleService;
    @Autowired
    IDeptService iDeptService;
    @Autowired
    IPositionService iPositionService;

    @Autowired
    private SysPasswordService passwordService;



    /**
     *
     * @描述 跳转到用户页面
     *
     * @date 2018/9/16 10:54
     */
    @RequestMapping("/tolist")
    @RequiresPermissions("user:list")
    public String toUserList()
    {
        return prefix + "user";
    }


    /**
     * @描述 用户数据
     * @date 2018/9/15 12:30
     */
    @RequestMapping("/tableList")
    @ResponseBody
    public TableDataInfo list(User user)
    {
        startPage();
        List<User> users = iUserService.selectByUser(user);

        return getDataTable(users);
    }


    /**
     * 编辑用户 system/user/edit/20180914-1
     */
    @RequiresPermissions("user:update")
    @RequestMapping("/edit/{userId}")
    public String edit(@PathVariable("userId") String userId, Model model)
    {
        // 个人信息
        User user = iUserService.selectByPrimaryKey(userId);
        Map<String, Object> role_post_dept = getRole_Post_Dept();
        model.addAttribute("depts", role_post_dept.get("dept"));
        model.addAttribute("roles", role_post_dept.get("role"));
        model.addAttribute("positions", role_post_dept.get("position"));
        model.addAttribute("user", user);
        return prefix + "edit";
    }

    /**
     *
     * @描述 保存用户
     *
     * @date 2018/9/15 18:53
     */
    @PostMapping("/editSave")
    @RequiresPermissions("user:update")
    @Operlog(modal = "用户管理", descr = "修改用户信息")
    @ResponseBody
    public AjaxResult save(User user)
    {
        if (StringUtils.isNotNull(user.getUid()) && User.isBoss(user.getUid()))
        {
            return error("不允许修改管理员用户");
        }
        if(user.getPwd()!=null){
            user.setSalt(ShiroUtils.randomSalt());
            SimpleHash md5 = new SimpleHash("MD5", user.getPwd(), user.getSalt(), 1024);
            user.setPwd(md5.toHex());
        }
        return result(iUserService.updateByPrimaryKeySelective(user));
    }


    /**
     * @描述 添加用户页面
     * @date 2018/9/15 18:46
     */
    @RequestMapping("/toAdd")
    @RequiresPermissions("user:add")
    public String toaddUser(Model model)
    {
        Map<String, Object> role_post_dept = getRole_Post_Dept();
        model.addAttribute("depts", role_post_dept.get("dept"));
        model.addAttribute("roles", role_post_dept.get("role"));
        model.addAttribute("positions", role_post_dept.get("position"));
        return prefix + "add";
    }

    /**
     *
     * @描述 添加用户
     *
     * @date 2018/9/15 20:40
     */

    @RequestMapping("/addSave")
    @RequiresPermissions("user:add")
    @Operlog(modal = "用户管理", descr = "添加用户")
    @ResponseBody
    public AjaxResult addUser(User user)
    {
        user.setSalt(ShiroUtils.randomSalt());
        SimpleHash md5 = new SimpleHash("MD5", user.getPwd(), user.getSalt(), 1024);
        user.setPwd(md5.toHex());
        user.setAvatar(CsEnum.avatar.USER_AVATAR.getValue());
        user.setCreateTime(new Date());
        return result(iUserService.insertSelective(user));
    }

    /**
     *
     * @描述 批量删除
     *
     * @date 2018/9/16 9:31
     */
    @RequestMapping("/del")
    @RequiresPermissions("user:del")
    @Operlog(modal = "用户模块", descr = "删除用户")
    @ResponseBody
    public AjaxResult delByUserIds(String[] ids)
    {
        try
        {
            int i = iUserService.deleteByPrimaryKeys(ids);
        }
        catch (Exception e)
        {
            return error(e.getMessage());
        }
        return success();
    }

    /**
     *
     * @描述 编辑密码修改页面
     *
     * @date 2018/9/16 10:25
     */
    @RequestMapping("/resetPwd/{userId}")
    @RequiresPermissions("user:update")
    public String editPwd(@PathVariable("userId") String id, Model model)
    {
        model.addAttribute("uid", id);
        return prefix + "resetPwd";
    }


    /**
     *
     * @描述 密码修改
     *
     * @date 2018/9/16 10:42
     */

    @RequestMapping("/resetPwd")
    @RequiresPermissions("user:update")
    @Operlog(modal = "用户模块", descr = "修改密码")
    @ResponseBody
    public AjaxResult resetPwd(User user)
    {
        return result(iUserService.resrtPwd(user));
    }

    /**
     * 校验手机号码
     */
    @PostMapping("/checkPhoneUnique")
    @ResponseBody
    public String checkPhoneUnique(User user)
    {
        String uniqueFlag = "0";
        if (user != null)
        {
            uniqueFlag = iUserService.checkPhoneUnique(user);
        }
        return uniqueFlag;
    }

    /**
     * 校验email邮箱
     */
    @PostMapping("/checkEmailUnique")
    @ResponseBody
    public String checkEmailUnique(User user)
    {
        String uniqueFlag = "0";
        if (user != null)
        {
            uniqueFlag = iUserService.checkEmailUnique(user);
        }
        return uniqueFlag;
    }


    /**
     *
     * @描述: 校验登录名唯一性
     *
     * @params:
     * @return:
     * @date: 2018/10/2 17:06
     */
    @PostMapping("/checkLoginNameUnique")
    @ResponseBody
    public String checkLoginNameUnique(User user)
    {
        String uniqueFlag = "0";
        if (user != null)
        {
            uniqueFlag = iUserService.checkLoginNameUnique(user);
        }
        return uniqueFlag;
    }


    public Map<String, Object> getRole_Post_Dept()
    {
        Map<String, Object> map = new HashMap<>();
//        角色
        List<Role> roles = iRoleService.selectRoleList(new Role());
//        部门信息
        List<Dept> depts = iDeptService.selectDeptList(new Dept());
//        岗位
        List<Position> positions = iPositionService.selectPositionList(new Position());
        map.put("role", roles);
        map.put("dept", depts);
        map.put("position", positions);

        return map;
    }


    /**
     * 用户个人信息查看页面
     */
    @RequestMapping("/myMsg")
    public String ToMyMsg(Model model, HttpServletRequest request)
    {
        User user = iUserService.selectByPrimaryKey(getUserId());
        model.addAttribute("user", user);
        model.addAttribute("loginIp", HttpHeaderUtil.getIpAddr(request));
        return prefix + "profile/msg";
    }


    /**
     * 密码修改页面
     */
    @RequestMapping("/resetMyPwd")
    public String toResetPwd(Model model)
    {
        User user = iUserService.selectByPrimaryKey(getUserId());
        model.addAttribute("user", user);
        return prefix + "profile/resetPwd";
    }

    /**
     * 密码修改保存
     */
    @RequestMapping("/updateMyPwdSave")
    @ResponseBody
    @RequiresPermissions("user:update")
    @Operlog(modal = "个人信息", descr = "修改密码")
    public AjaxResult updateMyPwdSave(String password)
    {
        User user = new User();
        user.setSalt(ShiroUtils.randomSalt());
        SimpleHash md5 = new SimpleHash("MD5", password, user.getSalt(), 1024);
        user.setPwd(md5.toHex());
        user.setUid(getUserId());
        int i = iUserService.updateByPrimaryKeySelective(user);
        if (i > 0)
        {
            //更新shiro中的信息
            ShiroUtils.reloadUser(iUserService.selectByPrimaryKey(getUserId()));
            return success();
        }
        return error();
    }

    /**
     * 编辑用户头像修改
     */
    @RequestMapping("/updateAvatar")
    public String toupdateAvatar(Model model)
    {
        model.addAttribute("user", getUser());
        return prefix + "profile/avatar";
    }

    /**
     * 修改保存用户头像
     */
    @RequestMapping("/updateAvatarSave")
    @RequiresPermissions("user:update")
    @Operlog(modal = "个人信息", descr = "修改头像")
    @ResponseBody
    public AjaxResult toupdateAvatar(MultipartFile file)
    {
        try
        {
            String imgPath = UploadFile.uploadUserImg(file);
            if (StringUtils.isEmpty(imgPath))
            {
                return error("图片上传失败,稍后再试!");
            }

            User user = new User();
            user.setUid(getUserId());
            user.setAvatar(imgPath);
            int i = iUserService.updateByPrimaryKeySelective(user);
            if (i > 0)
            {
                ShiroUtils.reloadUser(iUserService.selectByPrimaryKey(getUserId()));
            }
            return result(i);
        }
        catch (IOException e)
        {
            return error();
        }
        catch (FileSizeException e)
        {
            //文件过大
            return error(e.getMsg());
        }
        catch (FileNameLengthException e)
        {
            //文件名字超长
            return error(e.getMsg());
        }
    }


    /**
     * 校验密码和原来密码是否相同
     */
    @RequestMapping("/checkPassword")
    @ResponseBody
    public boolean checkPassword(String password)
    {
        //加密后与数据库密码比较
        User user = getUser();
        SimpleHash md5 = new SimpleHash("MD5", password, user.getSalt(), 1024);
        String oldPassword = md5.toHex();
        String pwd = getPwd();
        if (pwd.equals(oldPassword))
        {
            return true;
        }
        return false;
    }


}

角色管理控制层:

@Controller
@RequestMapping("/role")
public class RoleController extends BaseController{
    private String prefix = "system/role/";


    @Autowired
    IUserService iUserService;

    @Autowired
    IRoleService iRoleService;

    @Autowired
    IPermissionService iPermissionService;

    /**
     *
     * @描述 页面跳转
     *
     * @date 2018/9/16 10:59
     */
    @RequestMapping("/tolist")
    @RequiresPermissions("role:list")
    public String tolist()
    {
        return prefix + "role";
    }


    /**
     *
     * @描述 ajax请求所有
     *
     * @date 2018/9/16 10:48
     */
    @RequestMapping("/ajaxlist")
    @ResponseBody
    public List<Role> list(Role role)
    {
        List<Role> roles = iRoleService.selectRoleList(role);
        return roles;
    }

    /**
     *
     * @描述 列表
     *
     * @date 2018/9/16 10:52
     */
    @RequestMapping("/tableList")
    @ResponseBody
    public TableDataInfo listPag(Role role)
    {
        //开启分页
        startPage();
        List<Role> roles = iRoleService.selectRoleList(role);
        return getDataTable(roles);
    }


    /**
     *
     * @描述 新增页面
     *
     * @date 2018/9/16 11:37
     */
    @RequestMapping("/toAdd")
    @RequiresPermissions("role:add")
    public String toAdd(Model model)
    {
        return prefix + "add";
    }


    /**
     *
     * @描述 批量删除
     *
     * @date 2018/9/16 11:53
     */
    @RequestMapping("/del")
    @RequiresPermissions("role:del")
    @Operlog(modal = "角色管理",descr = "删除角色")
    @ResponseBody
    public AjaxResult del(Integer[] ids)
    {
        try
        {
            iRoleService.deleteByPrimaryKeys(ids);
        }
        catch (Exception e)
        {
            return error(e.getMessage());
        }
        return success();
    }


    /**
     *
     * @描述 添加保存
     *
     * @date 2018/9/16 11:54
     */

    @RequestMapping("/addSave")
    @RequiresPermissions("role:update")
    @Operlog(modal = "角色管理",descr = "添加角色")
    @ResponseBody
    public AjaxResult addRole(Role role, Integer[] ids)
    {
        role.setCreateTime(new Date());
        int insert = 0;
        try
        {
            if (StringUtils.isEmpty(ids))
            {
                ids = new Integer[0];
            }
            insert = iRoleService.insert(role, ids);
        }
        catch (Exception e)
        {
            return error(e.getMessage());
        }
        //清空缓存
        ShiroUtils.clearCachedAuthorizationInfo();
        return  result(insert);
    }


    /**
     *
     * @描述: 根据ID 获取u他的所有权限 做回显
     *
     * @params: roleId 角色Id
     * @return:
     * @date: 2018/9/27 14:04
     */
    @RequestMapping("/selectById/{roleId}")
    @ResponseBody
    public Role selectById(@PathVariable("roleId") Integer roleId)
    {
        Role role = iRoleService.selectByPrimaryKey(roleId);
        return role;
    }


    /**
     *
     * @描述 编辑修改页面
     *
     * @date 2018/9/16 14:06
     */
    @RequestMapping("/edit/{id}")
    @RequiresPermissions("role:update")
    public String edit(@PathVariable("id") Integer id, Model model)
    {
        Role role = iRoleService.selectByPrimaryKey(id);
        model.addAttribute("Role", role);
        return prefix + "edit";
    }

    /**
     *
     * @描述 编辑修改权限页面
     *
     * @date 2018/9/16 14:06
     */
    @RequestMapping("/editPower/{id}")
    @RequiresPermissions("role:update")
    public String editPower(@PathVariable("id") Integer id, Model model)
    {
        Role role = iRoleService.selectByPrimaryKey(id);
        model.addAttribute("Role", role);
        return prefix + "editPower";
    }


    /**
     *
     * @描述 修改角色信息保存
     *
     * @date 2018/9/16 16:12
     */
    @RequestMapping("/editSave")
    @RequiresPermissions("role:update")
    @Operlog(modal = "角色管理",descr = "修改角色信息")
    @ResponseBody
    public AjaxResult save(Role role)
    {
        int i = 0;
        try
        {
            i = iRoleService.updateByPrimaryKeySelective(role);
        }
        catch (Exception e)
        {
            return error(e.getMessage());
        }
        return result(i);
    }


    /**
     *
     * @描述 修改角色权限信息保存
     *
     * @date 2018/9/16 16:12
     */
    @RequestMapping("/editPowerSave")
    @RequiresPermissions("role:update")
    @Operlog(modal = "角色管理",descr = "修改角色权限")
    @ResponseBody
    public AjaxResult editPowerSave(Role role, Integer[] ids)
    {
        int i = 0;
        try
        {
            if (StringUtils.isEmpty(ids))
            {
                ids = new Integer[0];
            }
            i = iRoleService.updateByPrimaryKeyPowerSelective(role, ids);
        }
        catch (Exception e)
        {
            return error(e.getMessage());
        }
        //清空缓存
        ShiroUtils.clearCachedAuthorizationInfo();
        //如果用户正在修改的角色id 是当前用户的角色id 则刷新 subject的User信息
        if (role.getRoleId().equals(getRoleId()))
        {
            ShiroUtils.reloadUser(iUserService.selectByPrimaryKey(getUserId()));
        }
        return result(i);
    }


    /**
     * 校验名称唯一
     */
    @PostMapping("/checkRoleNameUnique")
    @ResponseBody
    public String checkDeptNameUnique(Role role)
    {
        String uniqueFlag = "0";
        if (role != null)
        {
            uniqueFlag = iRoleService.checkRoleNameUnique(role);
        }
        return uniqueFlag;
    }
}

登录管理控制层:

@RequestMapping("/oa")
public class LoginController extends BaseController{
    private static final Logger logger = LoggerFactory.getLogger(LoginController.class);

    private String prefix = "system/user/";

    @Autowired
    LoginService loginService;


    @Autowired
    IUserService userService;



    /**
     *
     * @描述: 执行登录操作
     *
     * @params: user:用户登录信息;
     *          validateCode:验证码
     * @return:
     * @date: 2018/9/29 21:20
     */
    @RequestMapping("/login")
    @Operlog(descr = "用户登录", modal = "登录模块")
    @ResponseBody
    public AjaxResult Logining(User user, String validateCode, Boolean rememberMe, HttpServletRequest request)
    {
        HttpSession session = ServletUtils.getSession();

        UsernamePasswordToken token = new UsernamePasswordToken(user.getName(), user.getPwd());
        token.setRememberMe(rememberMe);
        Subject subject = SecurityUtils.getSubject();

        //验证用户名和密码 验证码的问题
        try
        {
            loginService.checkLogin(user.getName(), user.getPwd(), validateCode);
        }
        catch (Exception e)
        {
            session.setAttribute(Constants.LOGIN_ERROR, e.getMessage());
            return error(e.getMessage());
        }
        try
        {
            if (!subject.isAuthenticated())
            {
                subject.login(token);
            }
        }
        catch (IncorrectCredentialsException e)
        {
            session.setAttribute(Constants.LOGIN_ERROR,"密码错误");
            return error("密码错误!");
        }
        catch (UnknownAccountException e)
        {
            session.setAttribute(Constants.LOGIN_ERROR,e.getMessage());
            return error(e.getMessage());
        }
        catch (LockedAccountException e)
        {
            session.setAttribute("login",e.getMessage());
            return error(e.getMessage());
        }
        catch (AuthenticationException e)
        {
//            String msg = "用户名或密码错误!";
//            if (!StringUtils.isEmpty(e.getMessage()))
//            {
//                msg = e.getMessage();
//            }
            session.setAttribute(Constants.LOGIN_ERROR,e.getMessage());
            return error("系统异常!");
        }

        return success();
    }


    /**
 s sl
       *
     * @描述: 登录页面
     *
     * @params:
     * @return:
     * @date: 2018/9/29 21:20
     */
    @RequestMapping("/toLogin")
    public String toLogin()
    {
        return "login";
    }


}

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

网站文章

  • GIT与SVN的区别以及SVN转GIT

    公司部分项目开始使用的SVN,需要通过SVN转成GIT,通过查询可以用git的svn命令,不过在培训时候找到一些svn与git的区别:分布式文件系统,每个人都有完整的;分支对SVN来说是完整目录,建立分支需要重新配置,GIT建立分支相当简单;GIT可以离线查看log日志;SVN提交实际提交到中央仓库,而GIT实际提交到本地仓库;GIT没有全局版本号,需要手工打标签;

    2024-02-01 04:06:38
  • 如何调用sdk接口_如何使用 RestSharp 调用 WebAPI 接口

    如何调用sdk接口_如何使用 RestSharp 调用 WebAPI 接口

    REST 是由Representational State Transfer这三个单词前缀合成,这种架构风格在前几年特别流行,Restful API 的行为规范可以参考: https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-design ,通常 RESTful API 返回的格式为常见的 Pl...

    2024-02-01 04:06:09
  • 自由浏览器 android,百度浏览器发布安卓6.1版 趣味视频弹幕吐槽不停

    自由浏览器 android,百度浏览器发布安卓6.1版 趣味视频弹幕吐槽不停

    9月15日,深受安卓用户喜爱的百度浏览器发布了全新Android6.1版本,继续主打趣星球专区功能,号召广大小伙伴们上趣星球哔哔,做个有趣的人。本次推出Android6.1版,不仅在功能方面富有创新,...

    2024-02-01 04:06:03
  • 18春计算机辅助设计作业答案,18春天大《计算机辅助设计与制造》在线作业一二答案.doc...

    (单选题) 1: 在CAD/CAM系统中,CAM是指()。A: 计算机辅助设计B: 计算机辅助制造C: 计算机辅助工程D: 计算机辅助工艺过程设计正确答案: B(单选题) 2: 当前应用得最普遍的CA...

    2024-02-01 04:05:56
  • vue-指令

    vue-指令

    费话不说,想看介绍的上官网https://cn.vuejs.org/v2/,中文官网,相信大家都能看得懂学习vue第一步一定是从指令开始,博主也不例外。1.v-text 向页面展示文本信息<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"...

    2024-02-01 04:05:27
  • 页面生成图片插件 html2canvas

    页面生成图片插件 html2canvas

    2024-02-01 04:05:21
  • ASP.NET 关于FORM认证

    第一部分 如何运用 Form 表单认证? ASP.NET 的安全认证,共有“Windows”“Form”“Passport”“None”四种验证模式。“Windows”与“None”没有起到保护的作用,不推荐使用;“Passport”我又没用过,唉……所以我只好讲讲“Form”认证了。我打算分三部分: 第一部分 —— 怎样实现From 认证; 第二部分 —— Form 认证的实战运...

    2024-02-01 04:05:15
  • el-table表中嵌套过多的el-input卡顿问题,优化方案

    el-table表中嵌套过多的el-input卡顿问题,优化方案

    根据切换不同页码,切割el-table中的数据 进行展示对应的分页的数据,不在分页范围内,不做展示,从而解决了输入卡顿的问题,每次加载和修改都是加载某一个的数据,某一页的数据也就对应总的数据中的一部分...

    2024-02-01 04:04:47
  • 前端 -- 基础 VSCode 工具生成骨架标签新增代码 解释详解

    前端 -- 基础 VSCode 工具生成骨架标签新增代码 解释详解

    生成骨架标签新增代码详解

    2024-02-01 04:04:35
  • vue diff算法

    vue diff算法 在vue中的实现原理,patch函数、patchVnode、updateChildren、sameVnode函数的介绍

    2024-02-01 04:04:27