아니 요즘 에러랑 너무 자주 데이트를 하게 되는거 같아서….에러일지를 앞으로 작성하기로 맘을먹었다…. 그 첫번째 주인공은!!!! SQL command not properly ended 쿼리문이 정상적으로 실행되지 않았다. ⇒ 쉽게 말해서 쿼리문이 문법상 뭔가 잘못됬어요^^ 하핳……원인은 너무 간단했습니다 ! query="DELETE FROM board WHERE no=? && userid=?"; 이상한게 바로 보이지 않나요??… 않는다면 당신은 SQL 보다 JAVA에 찌들어져 있는겁니다!ㅋ 바로 연산자가 틀렸습니다…. 자바에서는 논리연사자가 && || ? : 이렇게 생겼는데, SQL에서는 AND, OR와 같이 단어로 이루어져있습니다!!… query="DELETE FROM board WHERE no=? A..
웹소켓(Web Socket)이란 뭘까? 웹소켓이라는 단어는 일단 백엔드 개발자라면 무조건. 혹은 프론테엔드 개발자도 무조건. 한번씩은 들어봤을 법한 단어입니다. 이와 비슷하게 http, 프로토콜 이러한 개념들도 웹개발자에게 있어서는 핵심 기본 개념중 하나이죠! 그렇다면 프로토콜은 통신 규칙, 방식이고, HTTP는 url로 요청을 하는 프로토콜 방식중 하나인데, 웹소켓은 뭘까요? Web Socket? 개념 웹소켓 역시 HTTP와 같은 일종의 약속! 입니다. Transport Protocol의 방식중 하나이며, 이러한 방식이 생긴 이유는 서버와 클라이언트간의 효율적인 “양방향 통신”을 실현하기 위한 구조입니다 🙂 웹소켓이라는게 개발되기전에는 웹브라우저 에서의 양방향 실시간 소통 기능 같은건 없었죠…. 즉 클..
안녕하세요! 🙂 으음….제가 사실 백엔드 과정을 하면서 그안에 네트워크에 관한 교육과정이 없다보니 그점이 너무 아쉬워서, 혼자 공부하고 기록하고자 network라는 카테고리를 하나 만들어 꾸준히 리포트 하고자 합니다! What is Network AND HTTP? 일단 네트워크와 HTTP를 한꺼번에 알기전에 인터넷 통신의 제일 기초인 “네트워크”라는 개념부터 잡고 넘어가겠습니다! Net + work 말 그대로 두개의 단어가 붙여져서 만들어진 합성어 입니다. 통신기술을 이용하여 그물망 처럼 연결된 통신 이용 형태를 “네트워크”라고 부릅니다! 쉽게 말하자면, 각종 통신 장비들(컴퓨터)이 서로 연결되어 데이터를 교환하는 통신망이라고 할 수 있습니다. 즉, 2대 이상의 통신장비들을 연결하여 서로 통신 할 수 있..
비동기 프로그래밍? 이해하기 제일 쉬운 방법은 바로….. “동기 프로그래밍”이 뭔지 먼저 알아보는겁니다 ^^ ex) 자바에서 코드를 작성시 public class 동기식(){ public void 동기1(){ System.out.println("안녕하세요") } public void 동기2(){ System.out.println("안녕못해요") } public void 동기3(){ System.out.println("안녕해요 ㅡㅡ") } } 위와 같이 코드를 작성했다고 하면 (물론 메인메소드가 없지만) 실행 순서는 동기 1 ⇒ 동기 2 ⇒ 동기 3 순서대로 될겁니다! 이말은 즉 ⇒ 위에서 아래로 순차적으로 하나하나 실행이 끝나면 그 다음 메소드로 이동해서 실행하고,,,, 이런 방식으로 순차적으로 앞에 메..
다이나믹 프로그래밍 : DP 아니 이게 참 아이러니한게….사실 “DP”라는 말은 실제로 DP의 설명을 하기엔 어울리지 않는 뜻을 가지고 있습니다 ^^… 왜그러냐고요? 전혀 다이나믹 하지 않은 프로그래밍 이거든요; 심지어 프로그래밍이라는 말도 연관성이 없어요 ^^…. 여기서 말하는 다이나믹 프로그래밍이란. 복잡하고 큰 하나의 문제를 여러개의 간단한 문제로 나누어 풀고, 그것을 결합하여 복잡하고 큰 하나의 문제를 해결하는 방식입니다. 또한 메모이제이션을 통해 미리 계산해서 저장해 둔 결과를 활용합니다. 그래서 서울대 모 교수는 “기억하며 풀기” 라고 말을 한답니다 ^^ DP와 재귀호출 사실 재귀호출 방식과 DP방식은 매우 흡사합니당. 큰 문제를 작은 문제로 나누어서 푸는거죠? 근데 재귀호출은 심각한 단점이 ..
스프링과 스프링부트 정말 뭐가 다른걸까요? 결론부터 말씀드리면 크게 다를건 없습니다 ^^ 일단 단어부터가 애매합니다. Spring & Spring Boot 라고 표현하기 보다는 Spring Framework & Spring Boot 라고 표현을 고치고 자세하게 무엇이 다른지 알아보겠습니다! (복습도 할겸 개념부터 다시 잡아보면서 가지요 !) Spring Framework ? 스프링 프레임워크는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크입니다! 단어가 길어서 그냥 스프링! 이라고 불러서 다들 혼동이 있는거 같아요 허헣 WAS 동적인 웹페이지를 개발하기 위해 여러가지 서비스를 제공하고 있습니다 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크 기반 기술이랍니다. 글..
Spring Boot & Mybatis 연동해보기! 오늘 수업때 배운 내용은 스프링부트에서 마이바티스를 연동하여 DB에 데이터를 CRUD하는거에 대해서 다뤘습니다! 까먹지 않게 제가 직접 한번 더 구현을 해보고 기록하고자 합니다 🙂 사용할 DB는 MySQL입니다 ! 사전준비 : 데이터베이스 모델링 및 구축 테스트이기 때문에…ㅈ..조촐하게 ^^ 1. 프로젝트 생성시 Setting 기본적으로 필요한 디펜던시를 설정해줍니다. Lombok (선택사항) Spring Boot DevTools Spring Web Thymeleaf (선택사항) MySQL Driver (DB연동) Mybatis Framework 2. application.properties 설정 server.port=80 # MySQL Driver s..
Entity….wt….. 엔티티가 뭐냐고요?…사실 저도 처음 들어봤어요 헤헿… 다른 사람의 프로젝트를 보다가 DTO나 VO를 Entity로 선언한걸 보게됬는데 이게 뭔지…수업때는 이런게 없었는데 그래서 궁금해서 찾아봤습니다! Entity란 핵심 비지니스 로직을 담는 비지니스 도메인의 영역의 일부이다. 즉 DTO는 단순히 데이터를 담는게 전부인 반면에, 엔티티는 비지니스 로직을 추가할 수 있다! 라는거죠. (VO란 개념이 비슷한거 같은데?….하지만 VO는 DB와 관련없는 비지니스 로직을 구현하는거죠?) 즉 DTO, VO와 Entity는 데이터를 담는건 동일하지만, 엔티티는 데이터베이스의 테이블과 매핑되는 자바 클래스를 의미합니다. 하지만 이것또한 스프링에서의 개념이고, 실제로 순 엔티티의 개념은 ⇒ 데이터..
JSON ⇒ JavaScript Object Notation 무슨 말이냐고요? 쉽게 말하면 JSON은 자바스크립트 문법이며, 키-값이 쌍을 이루는 형식으로 데이터를 저장하거나 전송할때 사용하는 “표기법” 입니다. 그래서 특정 프로그래밍 방식이나 서버와의 통신 방법같은게 아닌 단순히 데이터 “표기법” 인거죠! JSON을 이해하기 위해서는 “자바스크립트”에 대한 기본적인 이해가 필요합니다. 특징: JSON은 자바스크립트를 확장하여 만들어졌습니다. JSON은 자바스크립트 객체 표기법을 따릅니다. JSON은 사람과 기계가 모두 읽기 편하도록 고안되었습니다. JSON은 프로그래밍 언어와 운영체제에 독립적입니다. 스프링부트랑 뭔 상관이죠?… 위에서 말했듯이 JSON은 데이터를 저장하거나 전송할때의 표기법입니다! 이..
What is ajax??.. ajax는 뭘까요? 이것 역시 줄임말일거 같은 냄새가 풀풀 나는데요 ^^ ajax : Asynchronous Javascript and XML 해석해보자면 비동기식 자바스크립트, XML 이라는 뜻입니다. 그러면 비동기식이 뭐냐고요? 저희는 클라이언트와 서버가 데이터를 주고 받을때 항상 “동기식” 방법을 사용해서 지금까지 주고받았습니다! 무슨말이냐면..! 간단하게 클라이언트가 어떠한 url요청을 하면 해당 url요청에 응하기 위해 페이지가 새로고침을 되는것이다!! 라고 생각하면 매우 간단합니다! 반대로 비동기식은 페이지 새로고침 없이도 사용자의 요청을 실시간으로 처리할 수 있다!!! 라고 생각하면 좋을거 같습니다 🙂 동기(synchronous : 동시에 일어나는) ****요청..
Bean = 콩 죄송합니다… Bean이란 무엇일까요? 하하핳ㅎㅎ 여기서 일단 그냥 bean이라고 하면 Java bean 을 말하는지, Spring bean을 말하는지 되게 헷갈릴 수 있습니다! 두개를 정의를 한 다음에 Spring bean에 대해서 알아보도록 합시다! Java bean : 특정한 정보를 가지고 있는 클래스! 를 표현하는 하나의 규칙입니다. 여기서 특정한 정보라고 해서 와닿지 않을 수 있는데 그냥 예를 들어 ) userid, userpwd, username 등등 이런것들이고, 데이터를 표현하는 목적을 가지고 있습니다. 이 규칙을 지킨 클래스를 Java Bean 이라고 합니다! 규칙 반드시 클래스는 패키지 되어야 함 멤버변수는 property 라고 함. 멤버변수는 private로 지정하고, ..
IOC (Inversion Of Control) 제어의 역전 뭔가 엄청 멋진말 같죠?…..그만큼 어렵겠죠?……… 네 그렇게 쉽게 이해 할 수 있는 아이가 아닙니다 ^^ 그래서 지금 포스팅을 하는거죠 ㅎㅎㅎㅎ (쉬우면 굳이 이렇게 정리를 할 필요가 없겠죠 ㅠ) 제어의 역전? 뭔소리야 그게… 자 한번 쉽게 생각해봅시다. 제어란 : 무언가 통제한다는것이죠? 역전 : 상황이 역전되다 할때 그 역전이죠?? 거꾸로됬다!!! 자 합쳐 봅시다. 💡 “무언가를 통제하는게 역전 되었다.” ⇒ “제어를 하는 권한을 가진 주체가 바꼈다.” 자 그렇다면 주체는 누구를 의미하는걸까요? “라떼는 말이야….” 네 맞아요…옛날 시적에 개발자들은 “의존관계”의 제어를 직접 했습니다! 하지만 지금은 제어권이 “컨테이너”로 넘어가게 되었고..
How to upload Files to Server from Client. 안녕하세요. 이번 수업때 Spring Framework 에서 파일을 업로드 하는 방법을 배웠는데요.. 생각보다 유효성 검사도 신경 써야할게 많았고 순서도 복잡하니, 많은 반복문과 조건문이 괄호를 끼고 개판을 치다 보니 순서를 정리해볼겸 글을 쓰게 되었습니다!… 파일을 업로드 하는 jsp 페이지로 이동시 가져가야할 데이터가 있을까요?? 당연히 세션에 부여되 있는 userid를 가져가야겠죠?? 하지만 세션은 서버단에서 저장이 되있기 때문에 어디서든지 호출이 가능합니다. 그래서 특별히 get, post로 보내줘야할 데이터는 없습니다. 1. FileUpload를 위한 세팅 root-context.xml 파일에서 먼저 multipartR..
Spring MVC Project의 흐름 안녕하세요…… 오늘따라 기운이 없어보이죠?….사실 기운이 없는게 아니에요. 드디어….드디어 제가!!!!!! 이제 백엔드 다운 영역에 도달했다는거에요ㅠㅠㅠㅠㅠㅠㅠㅠㅠ 되게 먼길로만 느껴졌던 백엔드 과정에 드디어 제대로 된 첫 발을 들인거죠… Spring Framework 을 처음 써본 저는 바로바로… 멘붕… 하지만 ^^ 이대로 물러서지 않죠. 당연히! 저는 애초에 프로그래밍 하면서 제일 재밌게 느끼는 부분이 제가 몰랐던 무언가를 배우는게 되게 재밌고 …그냥 재밌어요 허헣 너무 변태같나요 ^^ 아무튼!!! 저번에!!! 다뤘던 servlet하나로 컨트롤러의 역할을 만들어 구현했던 MVC패턴을 이제는 Spring Framework 를 사용하여 좀 더 쉽고, 간단하게, 여..
Dependency Injection : 의존성 주입 자 단어부터가 벌써 무서워요????? ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ…… 이걸 이해하기 위해선 차근차근 하나씩 계단을 올라가는 느낌으로 정리를 해보겠습니다! 일단 단어가 2개에요!! 의존성, 주입 그렇죠?? 제일 먼저 의존성이라는 단어 먼저 풀이해볼게요! 의존성 : Dependency 자 쉽게 “학생”은 “선생님”에게 의존한다. 틀리지 않은 말이죠? 조금 추상적인 표현이긴 하지만, 간단하게 “학생”이라는 객체는 “선생님”이라는 객체가 있어야지 공부를 할 수 있고, 가르침을 받아서 시험도 보고, 대학교도 가죠??? 자 이해가 아마 처음부터 바로 안갈거에요! 그렇다면 코드를 보면서 얘기를 해보겠습니다! class Student { private Teacher teac..
Interceptor 하다 : 는 가로채다 라는 의미의 영단어 입니다! 한마디로 무언가를 중간에 가로채는것을 인터셉터! 라고 한다는거죠??? 그렇다면 무엇을 가로채는걸까요?? 바로 Client 의 요청으로 서버에 들어온 request 객체를 가로채는것 입니다. Controller에서 Handler 로 도달하기전에 그 순간 요청을 가로챕니다. 여기서 말하는 Handler란? ⇒ 사용자가 요청한 url주소에 따라 실행될 메소드를 의미합니다! 그러면 굳이 왜 요청을 가로채냐고요?? 당연히 Handler로 도달하기전에 추가로 작업해야될 것들을 실행 시킨뒤에 Handler로 가게 만드는 것이죠! Interceptor 는 단순히 하나의 요청만을 가로채는게 아닌 여러개의 요청을 동일한걸로 엮어서 한번에 똑같은 작업을..