공부해요/JSP

[ 모델2로 구현하는 자바 웹 프로그래밍 JSP2.2 & Servlet3.0 따라하기 ] 3

예쁜꽃이피었으면 2014. 7. 29. 00:11

http://blog.naver.com/action713/220001515342


리뷰에 지금 보고있는책이 안좋다는 글들이 많아서..

초보자들이 하지말았으면 하는 코딩법이 예제로 나와있다는 말을 듣고.

일단. 이걸로 개념만이라도 어렴풋이 잡고.

다른 책 골라서예제실행해봐야겠다.

 

 

 

Chapter 03 Servlet의 핵심 사항들

★웹상에서 클라리언트에서 서블릿으로 요청하는 방식은 대표적으로 get post두 가지 방식으로 나뉜다.

 

[[get방식]]

1)     클라이언트에서 서블릿으로 요청하는 방식

사용방식 : <a href = “list.jsp?pageNo=2”>[2]</a>

get방식으로 요청이 전송되는 경우 :

 - 브라우저 주소 표시줄에 주소를 직접입력해서 요청을 전송하는 경우

 - HTML a태그를 사용해서 링크를 걸어서 전송하는 경우

   <a href = “list.jsp”>목록보기</a>

-       HMML태그에서 method속성을 get으로 지정하는 경우

<form action = “” name = “” method = “get”>

<v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f><o:lock aspectratio="t" v:ext="edit"></o:lock>

2)     서블릿을 이용한 클라이언트에서 전송되는 요청처리

-       get방식으로 요청이 전송되어 올 경우 , 최종적으로

doGet(HttpServletRequest request, HttpservletResponse response)메소드호출.

-       HttpServletRequest인터페이스에서 제공되는 String getParameter(String name)메소드가 존재하는데

이 메소드는 name이라는 이름으로 전송되어 온 파라미터 값을 반환해주는 메소드이다.

 

3)     서블릿에서 한글 처리하기

-       링크가 걸려 요청처리가 되는 경우, 폼 태그의 method속성이 get방식인 경우는 페이지에서 사용하고 있는 캐릭터 셋ㅇ로 인코딩 되어 파라미터가 전송된다.

-       주소 표시줄에 파라미터를 직접입력해서 전송하는 경우에는 해당 브라우저에서 사용하고 있는 캐릭터 셋을 이용해서 인코딩을 처리한다.

 

[[post방식]]

1)     클라이언트에서 서블릿으로 요청하는 방식

post방식으로 요청을 서버로 전송하려면 반드시 html form태그를 사용하여 method속성을 post로 지정해야한다.

<form name = “” action = “” method= “post”>

2)     서블릿을 이용한 클라이언트에서 전송되는 요청처리

get방식과 유사하다. 다만 요청 처리를 수행할 때 doGet이 아닌 doPost메소드에서 요청처리된다.

 

3)     서블릿에서 한글 처리하기

-       doPost에서 request.setCharacterEncoding(“euc-kr”)

-       get방식으로 요청이 전송되어 올 경우와의 차이점은 get방식의 경우에는 반드시 connector태그에 useBodyEncodingForURI= “true”속성을 이용해야하지만 post방식을 이용할 경우에는 기본적으로 이 방식으로 인코딩방식을 변경할 수 있다.

 

 

3.4 하나의 파라미터 이름으로 여러 개의 파라미터 값 처리하기

HttpServletRequest인터페이스에서 제공되는 String[] getParamerterValues(String paramName)메소드를 사용해서 처리해야 한다.

(체크박스의 경우 같은 파라미터 이름으로 값이 여러 개 전송되어 올 수 있으므로

 String[] getParameterValues(String paramValue)로 파라미터를 전송받아야 한다.)

 

3.5 서블릿에서 세션 살펴보기

 1) 세션의 개념

   HTTP프로토콜의 특성

-       HTTP 프로토콜의 대표적인 특징 중 하나는 상태를 유지하지 않는다.

(클라이언트가 한번 요청을 하고 서버에서 응답을 하면 해당 클라이언트와 서버와의 연결을 유지되지 않는다.)

-       웹 서버는 동시에 여러 개의 요청을 효과적으로 처리할 수 있지만 로그인, 장바구니 등의 상태가 윶되어야하는 프로그램 작성은 힘들다.

-       단점을 보안하기 위해 만든 것이 세션

(세션은 서블릿에서 클라이언트와 서버의 상탤ㄹ 유지하기 위해 제공되는 API이다.)

 

 



2) 세션 예제

      서블릿에는 세션을 다룰 수 있는 httpsession인터페이스를 제공하고 있다.

u  HttpServletRequest.getSession(true) : 해당 클라이언트에 세션이 할당되어 있으면(이전 요청에 의해 이미 세션이 생성되어 있으면) 기존에 생성되어 있는 세션 객체의 레퍼런스를 반환하고, 생성되어 있지 않으면(첫 번째 요청이면) 새롭게 객체를 생성하는 메소드로 , 파라미터 값을 생략했을 경우 기본값이 된다.

(HttpServletRequest.getSession() = HttpServletRequest.getSession(true))

◆ HttpServletRequest.getSession(false) : 기존 클라이언트에 대해 세션 객체가 생성되어 있으면 기존 생성된 세션의 레퍼런스를 반환하고기존 세션 객체가 생성되어 있지 않으면 에러를 발생시키는 메소드.

 

★서블릿에서 데이터를 공유하는 방법

1. 초기화 파라미터를 사용하는 것. Web.xml에 초기화 파라미터를 설정하는 방법

2. 서블릿이 제공하는 특정 영역에 속성을 생성하는 방법


반응형