개념 :  클라이언트가 요청을 하면 그에 대한 결과를 다시 전송 해주는 역활.

 

특징

1) html 을 사용하여 요청에 응답한다.

2)클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트이다.

3)Java Thread를 이용하여 동작한다.

4)HTML 변경시 재컴파일해야 하는 단점이 있다. 

5)HTTP 프로토콜 서비스를 지원하는 Javax.servlet.http.HttpServlet 클래스를 상속받는다

UDP 보다 속도가 느리다.                                                                                                                                                                                                                                                                                                                                             
서블릿 라이프 사이클의 이해

 

init()

최초실행시 1회만 실행

 

doget()

호출될때마다 실행

 

destory()

서버종료될떄 1회만 실행


-> 서블릿 생명주기라고도 하는데. 이것이 중요한 이유는 서블릿에서 소스를짜면 
    필요한 작업을 해당하는 메서드의 생명주기를 이해한 상태에서 코딩을 해야한다.

 

서블릿

ServletConfig

-->각각의 서블릿을 객체모델링. 서블릿개수당 1개씩있음

initparam 정보를 가지고있는 객체임.

 

 

ServletContext application

--> 톰캣켜지면 딱한개의 객체가 만들어진다.

context-param 정보를 가지고있는 객체임.

 

반드시 알아야하는 Request , Response 개념

뷰에서 받아오는 Request 

뷰로 전송하는 Response 

서버와 클라이언트를 왔다갔다 하는 이개념이 상당히 중요하다.

 

한글을 전송 하려면 서버에서는  뷰로 보내는 Response 를 처리해야하고

E)response.setContentType("text/html; charset=UTF-8");

 

한글을 받아오려면 Request를 처리해줘야 한다.

E)request.setCharacterEncoding("utf-8");

 




서버에 저장하는 방식

서블릿은 일반적으로 프로젝트에서 컨트롤러로 쓰인다.

여기서는 서버에 저장되는형식은 다음과같다.

  자바소스, 명령어 소멸시기 어떤데이터를 사용하나?
pageContext.setAttribute("pageContext", "aaa");

<%=pageContext.getAttribute("pageContext")%>
-현재페이지에서만 저장된 값을
얻을수 있다.

request.setAttribute("request", "bbb");
 

<%=request.getAttribute("request")%>
-다음페이지에 가면 소멸

-
포워드이용하면 다음페이지까지는
전달가능
MemberJoinAction.java
MemListoinAction.java
session.setAttribute("session", "ccc");
 

<%=session.getAttribute("session")%>
-웹브라우저 닫으면 소멸. -LogID
ex)로그인했을때 남아있는
  사용자정보
application.setAttribute("application", "ddd");
 

<%=application.getAttribute("application")%>
-모든사용자가 공유
-서버 꺼지가 꺼지면 소멸.
 

 

여기서 내가 지금 현재 프로젝트(BgfRetail)에서 적용하는걸 찾아봤는데.

세션에 적용시키는건 많이있는거 같은데 그보다 하위영역에 셋팅하는로직이 많이없다.

세션값을 가지고 오기위해선 reuqest 객체가 필요하다.

 

session = request.getSession(true); 

세션일 얻어온다음에

session.setAttribute(FrameworkConfig.getWebSessionKey(), userInfo); 
session.setAttribute(FrameworkConfig.getWebSessionUserId(), userInfo.getUser_id()); 

이런식으로 서버 컨트롤러(서블릿)에서 셋팅을 해주는데.

보통 로그인정보 인증정보등 프로젝트 전반에 필요한 정보들은 세션에 저장해두는게 좋다.

 

 

 

 

셋팅이 되있으면 뷰에서는 

(UserInfo) session.getAttribute(FrameworkConfig.getWebSessionKey());

이런식으로 세션에 셋팅된 키값으로 화면에서 이런식으로 가지고와서 쓸수있다.

 

 

 

 

 

                                       

+ Recent posts