• 会议管理系统SSM记录(二)



    目录:

    (1)整合Freemarker

    (2)用户登录

    (3)提取头部

    (4)提取菜单抽取


    (1)整合Freemarker

    在pom.xml中加入Freemark依赖:

    创建freemark-var.properties: 

     声明变量,在freemark中可能会用到这个变量:

    在spring-servlet.xml中配置视图解析器

     

    创建ftl页面:

    修改HelloController:

     

    以上SSM+Freemark架构已经搭建好了 

     (2)用户登录

    首先把静态文件拷贝到目录下:

    把静态资源放在webapp下面,那么在mvc:配置文件spring-servlet.xml进行放行 

     把login.html修改后缀为ftl:

    创建LoginController:

    就可以访问到登录页面: 

    创建Employee实体类:

    创建EmployeeMapper接口,和 EmployeeMapper.xml:

     创建EmployeeService:

     在LoginController:书写登录请求:

    登录成功时重定向,登录失败服务端跳转,返回的String,既可以服务端跳转既可以重定向

    注入EmployeeService:

    1. @Autowired
    2. private EmployeeService employeeService;
    1. //登录请求
    2. @PostMapping("/doLogin")
    3. public String doLogin(String username, String password, Model model, HttpSession httpSession){
    4. Employee employee = employeeService.doLogin(username,password);
    5. if (employee == null){
    6. model.addAttribute("error","用户名或密码错误,请重新登录");
    7. return "forward:/";
    8. }else {
    9. if (employee.getStatus() == 0){
    10. model.addAttribute("error","用户待审核");
    11. return "forward:/";
    12. }else if (employee.getStatus() == 2){
    13. model.addAttribute("error","审核未通过");
    14. return "forward:/";
    15. }else {
    16. httpSession.setAttribute("currentuser",employee);//存入session
    17. return "redirect:/notifications";//跳转到登录成功的页面
    18. }
    19. }
    20. }

     Controller调用EmployeeService:书写EmployeeService方法:

    注入Mapper:

    1. @Autowired
    2. private EmployeeMapper employeeMapper;

     EmployeeService调用EmployeeMapper接口方法

    1. //登录请求
    2. public Employee doLogin(String username, String password) {
    3. Employee employee = employeeMapper.loadEmpByUsername(username);//根据用户姓名查询方法
    4. if (employee == null || !employee.getPassword().equals(password)){
    5. return null;
    6. }
    7. return employee;
    8. }

     在EmployeeMapper中创建登录方法:

    1. //根据用户姓名查询方法
    2. Employee loadEmpByUsername(String username);

    在EmployeeMapper.xml中书写sql语句:注意di要和接口方法对应

    1. <!--根据用户姓名查询方法-->
    2. <select id="loadEmpByUsername" resultType="com.xzb.meeting.model.Employee">
    3. select *
    4. from employee
    5. where username = #{username}
    6. </select>

    在Login.ftl修改:给form加action:写controller方法的请求方式

     再加一个失败的提示信息:

     注意表单的要有name属性,在controller来接收这个输入的内容的:

    输入错误的密码: 

     

    输入一个未通过的用户:

     

    输入正确的密码:登录成功跳转到notifications,这里只是还未写这个页面,所以报404

     我们把用户信息存入到session里面去

    (3)提取头部

    创建NoatificationsController:来进行跳转到登录页面

     修改后缀为ftl:

     

    修改notifications页面:

     

     

    所有页面都有这个可以把这些提取出来,提取成一个ftl页面。top.ftl

     

     

    然后在notifications.ftl中引入这个页面:

     

    所有页面都要更改成top.ftl:

     

     

     

     刷新一下:

    登录成功之后:

     

    可以先把所有的html页面修改后缀为ftl:

     

    在每个页面上面再更改top.ftl 

    (4)提取菜单抽取

    添加一个权限判断的,角色为管理员2的才显示这个菜单:

    没有登录看到的菜单:

     

    在每个页面加入左侧菜单,需要把它提取出来:leftMenu.ftl

     

    leftMenu.ftl:这里是最终的代码,添加了新的菜单栏

    1. <div class="page-sidebar">
    2. <div class="sidebar-menugroup">
    3. <div class="sidebar-grouptitle">个人中心</div>
    4. <ul class="sidebar-menu">
    5. <li class="sidebar-menuitem"><a href="/notifications">最新通知</a></li>
    6. <li class="sidebar-menuitem active"><a href="/mybookings">我的预定</a></li>
    7. <li class="sidebar-menuitem"><a href="/mymeetings">我的会议</a></li>
    8. <li class="sidebar-menuitem"><a href="/changepassword">修改密码</a></li>
    9. </ul>
    10. </div>
    11. <div class="sidebar-menugroup">
    12. <div class="sidebar-grouptitle">人员管理</div>
    13. <ul class="sidebar-menu">
    14. <li class="sidebar-menuitem"><a href="/register">员工注册</a></li>
    15. <#if currentuser?? && (currentuser.role==2)>
    16. <li class="sidebar-menuitem"><a href="/admin/approveaccount">注册审批</a></li>
    17. <li class="sidebar-menuitem"><a href="/admin/searchemployees?status=1">搜索员工</a></li>
    18. </#if>
    19. </ul>
    20. </div>
    21. <div class="sidebar-menugroup">
    22. <div class="sidebar-grouptitle">部门管理</div>
    23. <ul class="sidebar-menu">
    24. <#if currentuser?? && (currentuser.role==2)>
    25. <li class="sidebar-menuitem"><a href="/admin/departments">部门管理</a></li>
    26. </#if>
    27. </ul>
    28. </div>
    29. <div class="sidebar-menugroup">
    30. <div class="sidebar-grouptitle">会议室管理</div>
    31. <ul class="sidebar-menu">
    32. <#if currentuser?? && (currentuser.role==2)>
    33. <li class="sidebar-menuitem"><a href="/admin/addmeetingroom">添加会议室</a></li>
    34. <li class="sidebar-menuitem"><a href="/meetingrooms">查看会议室</a></li>
    35. </#if>
    36. </ul>
    37. </div>
    38. <div class="sidebar-menugroup">
    39. <div class="sidebar-grouptitle">会议预定</div>
    40. <ul class="sidebar-menu">
    41. <li class="sidebar-menuitem"><a href="/bookmeeting">线上预定会议</a></li>
    42. <li class="sidebar-menuitem"><a href="/bookmeeting2">线下预定会议</a></li>
    43. <li class="sidebar-menuitem"><a href="/searchmeetings">搜索会议</a></li>
    44. </ul>
    45. </div>
    46. </div>

    然后再在每个页面进行引入菜单栏:

     

     

     

      管理员登录看到就多了:

    左侧菜单:a标签添href以后添加对应的controller进行访问就可以了:

     

     

  • 相关阅读:
    猿创征文 | linux的gdb 和g++
    实现分片上传、断点续传、秒传 (JS+NodeJS)(TypeScript)
    CentOS中使用Docker来部署Postgresql
    Hadoop(三)通过C#/python实现Hadoop MapReduce
    【iOS自动化测试】第二章:环境安装
    Vue 中简易封装网络请求(Axios),包含请求拦截器和响应拦截器
    Springboot之邮件发送(内附源码)
    自制操作系统日志——第二十二天
    DGIOT-Modbus-RTU控制指令05、06的配置与下发
    版本控制系统-SVN
  • 原文地址:https://blog.csdn.net/dengfengling999/article/details/127991602