달력

12

« 2019/12 »

  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  


 

 

context-param vs init-param

 

 

구분

차이점

context-param

어플리케이션이 실행될 초기화되는

init-param

서블릿이 실행될 초기화되는

 

 



Posted by codedragon codedragon

댓글을 달아 주세요

 

RequestDispatcher 클래스

요청 받은 요청객체(request)를 위임하는 컴포넌트에 모든 정보를 동일하게 전달 있습니다.

요청 받은 요청객체를 위임 받은 컴포넌트에 전달합니다.

 


Posted by codedragon codedragon

댓글을 달아 주세요

 

 

블로그

·         기본적인 블로그 기능 작성 및 게시글을 페이지로 나누기(Paging 구현)

·         게시판 구축의 기본 작업을 익힐 수 있습니다.

 

 

 

블로그 설계


  

프로그램 구조 도식도


 

 

Posted by codedragon codedragon

댓글을 달아 주세요

 

 

방문자 카운터

홈페이지에서 현재까지의 방문자수(접속자수)를 보여주기 기능입니다.

카운터 기능을 JSP로 구현하기 위해 JSP Beans session객체를 사용하겠습니다.

 

요구 사항

·       사이트가 오픈하면서 처음 방문자 수는 0으로 초기화합니다.

·       방문자 수를 저장할 변수는 사이트를 방문하는 모든 클라이언트(브라우저)에서 공유해야 합니다.

·       A가 브라우저를 통해 사이트의 기본 페이지를 방문하면 현재 방문자 수에서 1을 더하고 그 결과를 보여줍니다.

·       B가 브라우저를 통해 사이트의 기본 페이지를 방문하면 현재 방문자 수에서 1을 더하고 그 결과를 보여줍니다.

·       A 또는 B가 브라우저의 "새로고침"버튼을 누른 경우에 현재 방문자 수에 1을더하지 않습니다.

·       A 또는 B가 현재 사이트의 다른 페이지로 이동했다가 다시 사이트의 기본 페이지를 방문한 경우에도 현재 방문자 수에 1을 더하지 않습니다.

·       지정한 시간이 지난 다음에는 새로고침이나 다른 페이지 이동 후 다시 기본 페이지를 방문한 경우에는 1을 더해 줍니다.

 

 

변수 사용

변수 사용 범위가 사이트를 방문한 모든 클라이언트에서 참조할 수 있고 변수의 수명 기간(scope)이 사이트가 다운되지 않는 한(사이트가 사용하는 서버가 가동중인 동안) 그 값이 유지되어야 합니다. 이를 위해 JSP의 액션태그의 <jsp:useBean>을 사용하여 scope속성이 application으로 지정된 JSP Beans를 이용합니다.

 

 

방문 처리

지정한 시간전에 재 방문한 경우 클라이언트가 사이트를 방문할 때 형성되는 세션동안 그 값을 유지하는 session객체(java.servlet.http.HttpSession클래스)의 변수와 속성을 이용합니다.

하나의 세션 동안 방문자 수를 카운팅하는 페이지를 반복해서 열었을 때 session객체를 이용해서 한번 카운팅된 방문자는 카운팅되지 않도록 할 수있습니다.

 

 

카운팅 처리

session객체가 살아있는 기간을 설정합니다. 예를 들어 한번 사이트를 방문한 다음 30(기본값)이나 1시간이 지난 다음 다시 사이트를 방문한 경우에는 방문자 수를 1 증가시킵니다.

 

Posted by codedragon codedragon

댓글을 달아 주세요


 

서블릿 동작 원리

·       단일 클라이언트 

·       멀티 클라이언트

 

 

 

 

 

단일 클라이언트

요청이 들어올때 마다 처리를 위한 Container객체를 생성하게 됩니다.


 

 

 

 

 

멀티 클라이언트

요청이 들어오면 JVM에서 요청 처리를 위한 Thread 생성하여 처리하게 됩니다. 스레드로 처리함으로써 서버 부하가 적어져 성능이 향상됩니다.


 


Posted by codedragon codedragon

댓글을 달아 주세요

 

JSP 동작 원리

JSP가 요청되어 응답하기까지의 과정을 이해하면, 개발에 많은 도움이 됩니다.

 

 

 

JSP 동작 도식도

클라이언트가 웹브라우저로 helloWorld.jsp를 요청하게 되면 JSP컨테이너가 JSP파일을 Servlet파일(.java)로 변환합니다.

그리고 Servlet파일(.java)은 컴파일 된 후 클래스 파일(.class)로 변환되고, 요청한 클라이언트한테 html파일 형태로 응답 됩니다

 


 

 

 

 

Posted by codedragon codedragon

댓글을 달아 주세요

2019. 2. 12. 01:00

POST 전송 방식 Development/JSP


 

 

POST 전송 방식

·       데이터(data) 별도로 첨부하여 전달하는 방식입니다.

·       Get방식과 달리 브라우저의 주소창에 전송되는 정보가 보이지 않아 성능이나 보안적인 측면에서 Get방식보다 우수합니다. , HTTP 요청은 브라우저에 의해 캐시되지 않으므로, 브라우저 히스토리에도 남지 않습니다.

·       POST 방식의 HTTP 요청에 의한 데이터는 쿼리 문자열과는 별도로 전송됩니다. 따라서 데이터의 길이에 대한 제한도 없으며, GET 방식보다 보안성이 높습니다.

·       서버로 전송하고자 하는 데이터는 HTTP 헤더에 포함되어 전송됩니다.

 

 

post 방식으로 이용한 파라미터 전송시, 요청 데이터

http://localhost:8080/c01ServletMain/greeting


<크롬 요소 검사를 이용한 header 정보 보기>

POST /c01ServletMain/greeting HTTP/1.1

Host: localhost:8080

Connection: keep-alive

Content-Length: 11

Cache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Origin: http://localhost:8080

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36

Content-Type: application/x-www-form-urlencoded

Referer: http://localhost:8080/c01ServletMain/views/greeting.html

Accept-Encoding: gzip, deflate

Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4

 

name=Dennis

 

 

파라미터 값에 한글이 포함되어 있을 경우 인코딩 설정

 

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException{

try {

response.setContentType("text/html;charset=euc-kr");

request.setCharacterEncoding("euc-kr");

                               

} catch (Exception e) {

e.printStackTrace();

}

}

 

 



'Development > JSP' 카테고리의 다른 글

서블릿 동작 원리 - 단일 클라이언트, 멀티 클라이언트  (0) 2019.02.13
JSP 동작 원리, JSP 동작 도식도  (0) 2019.02.13
POST 전송 방식  (0) 2019.02.12
Servlet vs JSP  (0) 2019.02.11
GET 전송 방식  (0) 2019.02.11
Response객체 관련 메소드  (0) 2019.01.28
Posted by codedragon codedragon

댓글을 달아 주세요

2019. 2. 11. 17:35

Servlet vs JSP Development/JSP


 

Servlet vs JSP

 

Servlet

JSP

Server Applet

Java Server Page

자바를 기반으로 하는 개발 표준 언어

자바 기반 스크립트 언어

JAVA(HTML)

  HTML(JAVA)

JAVA언어로 이루어진 웹프로그래밍 문서

HTML파일 내에 JAVA언어를 삽입한 문서

JAVA언어를 이용하여 문서를 작성하고, 출력객체를 이용하여 HTML코드를 삽입하였습니다.

Servlet 반대로 HTML코드에 JAVA언어를 삽입하여 동적 문서를 만들 있습니다.

실행 코드 방식

어플리케이션에서 결과 화면을 생성할 주로 사용

컴파일 수행

내부적으로 Servlet 생성

MVC패턴에서 Servlet Controller 이용됩니다.

MVC패턴에서 JSP View 이용됩니다.

 

 

 


 

 


'Development > JSP' 카테고리의 다른 글

JSP 동작 원리, JSP 동작 도식도  (0) 2019.02.13
POST 전송 방식  (0) 2019.02.12
Servlet vs JSP  (0) 2019.02.11
GET 전송 방식  (0) 2019.02.11
Response객체 관련 메소드  (0) 2019.01.28
Request객체 관련 메소드, Parameter 메소드  (0) 2019.01.28
Posted by codedragon codedragon

댓글을 달아 주세요

2019. 2. 11. 17:21

GET 전송 방식 Development/JSP

 

 

GET 전송 방식

·       주소에 데이터(data) 추가하여 전달하는 방식입니다.

·       Get방식은 URL 데이터정보를 넣어서 전송하는 방식이여서  브라우저 주소창에 정보가 그대로 보이므로 보안상 취약합니다.

·       GET 방식의 HTTP 요청은 브라우저에 의해 캐시되어(cached) 저장됩니다. 크기 또한 1024byte 제한되어 있습니다.

·       GET 방식은 보통 쿼리 문자열(query string) 포함되어 전송되므로, 길이의 제한이 있습니다.

 

get 방식으로 이용한 파라미터 전송시, 요청 데이터

 

http://localhost:8080/c01ServletMain/add?num1=10&num2=20


<크롬 요소 검사를 이용한 header 정보 보기>

 

GET /ServletMain/add?num1=10&num2=20 HTTP/1.1

Host: localhost:8080

Connection: keep-alive

Cache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36

Referer: http://localhost:8080/c01ServletMain/views/add.html

Accept-Encoding: gzip, deflate, sdch

Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4

 

 

 

파라미터 값에 한글이 포함되어 있을 아래와 같이 인코딩되어 서버에 전송 

name=%ED%99%8D%EA%B8%B8%EB%8F%99

 

[톰캣에서 GET방식 파라미터 값을 위한 인코딩 처리]

 

톰캣설치디렉터리/conf/server.xml 에서 아래 코드 수정

 

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"

URIEncoding=euc-kr/>

 

URIEncoding=euc-kr”로 지정하면 GET 방식으로 전송된 파라미터를 읽을 항상 URIEncoding 속성에 지정한 캐릭터 셋을 지정합니다.

----------------------------------------------------------------------

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"

useBodyEncodingForURI=true/>

 

 

useBodyEncodingForURI=true”로 지정하면 GET 방식으로 전달된 파라미터값을 읽어올 request.setCharacterEncoding() 메서드로 지정한 캐릭터 셋이 적용됩니다.

 

 

 



'Development > JSP' 카테고리의 다른 글

POST 전송 방식  (0) 2019.02.12
Servlet vs JSP  (0) 2019.02.11
GET 전송 방식  (0) 2019.02.11
Response객체 관련 메소드  (0) 2019.01.28
Request객체 관련 메소드, Parameter 메소드  (0) 2019.01.28
Ajax 활용  (0) 2019.01.28
Posted by codedragon codedragon

댓글을 달아 주세요


 

Response객체 관련 메소드

 

메소드

설명

addCookie(Cookie)

·         쿠키 데이터를 지정 합니다.

addHeader(String name, String value)

·         응답 헤더 내용을 설정합니다.

containsHeader(String name)

·         name의 헤더 값이 있는지 확인합니다.

encodeURL(String url)

·         세션 ID URL을 합해 전송 코드로 변환합니다.

encodeRedirectURL(String url)

·         sendRedirect에 세션 ID를 넘길 때 사용합니다.

flushBuffer()

·         버퍼의 내용을 클라이언트에 전송합니다.

getBufferSize()

·         출력버퍼 크기를 반환합니다.

getCharacterEncoding()

·         응답할때 문자의 인코딩 형태를 반환합니다.

sendError(int status_code)

·         에러 응답을 클라이언트로 전송합니다.

sendRedirect(String URL)

·         현재 페이지를 지정한 URL로 이동합니다.

sendStatus(int status_code)

·         HTTP 응답상태 코드를 설정합니다.

setBufferSize(int size)

·         출력 버퍼 크기를 설정합니다.

setContentType(String)

·         응답할 내용의 MIME 타입을 지정합니다.

·         캐릭터의 인코딩을 지정할 수 있습니다.

·         html의 표준 MIME 타입인 "text/html" 의 변경이나 캐릭터의 인코딩을 재 지정하고자 할 때 사용합니다.

setHeader(String name, String value)

·         지정된 이름과 값으로 응답 헤더를 설정합니다.

 

 

'Development > JSP' 카테고리의 다른 글

Servlet vs JSP  (0) 2019.02.11
GET 전송 방식  (0) 2019.02.11
Response객체 관련 메소드  (0) 2019.01.28
Request객체 관련 메소드, Parameter 메소드  (0) 2019.01.28
Ajax 활용  (0) 2019.01.28
서버와 데이터를 교환하기 위한 형태  (0) 2019.01.28
Posted by codedragon codedragon

댓글을 달아 주세요