•
history 기능 페이지 역사를 기억한다.
.back()
이전 페이지로 가게 할 수 있다.
.back(-1) / .back(-2) 으로 정할 수 있다.
history back은 기록했던 것들이 다 남아있다.
.href =
•
안 한일 없나 살펴보는 것이 promise
•
eventLoop에 등록되어서 할일이 없을때 실행된다.
•
자바스크립트는 동기적으로 할일을 모두 등록하고 메인스레드가 다실행되고 나서 비동기적으로 EventLoop를 처리한다.
•
자바는 컨텍스트 스위칭 때문에 스크립트보다 느리다.
•
노드js는 단일 스레드 기반.
•
IO가 있는 프로그램은 전부다wait가 걸린다.
•
웹에 최적화 된 것은 단일 스레드 이다.
•
제티는 단일 스레드 기반
•
단일 스레드의 EventLoop기법이 빠르다.
•
일반 Controller는 파일로 리턴하고
◦
@ResponseBody 가 붙으면 return을 문자열로 응답한다.
@ResponseBody에 대해서
View Resolver에 대해서
테스트하
•
에러와 페이지 응답을 섞는 방법???이 필요하다.
@Test
public void back_test() {
String result = Script.back("권한이 없어요");
System.out.println(result);
}
JavaScript
복사
핸들러를 사용하는 이유는??
스프링에서는 throws를 날리면 Dispatcher Servlet으로 가게되는데, 우리가 이걸 제어를 할 수가 없다. 그래서 @ControllerAdvice를 사용해서 throws를 핸들러가 받게 해서 핸들러를 직접 제어할 수 있게한다.
•
단방향과 양방향 암호
◦
단방향은 Hash
▪
Bcrypt도 단방향 Hash이다. SHA512
◦
양방향에서 대칭키와 비대칭키가 있다.
◦
대칭키 AES를 기억하자.
◦
비대칭키 부인방지, RSA 디지털 서명 - 현존 최고의 알고리즘
•
대칭키의 단점은
◦
키전달 문제
◦
신원 인증 문제, 내가 잠궜다는 것을 증명할 수 없다.
◦
BCrypt.checkpw()
public User findByUsername(String username) {
Query query = em.createNativeQuery("select * from user_tb where username=?", User.class);
query.setParameter(1, username);
try {
User user = (User) query.getSingleResult();
return user;
} catch (Exception e) {
throw new RuntimeException("아이디를 찾을 수 없습니다.");
}
}
JavaScript
복사