• 会议管理系统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进行访问就可以了:

     

     

  • 相关阅读:
    十五章I/O(输入/输出)总结
    AI支持的自然语言编程
    salesforce是什么
    SQL数据分析极简入门——SQL简介与基础知识
    TI Sitara系列 AM64x开发板——TSN通信测试手册(下)
    微机原理与接口技术-第八章常用接口技术
    Ubuntu平铺左、右、上、下、1/2、1/4窗口(脚本)
    23、基于51单片机的三路超声波测距系统(Proteus仿真+程序+设计报告)
    【C++】多态
    使用Python编写高效程序
  • 原文地址:https://blog.csdn.net/dengfengling999/article/details/127991602