전체 글

스프링의 정석/spring error

Exception in thread "main" java.lang.ClassNotFoundException

"com.fastcampus.ex2.Hello"에서 main 메서드를 찾지 못한다. 분명히 똑같이 따라 했는데,,, package명 잘못 적었다. ⭐ 오타에 주의하자!

스프링의 정석/Ch. 02 Spring MVC

26. 세션(Session) - 실습(2)

2. 로그인 후, 게시판으로 이동 사용자가 게시판을 로그인 하지 않고 클릭 했을 때 로그인 후 홈화면 보다는 게시판을 보여주는 것이 좋다. 각 단계마다 어디서부터 오고 가야 하는지 저장되어 있다. LoginController에서 boardList로 넘어가기 위해서는 '/board/list' 주소가 LoginController에게 전달되어야 한다. 하지만 '/board/list'는 BoardController, loginForm에만 있기 때문에 이 정보를 LoginController에게 전달해야한다. to 정보는 request.getRequestURL() 메서드를 사용하면 알 수 있고 from 정보는 request.getHeader("referer") 메서드를 이용하면 알 수 있다. PerformanceF..

스프링의 정석/Ch. 02 Spring MVC

25. 세션(Session) - 실습(1)

1. 게시판 이용시, 미로그인이면 로그인 화면으로 이동 1. index.jsp(홈 화면)에서 Board(게시판)을 클릭하면 URL "/board/list"로 요청을 한다. 2. boarderController에서 로그인 여부를 확인한다. 2-1. 로그인 O : boardList.jsp 2-2. 로그인 X : loginForm.jsp -> 정확히는 LoginController로 간다. 3. id, pwd가 일치하면 홈 화면으로 나간다. 1.1 게시판, 로그인 연동하기 boardList.jsp를 만든다. BoardController를 만든다. Board는 출력이 잘 된다. 이제 로그인 여부를 확인해서 Board 접근 허용을 만든다. 로그인을 하고 Board를 클릭해도 session의 여부만 확인했지 id를 ..

스프링의 정석/Ch. 02 Spring MVC

24. 세션(Session) - 이론

1. 세션이란? 요청 하나 하나는 서로 독립적이다. 즉 서로 관련이 없다. 이 요청들을 묶은 것이 세션이고 쿠키를 이용한다. 서버에서 브라우저마다 개별 저장소(session 객체)를 제공한다. 브라우저마다 세션이 생기는 이유는 쿠키를 이용하기 때문이다. 차이점은 쿠키는 브라우저에 저장되지만 세션은 서버에 저장된다. session의 정의는 "a collection of related HTTP tranactions made by one brower to one server."이다. 여기서 HTTP tranactions는 요청과 응답을 말한다. 또한 one brower to one server로 브라우저와 서버에 1:1로 있음을 알 수 있다. 브라우저가 요청을 하면 서버가 JESSIONID을 보낸다. 첫 번째..

스프링의 정석/Ch. 02 Spring MVC

23. 쿠키(Cookie)란

loginForm.jsp를 만들고 이를 LoginController에서 호출한다. 아이디 기억을 쿠키를 통해 구현할 것이다. 1. id, pwd를 확인하기 위해 변수로 id, pwd, rememberId를 만든다. 2. id, pwd가 일치하지 않을 때 msg를 출력하기 위해 URLEncoder를 이용한다. 3. redirect는 Get요청으로 돌아가기 때문에 GetMapping된 loginForm으로 돌아간다. 4. loginCheck는 간단히 만든다. redirect를 위해 index.jsp를 만든다. home을 HomeController가 받아서 출력이 되지 않는다. HomeController를 index로 가게 만든다. 새로고침을 하면 CSS가 적용되지 않는다. 정적 파일이기 때문에 CSS를 re..

C언어/홍정모 C언어

5.11 자료형 변환 예제

#define _CRT_SECURE_NO_WARNINGS #include int main() { /* promotions in assignments*/ /*short s = 64; int i = s; float f = 3.14f; double d = f;*/ /* demotion in assignments */ /*d = 1.25; f = 1.25; f = 1.123;*/ /* ranking of types in operations */ // long double > double > float // unsigned long long, long long // unsigned long, long // unsigned, int // short int, unsigned short int // signed cha..

C언어/홍정모 C언어

5.8 증가, 감소 연산자 예제

#include int main() { //int a = 0; //a++; // a = a + 1 or a += 1; //printf("%d\n", a); //++a; // a = a + 1 or a += 1; //printf("%d\n", a); /*double b = 0; b++; printf("%f\n", b); ++b; printf("%f\n", b);*/ //int count = 0; //while (count < 10) // ++count or count++ //{ //printf("%d ", count++); // ++count or count++ ////count; //} /*int i = 1, j = 1; int i_post, pre_j; i_post = i++; pre_j = ++j; ..

C언어/홍정모 C언어

운영체제 시스템 비트에 따른 size_t, 메모리 크기 차이(4.2 sizeof 연산자_

1. size_t size_t의 툴팁을 보면 타입이 unsigned long long으로 강의와는 다르게 나온다. size_t 자료형은 다양한 플랫폼과 환경 간의 호환성을 위한 자료형으로, 플랫폼과 환경마다 다르게 정의된다. 즉 이식성이 좋도록 size_t를 만들었고, 위를 보면 X64 시스템을 사용하기 때문에 자료형의 타입이 다르게 나온다. X86으로 바꾸면 unsigned int로 타입이 바뀐다. 2. 메모리 크기 위와 같은 이유로 포인터의 크기가 4bytes가 아니라 8bytes로 출력된다. 64 비트 시스템에서 포인터의 크기는 8byte가 맞다. X86으로 바꾸면 4byte로 나온다.

C언어/홍정모 C언어

0.01f 값 커서 툴팁 출력 안될 때(3.12 부동소수점형의 한계)

round-off error (ex2)에서 0.01f에 마우스 커서를 올려놓으면 값이 나타나지 않는다. 버전이 달라서? 그런가 툴팁이 인터넷 검색으로 이어진다. 이를 해결하기 위해 1. 해당 코드 line을 클릭해서 빨간점을 만든다. 2. ctrl+F5가 아니라 F5로 디버그 모드로 실행한다. 값이 잘 출력된다.

스프링의 정석/Ch. 02 Spring MVC

22. redirect와 forward

1. redirect와 forward의 처리 과정 비교 1.1 redirect /ch2/write.jsp를 요청 했고, 응답으로 상태코드 302번으로 응답했다. 300번대는 Redirect이다. 다른 URL로 재요청하라는 말이다. 응답에 헤더는 있고 바디는 없다. 응답 헤더에 Location:/ch2/login.jsp로 브라우저가 자동으로 새로운 요청을 한다. 사용자가 아니라 브라우저가 자동으로 한다. 첫 번째 요청은 수동이지만 두 번째 요청은 자동이기 때문에 둘은 다른 객체이다. 첫 번째 객체가 GET, POST 상관 없이 redirect한 요청은 무조건 GET 요청이다. 1.2 forward 클라이언트가 /ch2/write.jsp를 요청했을 때 자기가 처리할 요청이 아닐때 혹은 일부만 처리하고 /ch..

돌맹이떼굴떼굴
떼굴떼굴개발자