➊
<c:if test="${not empty error}">
<div class="alert alert-danger">
UserName과 Password가 올바르지 않습니다.<br />
</div>
</c:if>
<form class="form-signin" action="<c:url value="/login"/>" method="post"> ➋
<div class="form-group row">
<input type="text" name="username" class="form-control" placeholder="User Name" required autofocus> ➌
</div>
<div class="form-group row">
<input type="password" name="password" class="form-control" placeholder="Password" required> ➍
</div>
<div class="form-group row">
<button class="btn btn-lg btn-success btn-block" type="submit">로그인</button>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> ➎
</div>
</form>
</div>
</body>
</html>
➊ 인증에 실패했을 때 모델 속성 error에 저장된 값이 있다면 오류를 출력합니다.
➋ <form> 태그 선언 및 로그인 인증을 위한 요청 경로를 설정합니다.
➌ <input> 태그로 사용자 계정 이름을 설정합니다.
➍ <input> 태그로 사용자 비밀번호를 설정합니다.
➎ CSRF 공격을 방어하려고 설정합니다.