SSM 登录验证控制

思路:将表单中提交的数据交给登录控制器,先验证是否有错误,如过错误返回错误信息,如果没有这将用户名密码查询数据库获取的对象保存在session中,然后将页面跳转。
控制器:

@Controller
public class LoginController {

    @Resource
    LoginService loginService;

    // 加载登录页面
    @RequestMapping("/login")
    public String loadLogin(){
        return "login";
    }

    // 登录验证
    @RequestMapping(value = "/login/students", method = RequestMethod.POST)
    @ResponseBody
    public Msg getLogin(Login login, HttpSession session){
        // 登录检测,返回登录人员信息的实体类
        Login reLogin = loginService.checkUser(login);
        System.out.println(reLogin);
        if(reLogin == null){
            // 不存在,返回错误,并跳转注册页面
            System.out.println("null");
            return Msg.fail().add("end", "登录信息有误,请确认后在填写!");
        }else{
            // 如果存在则将实体类,保存在session中
            session.setAttribute("userSession", reLogin);
            System.out.println("OK");
            // 返回成功信息
            return Msg.success().add("end", "欢迎"+reLogin.getName()+"登录!");
        }
    }


    @RequestMapping(value = "/logout")
    @ResponseBody
    public Msg logout(HttpSession session){
        // 移除session
        session.removeAttribute("userSession");
        // @SessionAttributes需要清除时,使用SessionStatus.setComplete();来清除。注意,它只清除@SessionAttributes的session,不会清除HttpSession的数据
        sessionStatus.setComplete();
        return Msg.success().add("logout", "退出登录成功");
    }
}

登录form表单:

<form class="form-horizontal" onclick="return false;">
    <div class="form-group">
        <label for="inputName" class="col-sm-2 control-label">姓名</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="inputName" placeholder="请输入你的姓名" name="username">
        </div>
    </div>
    <div class="form-group">
        <label for="inputPassword3" class="col-sm-2 control-label">密码</label>
        <div class="col-sm-10">
            <input type="password" class="form-control" id="inputPassword3" placeholder="请输入密码" name="password">
        </div>
    </div>
    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <button class="btn btn-success" onclick="sub_login()">登录</button>
            <button class="btn btn-primary" type="reset">重置</button>
        </div>
    </div>
</form>

JS登录控制:

function sub_login(){
    var name = $("input[name='username']").val();
    var passwd = $("input[name='password']").val();
    var data = {
        'username':name,
        'password':passwd,
    };
    var contextPath = $('#contextPath').attr('href');
    console.log(data);
    $.ajax({
        url: contextPath+"loginAdmin/admin",
        type: "POST",
        data: data,
        success: function(res){
            console.log(res);
            if(res.code == 100){
                layer.open({
                    content: res.extend.end,
                    yes: function(index, layero){
                        layer.close(index); //如果设定了yes回调,需进行手工关闭
                        location.href=contextPath+"/admin/index";
                    }
                });
            }else{
                layer.msg(res.extend.end);
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            console.log(XMLHttpRequest);
        }
    });
}

基本上就这样了!又不知道的可以留言。

猜你喜欢

转载自blog.csdn.net/yhflyl/article/details/81059697