SSM框架重构达内NETCTOSS项目——(2)登录功能

实现NETCTOSS登录功能

  1. 创建用户表:
    • DROP TABLE IF EXISTS `admin_info`;
      create table admin_info(
      	admin_id		int not null auto_increment,
      	admin_code		varchar(30) not null,
      	password		varchar(30) not null,
      	name			varchar(30) not null,
      	telephone		varchar(15),
      	email			varchar(50),
      	enrolldate		datetime default now() not null,
      	primary key (admin_id)
      );
      
      insert into 
      	admin_info 
      values 
      	(null,'caocao','123','CaoCao','123456789','[email protected]',default);
      
      

  2. 打开登录页面:
    1. 创建web.LoginController:

      • package web;
        
        @Controller
        @RequestMapping("/login")
        public class LoginController {
        	
        	@Resource
        	private LoginService loginService;
        	
        	@RequestMapping("/toLogin.do")
        	public String toLogin() {
        		return "main/login";
        	}
        }
    2. 创建登录页面

      • 导入项目的图片和样式文件
      • 创建登录页面:WEB-INF/jsp/main/login.jsp
        • <%@ page language="java" contentType="text/html; charset=UTF-8"
              pageEncoding="UTF-8"%>
          
          
          
          
          登录
          
          
          
          
          
          
          

      • 测试打开登录页面:
        • SSM框架重构达内NETCTOSS项目——(2)登录功能_第1张图片
  3. 实现登录验证:
    • 创建实体类Admin
      • package entity;
        public class Admin implements Serializable {
        	
        	private Integer adminId;
        	private String adminCode;
        	private String password;
        	private String name;
        	private String telephone;
        	private String email;
        	private Timestamp enrolldate;
        }
      • Generate Getters and Setters
      • Generate hashCode() and equals()
      • Generate toString()
    • (添加Mapper接口)数据访问接口:AdminDao:
      • package dao;
        
        import entity.Admin;
        
        public interface AdminDao {
        	
        	Admin findByCode(String adminCode);
        	
        }

    • 在Mapper(映射文件)配置添加SQL, AdminMapper.xml:
      • 
        	
        	
        	
        

    • 定义业务接口(声明软件业务功能方法 )LoginService:定义登陆功能方法:
      • 校验管理员账号和密码:
      • public interface LoginService {
        	
        	/**
        	 * 校验管理员账号和密码
        	 * @param adminCode	账号
        	 * @param password	密码
        	 * @return		验证通过时返回管理员对象
        	 * @throws AdminCodeException
        	 * @throws PasswordException
        	 */
        	Admin login(String adminCode, String password) throws AdminCodeException, PasswordException;
        	
        }

    • 创建异常类AdminCodeException,PasswordException:
      • public class AdminCodeException extends RuntimeException {}
      • public class PasswordException extends RuntimeException {}
    • 创建登录业务组件LoginServiceImpl
      • @Service("LoginService")
        public class LoginServiceImpl implements LoginService {
        
        	@Resource
        	private AdminDao adminDao;
        	
        	public Admin login(String adminCode, String password) throws AdminCodeException, PasswordException {
        		
        		Admin admin = adminDao.findByCode(adminCode);
        		if(admin==null) {
        			throw new AdminCodeException("账号错误");
        		} else if(!admin.getPassword().equals(password)) {
        			throw new PasswordException("密码错误");
        		} else {
        			return admin;
        		}
        		
        	}
        
        }

    • 在LoginController中增加登录验证的方法:
      • @RequestMapping("/toIndex.do")
        	public String toIndex() {
                return "main/index";
            }
        	
        	@RequestMapping("/checkLogin.do")
        	public String checkLogin(String adminCode, String password, ModelMap model, HttpSession session){
        		
        		try {
        			Admin admin = loginService.login(adminCode, password);
        			session.setAttribute("admin", admin);
        		} catch (AdminCodeException e) {
        			model.addAttribute("message", e.getMessage());
                    model.addAttribute("adminCode", adminCode);
                    model.addAttribute("password", password);
                    return "main/login";
        		} catch (PasswordException e) {
                    model.addAttribute("message", e.getMessage());
                    model.addAttribute("adminCode", adminCode);
                    model.addAttribute("password", password);
                    return "main/login";
        		}
        		
        		return "redirect:toIndex.do";
        		
        	}
        

    • 修改登录页面:
      • SSM框架重构达内NETCTOSS项目——(2)登录功能_第2张图片
    • 测试打开登录页面(验证账号/密码功能)
      • SSM框架重构达内NETCTOSS项目——(2)登录功能_第3张图片
      • SSM框架重构达内NETCTOSS项目——(2)登录功能_第4张图片
    • 创建netctoss主页:WEB-INF/jsp/main/index.jsp
      • <%@page pageEncoding="utf-8"%>
        <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
        
        
        
        
        主页
        
        
        
        
        
        

    • 测试打开登录页面(账号密码正确):重定向到首页
      • SSM框架重构达内NETCTOSS项目——(2)登录功能_第5张图片

你可能感兴趣的:(学习笔记)