일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- MVC
- 풀스택
- 백엔드
- 미로 생성 알고리즘
- html5
- 회원가입
- Ajax
- Binding
- css3
- 비밀번호찾기
- c programming
- jQuery
- 프레임워크
- spring
- 프론트엔드
- 제이쿼리
- jsp
- 웹서비스
- 웹개발
- 로그인
- Linked List
- 웹페이지
- 서블릿
- dbms
- 마이바티스
- 스프링
- 네비게이터
- javascript
- mybatis
- 오라클
- Today
- Total
목록Servlet + JSP (6)
Programmer's Progress

본격적으로 백엔드 개발을 공부하기 시작하면서 상당히 많은 SQL문을 작성했었다. 가령 회원의 목록을 질의하는 것부터, 회원 추가, 삭제, 수정, 계층형 게시판, 답글 등등 심지어는 3중 SELECT문을 활용하기도 했었다. 그 외에도 여러 SQL문을 한 번에 수행해야 할 때도 있었다. 가령, 게시판에 새로운 글을 추가할 때에는 반드시 현존하는 게시글중에서 가장 큰 번호를 가진 게시글의 번호보다+1된 값을 새 게시글의 번호로 사용해야 할 때가 있었다. 그런데 만약 우연하게도 동시에 두 사용자가 게시글 작성을 했다면 어떻게 될까? 물론 단일 SQL 질의에 대해서는 DBMS가 동시성제어를 통해 마치 OS에서 프로세스 간의 공유 자원을 동기화하기 위해 세마포어나 락을 사용하듯, DBMS도 마찬가지로 ACID의 원..

이번에는 JSP를 이용해서 동적으로 화면이 구성되도록 하였다. 기존에는 HTML, CSS만을 이용해서 정적인 콘텐츠를 요청, 응답할 수 밖에는 없었다. 예를 들어 로그인을 하기 전과, 로그인한 후의 상태에 따라 메인 페이지에서 서로 다르게 웹페이지가 구성되도록 할 수 없었다는 것이다. 홍길동이라는 사람이 로그인에 성공하여 다시 메인 페이지로 복귀했을 때 최우 상단의 로그인을 위한 영역은, 홍길동이라는 사용자에 대한 정보를 위한 영역으로 쓰여야 하는데 기존의 HTML 문서를 요청하는 방식은 정적 콘텐츠를 요청하는 방식이었으므로 레이아웃을 변경할 수가 없었다. 이처럼 일반적인 웹서버에서는 정적인 콘텐츠만 제공하고, 제공받을 수 있으므로, 쇼핑몰에서 흔히 볼 수 있는 광고나 세일 품목 등, 실시간으로 변경될 ..

사람들은 로그인 페이지에서 한번 로그인을 하면, 그 서버의 모든 웹페이지가 나의 로그인 정보를 알고 있을 것이라 생각하기도 한다. 그러나 실상은 그렇지 않다. HTTP 프로토콜은 애플리케이션 레이어상에서 쓰이며 stateless한 프로토콜이다. 서버에서 클라이언트의 정보를 저장해두지 않는다. HTTP Request 메세지에는 요청 시에 필요한 정보가 GET, POST 등의 방식으로 전달이 된다. 즉, 그 메세지에는 요청에 필요한 모든 정보가 이미 들어있기에, 굳이 서버에서 정보를 추가적으로 저장할 필요가 없다. 트랜스포트 레이어상에서, 특히 TCP가 Reliable Data Transfer를 제공하기 위해서 Go-Back-N 방식과 Selective Repeat방식으로 이를 처리하고, RDT시간을 줄이기..

ServletContext 클래스는 톰캣 컨테이너 실행 시에 각 콘텍스트마다 하나의 객체가 생성된다. 톰캣 컨테이너가 종료되면 이 객체가 소멸되는데, 이 객체를 통해 웹 애플리케이션의 모든 서블릿들이 자원이나 정보를 미리 바인딩해서 공유하여 사용할 수 있도록 한다. 쉽게 말해서 전역변수를 선언하는 것과 비슷한 효과를 얻을 수 있다. 반면 ServletConfig 클래스는 각 서블릿 객체들마다 생성되는 클래스다. 즉, 각 서블릿은 고유한 ServletConfig 객체를 가지며, 지역변수처럼 데이터를 읽어 들일 수 있게끔 한다. 이 클래스는 데이터를 초기화할 때 주로 사용한다. 이렇게 글로만 나열해둔 정보로는 도대체 어떻게 동작하는지 잘 알수가 없었다. 직접 사용해 필요성을 느끼기로 했다. LoginServ..

이전에는 에브리타임 웹 서비스의 메인 페이지만 구현했었다면 이번에는 로그인 및 회원가입 페이지를 구현했다. 물론 아직 JSP를 배우지 않았기 때문에 순수하게 HTML, CSS, JS만 사용하여 웹 문서를 작성했다. 따라서 로그인 버튼이나 회원가입 버튼을 클릭하면 그에 해당하는 HTML 문서를 요청하도록 처리했다. 아직 로그인을 유지하는 방법에 대해서는 공부하지 않았다. 데이터 통신 강의에서 배운 내용으로는, 아마 쿠키나 세션이라는 요소를 이용해서 로그인 정보를 유지할 것으로 예상하는데, 쿠키는 그 크기에 한계가 있고, 또 보안상으로 좋지 않아 크게 보안이 중요하지 않은 장바구니에 활용할 것 같다. 세션방식이라면 서버에 그 정보를 담아두기 때문에 보안 관점에서는 좋겠지만, 서버의 부담이 커질 수 있으리라 ..

이번 방학에는 서블릿과 웹컨테이너, JSP, Spring등등 기존의 프론트엔드 지식을 기반으로 백엔드 지식을 공부하는 것으로 방향을 정했다. 기존에는 프론트엔드의 기본을 배웠고, Ajax를 활용한 데이터 요청도 조금이나마 시도했었다. 그러나 사실 백엔드는 커녕 프론트엔드 사이드의 동작을 잘 이해하지 못했었다. 브라우저에서 데이터를 요청하면 어떻게 서버까지 전달이 되고, 어떤 처리를 거쳐서 어떤 데이터를 클라이언트에게 전달하는지... 가령 라우터의 동작이라든지, TCP 프로토콜 P2P방식의 데이터 송수신, 포트포워딩 등등... 데이터 통신과목이 비록 어렵긴 했어도 전반적으로 네트워크가 어떤식으로 구성되고, 동작하는지를 이해할 수 있었다. 또한 쓰레드가 무엇인지, OS는 어떤 역할을 수행하고, 메모리에 로드..