1 登录页面+表单提交(基于easyui)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>XXX</title>
<%@ include file="/WEB-INF/views/head.jsp"%>
<script>
function submitForm() {
//直接提交
// 对咱们来说,这是一个Ajax请求
$('#loginForm').form('submit', {
url:"/login",
onSubmit: function(){
return $(this).form('validate');
},
//访问成功后的功能
success:function(data){
//{"success":false,"msg":"用户名错误!"}
//Object { success: false, msg: "用户名或者密码错误!" }
var result = JSON.parse(data);
if(result.success){
//访问成功 -> 跳到主页面(Js怎么跳转)
// location:有很多当前页面的位置信息
// JS的BOM【浏览器对象模型】部分
window.location.href ="/main";
}else{
//访问失败 -> 给出提示
$.messager.alert('错误',result.msg);
}
}
});
}
</script>
</head>
<body>
<div align="center" style="margin-top: 100px;">
<div class="easyui-panel" title="用户登陆" style="width: 350px; height: 240px;">
<form id="loginForm" class="easyui-form" method="post">
<table align="center" style="margin-top: 15px;">
<tr height="20">
<td>用户名:</td>
</tr>
<tr height="10">
<td><input name="username" class="easyui-validatebox" required="true" value="admin" /></td>
</tr>
<tr height="20">
<td>密 码:</td>
</tr>
<tr height="10">
<td><input name="password" type="password" class="easyui-validatebox" required="true" value="admin" /></td>
</tr>
<tr height="40">
<td align="center"><a href="javascript:;" class="easyui-linkbutton" onclick="submitForm();">登陆</a> <a
href="javascript:;" class="easyui-linkbutton" onclick="resetForm();">重置</a></td>
</tr>
</table>
</form>
</div>
</div>
</body>
</html>
2 后台的登录支持
- 根据get与post请求访问不同的方法(RESTful风格)
- 返回Ajax必需加:
@ResponseBody
@Controller
public class LoginController {
/**
* RESTful : 是一种风格
* 一个请求(路径,方式)对应一个资源
*/
@RequestMapping(value = "/login",method= RequestMethod.GET)
public String index(){
return "login";
}
/**
* Ajax请求,应该是返回数据,而不是跳转页面
* 跳转页面:1.报错 2.把跳转到的页面全部传回去
* @return
*/
@RequestMapping(value = "/login",method= RequestMethod.POST)
@ResponseBody
public JsonResult login(String username, String password){
//拿到当前用户(有可能是游客)
Subject subject = SecurityUtils.getSubject();
//直接登录
try {
UsernamePasswordToken token = new UsernamePasswordToken(username,password);
subject.login(token);
} catch (UnknownAccountException e) {
e.printStackTrace();
System.out.println("用户名错误");
return new JsonResult(false,"用户名错误!");
} catch (IncorrectCredentialsException e) {
e.printStackTrace();
System.out.println("密码错误");
return new JsonResult(false,"用户名或者密码错误!");
} catch (AuthenticationException e) {
e.printStackTrace();
System.out.println("神迷错误");
return new JsonResult(false,"神迷错误!");
}
return new JsonResult();
}
@RequestMapping("/logout")
public String logout(){
//完成注销功能
Subject subject = SecurityUtils.getSubject();
subject.logout();
return "redirect:login";
}
}