聚星Note04 - 管理员登录
1 整合静态资源
将静态资源(bootstrap、css、fonts、img、jquery、script、ztree、layer)加入到 gatherStars-admin-webui/src/main/webapp 目录
1.1 关联登录请求地址和视图
- 创建 WEB-INF/admin-login.jsp
- spring-web-mvc.xml 配置view-controller
<!-- 关联请求地址和视图,免写handle方法 -->
<mvc:view-controller path="/admin/to/login/page.html" view-name="admin-login" />
- 浏览器访问 http://localhost:8080/admin/to/login/page.html
1.2 维护项目所需常量类
创建 gatherStars-admin-util/src/main/java/com.turling.gatherStars.constant.ProjectConstant
为项目所需常量, 提供统一入口
public class ProjectConstant {
public static final String MESSAGE_LOGIN_FAILED = "抱歉!账号密码错误!请重新输入!";
public static final String MESSAGE_LOGIN_ACCT_ALREADY_IN_USE = "抱歉!该账号已被使用!";
public static final String MESSAGE_ACCESS_FORBIDEN = "请登录后访问!";
public static final String MESSAGE_STRING_INVALIDATE = "请检测到您没有输入有效数据!";
public static final String ATTR_NAME_EXCEPTION = "exception";
}
修改 gatherStars-admin-component/src/main/java/com.turling.gatherStars.mvc.config.GatherStarsExceptionResolver
modelAndView.addObject(ProjectConstant.ATTR_NAME_EXCEPTION, exception);
1.3 小技巧 - idea 正常显示子包
点击项目上方齿轮 – 取消勾选 Hide Empty Middle Packages
1.4 修饰 system-error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keys" content="">
<meta name="author" content="">
<base href="http://${pageContext.request.serverName }:${pageContext.request.serverPort }${pageContext.request.contextPath }/" />
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="css/font-awesome.min.css">
<link rel="stylesheet" href="css/login.css">
<script type="text/javascript" src="jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript">
$(function(){
$("button").click(function(){
// 相当于浏览器的后退按钮
window.history.back();
});
});
</script>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<div>
<a class="navbar-brand" href="index.html" style="font-size: 32px;">聚星-创意产品众筹平台</a>
</div>
</div>
</div>
</nav>
<div class="container">
<h2 class="form-signin-heading" style="text-align: center;">
<i class="glyphicon glyphicon-log-in"></i> 哎呀!系统出错了!
</h2>
<!-- requestScope.exception.message相当于exception.getMessage() -->
<h3 style="text-align: center;">${requestScope.exception.message }</h3>
<button style="width: 150px;margin: 50px auto 0px auto;" class="btn btn-lg btn-success btn-block">点我返回上一步</button>
</div>
</body>
</html>
2 登录与注销
2.1 登录与重定向到主页面
2.1.1 创建 md5 加密工具方法
com.turling.gatherStars.util.GatherStarsUtil 中添加
public static String md5 (String source) {
// 1. 判断 source 是否有效
if (source == null || source.length() == 0) {
// 触发异常处理机制
throw new RuntimeException(ProjectConstant.MESSAGE_STRING_INVALIDATE);
}
try {
// 2. 获取 MessageDigest 对象
String algorithm = "md5";
MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
// 3. 获取明文字符串对应的字节数组
byte[] input = source.getBytes();
// 4. 执行加密
byte[] output = messageDigest.digest(input);
// 5. 创建 BigInteger 对象
int signum = 1; // 1 表示为整数
BigInteger bigInteger = new BigInteger(signum, output);
// 6. 按照16进制将 bigInteger 转化为字符
int radix = 16;
String encode = bigInteger.toString(radix).toUpperCase();
return encode;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
2.1.2 创建登录自定义异常
创建 com.turling.gatherStars.exception.LoginFailedException