[  ORACLE DB 특수문자 제거, 숫자만 빼고 다 제거 쿼리문   ]





--치환할 문자를 |로 구분하여 입력 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs', 'Stay|Foolish|Steve', '') FROM DUAL --결과: Hungry, . - Jobs ; --문자를 제거만 할꺼면 3번재 파라미터는 생략가능 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs', 'Stay|Foolish|Steve') FROM DUAL --결과: Hungry, . - Jobs ; SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs 2005', 'Stay|Foolish|Steve', '###') FROM DUAL --결과: ### Hungry, ### ###. - ### Jobs 2005 ; --특수문자 제거 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs', '[[:punct:]]') FROM DUAL --결과: Stay Hungry Stay Foolish Steve Jobs ; --숫자를 제외한 모든문자 제거 (숫자만) SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs 2005', '[^[:digit:]]') FROM DUAL --결과: 2005 ; --$같은 특수문자를 치환하기 위해서는 Escape 문자(\)를 붙여 줘야함 SELECT REGEXP_REPLACE('$Stay Hungry, Stay Foolish. - Steve Jobs', '-|\$') FROM DUAL --결과: Stay Hungry, Stay Foolish. Steve Jobs





참조 : http://gent.tistory.com/82

출처: http://wjheo.tistory.com/entry/특수문자-제거-숫자만-빼고-다-제거 [IT world]

출처: http://wjheo.tistory.com/entry/특수문자-제거-숫자만-빼고-다-제거 [IT world]

[    JSP FrontController 패턴, Command 패턴, RequestDispatcher를 이용한 forward에 대하여...    ]





- FrontController 패턴이란?

모든 요청을 하나의 서블릿 파일에서 받아서 처리하는 방식


- Command 패턴?

FrontController에서 받은 요청을 분석해 어떤 처리가 필요한지에 따라서 각 처리에 필요한 Command 객체를

할당해 그곳에서 처리한 뒤 필요한 데이터를 가지고 FrontContrller로 보내주고 그 데이터를 request 객체 등에

세팅해 RequestDispatcher 객체를 통해서 화면 전환시 request, response 객체를 함께 전달해주는 방식

이때, RequetDispatcher 객체의 특징!!

: 현재 페이지의 request, response 객체를 그대로 전달할 수 있다.!



- frontControllerEx.jsp
: 하나는 insert.do로 하나는 delete.do 라는 uri로 요청을 하고 있다. 단 둘 다 .do로 끝나는 패턴을 채택하고 있다.



- FrontController.java
.do로 끝나는 모든 요청을 받을 수 있도록 @WebServlet을 통해 서블릿 맵핑이 되어 있다.
또한, get방식이든 post 방식이든 모두 actionDo라는 메서드를 수행하도록 되어 있고 해당 메서드에서는
요청받은 uri를 가지고 와서 어떤 작업이 필요한지 command를 분석한다.

분석하고 처리에 필요한 Service를 지정해 해당 service에서는 dao에 접근해 데이터를 처리하고 FrontController로 반환해준다.
service를 통해 가지고 온 데이터는 request 객체에 저장하고
해당 requets 객체와 response객체를 데이터를 뿌려줄 화면으로 전달하기 위해
RequestDispatcher 객체를 사용해서 전달해준다.
이 객체의 특징은 현재 페이지의 request, response 객체를 그대로 전달할 수 있다는 점이다!!


- Service 인터페이스
: 다형성 적인 측면과 코드의 관리적 측면 때문에 모든 커맨드 객체들을 포함할 수 있도록 Service 인터페이스를 만들고
모든 Command 객체들은 이 Service 인터페이스를 implements 하도록 구현한다. 이때 execute 메서드를 재구현 할 수 있도록
execute 메서드를 선언해 놓는다.


- 각 처리에 필요한 Command 클래스 중 하나
: Service 인터페이스를 구현하고 execute 메서드를 재정의한다.
실재로 이 커맨드 객체에서 dao를 통해 DB에 접근해서 원하는 데이터를 가지고 오는 작업을 해야하지만
현재 코드에서는 생략하도록 하였다.


- FrontController에서 request 객체에 세팅한 값들을 가지고오는 페이지이다.



[    JSP JSTL(Java Standard Tag Liarary)    ]


JSTL은 Java Standard Tag Libarary의 약자로

EL가 같이 사용되어 스크립트릿과 태그를 번갈아 가며 작업할 때의 불편함을 없애기 위해 나왔다.

아래는 사용 예제이다.

하지만, 그 전에 

1. http://tomcat.apache.org/taglibs/standard/ 로 들어간다.


가장 안정적인 버전은 JSTL 1.1 버전이니, 이걸 다운받도록 한다.


2. binaries를 클릭하고, 1.1.1.zip을 받는다.




 다운을 받고 압축을 풀어 lib 폴더에 들어간다.


 두 파일을 복사하여 STS 프로젝트의 WebContent 폴더안의 Web-INF 안의 lib 폴더에 복사한다.


이렇게 까지 하면 세팅 완료 이제 jstl을 사용할 수 있다.


jstl을 사용하려면 <%@taglib 을 등록해주어야 한다. 여기서는 대표적으로 코어(c) 태그 라이브러리만 예제를 사용해 보겠다.



[    JSP EL(Expression Language) 표현언어    ]




EL : Expression Language 표현언어로 표현식, 액션태그를 통해 출력하는 것을 좀더 편리하게 출력할 수 있도록 해준다.



예제를 보기 전에 프로젝트 전체에서 사용할 초기화 변수를 web.xml에 등록하고



객체를 쉽게 가져올 수 있음을 테스트하기 위해 StudentDTO 빈즈를 만들어 놓고...



본격적인 EL 예제)
ELPractice.jsp



- ELPractice2.jsp



[ JSP 파일업로드 ]




jsp에서 파일업로드를 지원하는 라이브러리는 다양한 것들이 있지만 대표적인 것이 cos.jar이다.

해당 라이브러리를 다운받는 사이트는 http://servlets.com/cos/   에서 스크롤을 내리다보면 다운로드가 있다.

해당 파일을 다운로드해서 압축을 풀어 lib에 들어가보면 cos.jar파일이 보이는데 해당 파일을

자신의 프로젝트의 WEB-INF/lib 폴더에 넣고 동기화를 해주면 된다.


- [ 파일 업로드 폼 ] : fileUploadForm.jsp



이때, 파일을 저장할 디렉토리가 필요함으로 프로젝트 WebContent 하위에 uploadFile 폴더를 하나 만들자

이제 이 폴더에 업로드한 파일이 저장되도록 할 것인데, 프로젝트 내에 위치했다해서 워크스페이스 내에 있는 것이 아니다!!

실제 파일의 위치는 자신의 톰캣 서버 내의 프로젝트 폴더 내에 위치하고 있다는 점을 알아야한다.

만약 정확히 모르겠다면 jsp페이지에서 절대경로를 찍어보면 된다.




- fileUpload.jsp 
: 파일 업로드




-fileCheck.jsp
: 파일 체크 페이지








-fileDown1.jsp
: 파일 다운 페이지


'스터디 > JSP' 카테고리의 다른 글

JSP JSTL(Java Standard Tag Liarary)  (0) 2017.08.18
JSP EL(Expression Language) 표현언어  (0) 2017.08.16
JSP 커넥션 풀(Connection Pool)  (0) 2017.08.16
JSP DB(데이터베이스)  (0) 2017.08.14
JSP 자바 빈즈(JAVA BEANS)  (0) 2017.08.14
커넥션 풀이란?

: jsp에서 데이터베이스와 관련된 처리를 할 때 가장 오래 걸리는 부분이 커넥션(Connection)을 생성하는 부분이다.

많은 사용자들이 요청할수록 그것은 더 심한데 그럴 경우 서버가 처음 로딩될 때 미리 일정량의 Connection 객체를

커넥션 풀에 생성해 두고 그곳에서 가져다 사용하고 반납하는 개념이다.

이때, 커넥션 풀에 생성한 커넥션들을 관리하는 객체가 DataSource라는 객체이다.


구현 방법)

먼저, 서버가 로딩될 때 생성해야 함으로 server의 context.xml 파일에서 작업을 한다.



- context.xml
이곳에 아래의 소스코드를 추가한다.
driverClassName, url, username, passowrd 등은 우리가 디비 연결시 필수적으로 필요했던 항목이고
maxActive는 미리 생성해놀 커넥션의 수이다.
maxWiat의 경우 미리 생성한 커넥션 이상의 요청이 들어왔을 때 추가로 커넥션을 생성할 때 최대 기다릴 수 
있는 시간을 설정하는 것이다. 즉 timeout 을 설정
type은 커넥션을 관리하는 DataSource이다.

- db 객체를 얻어오는 페이지



'스터디 > JSP' 카테고리의 다른 글

JSP EL(Expression Language) 표현언어  (0) 2017.08.16
JSP 파일업로드  (2) 2017.08.16
JSP DB(데이터베이스)  (0) 2017.08.14
JSP 자바 빈즈(JAVA BEANS)  (0) 2017.08.14
JSP 에러페이지에 대하여...  (0) 2017.08.11


[    JSP DB(데이터베이스)    ]





'스터디 > JSP' 카테고리의 다른 글

JSP 파일업로드  (2) 2017.08.16
JSP 커넥션 풀(Connection Pool)  (0) 2017.08.16
JSP 자바 빈즈(JAVA BEANS)  (0) 2017.08.14
JSP 에러페이지에 대하여...  (0) 2017.08.11
JSP 쿠키(cookie)에 대하여...  (0) 2017.08.11

[    JSP 자바 빈즈(JAVA BEANS)    ]







그렇다면 지금까지 살펴본 빈즈는 왜 사용하는 것일까?? 무엇인가 편리한게 있지 않을까?


그렇다. 빈즈를 이용하면 우리가 form 태그에서 input 태그 등을 이용해서 많은 값들을 submit으로 보낼 때


이러한 값들을 일일이 하나씩 request.getParameter("name") 등으로 가져오지 않고 한번에 빈즈 객체에 저장시킬 수 있다.


매우 편리하다!!


하지만, 조건이 있다. form태그에 있는 input 태그 등의 name값과 빈즈의 필드변수명이 일치해야만 한다.


아래의 예제를 보자.


-PeopleBeans 클래스



-beansMain.jsp : 폼태그가 있는 페이지


-beans.jsp : 폼태그에서 서브밋해 데이터를 전달받을 페이지



'스터디 > JSP' 카테고리의 다른 글

JSP 커넥션 풀(Connection Pool)  (0) 2017.08.16
JSP DB(데이터베이스)  (0) 2017.08.14
JSP 에러페이지에 대하여...  (0) 2017.08.11
JSP 쿠키(cookie)에 대하여...  (0) 2017.08.11
JSP에서의 세션(session)에 대해서...  (0) 2017.08.11

[    eclipse(이클립스) 자바스크립트(javascript) 자동완성 플러그인 설정하기    ]



이클립스에서 자바스크립트 사용시 ctrl + space 를 눌러 자동완성이 가능하도록 세팅하는 방법에 대한 포스팅입니다.


두가지 작업을 해주어야 합니다.


1. Help 탭->Eclipse Market place->Webclipse 검색 후 설치(install) 후 restart합니다.



2. 두번째로 window탭->preferences->Ant->editor->Content Assist에서 enable auto activation을 체크합니다.





추가하고 나면 아래와 같이 자동완성이 가능한 것을 볼 수 있습니다.



[    JSP 에러페이지에 대하여...    ]


jsp 페이지 처리 도중 404, 500에러 페이지가 뜨면 일반 사용자에게 불쾌감을 줄 수 있어

UI등을 꾸며놓은 친숙한 에러페이지를 띄우도록 할 수 있다.

두가지 방법이 있는데

1. page 지시자를 이용한 방법

2. web.xml에 error-page 를 등록하는 방법이 있다.

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


[  1. page 지시자의 errorPage와 isErrorPage 속성을 이용한 방법  ]
main.jsp

errorPage.jsp







[ 2. web.xml에 등록하는 방식 ]


main2.jsp

web.xml에 등록하는 방식일 때는 page지시자의 errorPage를 사용하면 안된다.




web.xml
error-page 태그내에 404에러일 때 띄울 페이지, 500에러일 때 띄울 페이지를 지정했다.



error404.jsp
실재 404 에러 발생시 띄울 페이지이다.
response.setStatus(200) 은 꼭 해주도록 하자. 자동으로 500으로 세팅되어 제대로 에러 페이지가 호출되지
않을 수 있기 때문
200번 상태코드는 현재 페이지가 정상적인 페이지라는 의미이다.



'스터디 > JSP' 카테고리의 다른 글

JSP DB(데이터베이스)  (0) 2017.08.14
JSP 자바 빈즈(JAVA BEANS)  (0) 2017.08.14
JSP 쿠키(cookie)에 대하여...  (0) 2017.08.11
JSP에서의 세션(session)에 대해서...  (0) 2017.08.11
JSP 액션 태그(forward,include,param)  (0) 2017.08.10
- 자바스크립트의 지역변수와 전역변수 개념

=> 함수내에 선언된 변수만 지역변수!! 그 외에는 다 전역변수이다. 즉, 함수내에 선언된게 아니면
어떠한 블럭이건 for문 안에서건 전부 전역변수이다.

{
var param = 10;
}
이것도 어면히 전역변수
var f = function(){
var str = "string";
}
이 str변수는 지역변수



[ 자바스크립트의 객체(Object)에 대해서]


actionTag.jsp


forward01.jsp



include02.jsp



request 내장 객체



response 내장 객체





include01.jsp


[ servlet 초기화 파라미터, 컨텍스트 파라미터, 서블릿 컨텍스트 리스너]


1. 서블릿 초기화 파라미터

: 특정 서블릿에서만 사용될 수 있는 초기화 파라미터를 지정해서 가져다 사용할 수 있다.

2가지 방법)

1) web.xml의 servlet 태그 내에 정의하기

servlet


web.xml



2) 어노테이션으로 @WebServlet(initParams={@WebInitParam(name="",value="")} 방식으로 지정하기



2. 모든 Servlet에서 사용할 수 있는 초기화 변수 설정하기(컨텍스트 파라미터)

: web.xml에 context-param 태그 내에 선언한다.

서블릿에서 가져다 사용할 때는 getServletContext() 를 가져온 뒤 getInitParameter("")을 사용해 값을 꺼내온다.

web.xml

servlet





3. ServletContextListener 를 이용한 어플리케이션 시작과 종료 감시

: web.xml에 listener를 등록해 놓으면 어플리케이션 시작과 종료시에 contextDestroyed 메서드와

contextInitialized 메서드가 호출된다.

이는 각 서블릿의 init() 메서드보다 먼저 호출되는 것이며
최종적으로 destroy() 메서드보다 이후에 호출된다.

구현 방식은
ServletContextListener 인터페이스를 implement해서 클래스를 작성하고
해당 클래스를 web.xml에 리스너 태그 내에 등록한다.
servlet
web.xml




[ 브라우저 체크 ]

var agt = navigator.userAgent.toLowerCase();
if (agt.indexOf("chrome") != -1) return 'Chrome'; 
if (agt.indexOf("opera") != -1) return 'Opera'; 
if (agt.indexOf("staroffice") != -1) return 'Star Office'; 
if (agt.indexOf("webtv") != -1) return 'WebTV'; 
if (agt.indexOf("beonex") != -1) return 'Beonex'; 
if (agt.indexOf("chimera") != -1) return 'Chimera'; 
if (agt.indexOf("netpositive") != -1) return 'NetPositive'; 
if (agt.indexOf("phoenix") != -1) return 'Phoenix'; 
if (agt.indexOf("firefox") != -1) return 'Firefox'; 
if (agt.indexOf("safari") != -1) return 'Safari'; 
if (agt.indexOf("skipstone") != -1) return 'SkipStone'; 
if (agt.indexOf("msie") != -1) return 'Internet Explorer'; 
if (agt.indexOf("netscape") != -1) return 'Netscape'; 
if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla'; 


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

윈도우8이 발매를 시작하면서 IE10(Internet Explorer)도 이런저런 문제가 생기네요.

우선 자바스크립트로 인터넷익스플로러 버전 체크할때 부터도 문제가 있습니다.

이건 이전 버전의 브라우저도 아직 발생되고 있는 현상인데요.

예를 들어 제가 IE9.0을 사용할 경우 버전을 체크할 경우

navigator.userAgent.indexOf('9.0') 으로 실행할 경우 
30 이란 값이 나옵니다. 유저 정보의 30번째 문자열에 정보가 있다는 것이지요

해당 정보가 없을 경우 -1값을 떨굽니다.

그래서 IE9.0의 버전을 찾을 경우 이런식으로 처리하면 됩니다.

if(navigator.userAgent.indexOf('9.0') == -1) {
  alert('사용중인 IE가 IE9.0 이 아님');
}else{
  alert('사용중인 IE가 9.0임');
}

하지만

Internet Explorer 8.0 부터 있는 기능인 [호환성보기] 기능을 사용할 경우

버전찾기에 문제가 생기게 됩니다. 

정확한 버전을 체크하지 못하게 되죠

alert(navigator.userAgent); 를 실행할 경우 출력값이 다릅니다.

[호환성보기 설정이 되어 있지 않은 경우] - 정상적으로 버전을 구할 수 있습니다.
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" 

[호환성보기 설정이 사용중인 경우] - IE8.0 이상에서는 거의 모두 7.0으로 표기가 됩니다.
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C)"

때문에 위 처럼 버전을 체크할 경우 7.0으로 나오게 됩니다.

이 현상은 IE10에서도 마찬가지 입니다.

그래서 [IE8.0], [IE9.0], [IE10.0]을 사용하는 사람이 [호환성 보기 기능]을 사용한다면 정확한 IE 버전을 체크하기 힘들더군요

확인해 보니.. IE8.0 이상 부터는 유저 정보에 Trident 라는게 붙습니다.

그리고 뒤에는 버전이 출력되지요. 브라우저 별로 보면 아래와 같이 나옵니다.

 IE6.0 = null
 IE7.0 = null
 IE8.0 = Trident/4.0
 IE9.0 = Trident/5.0
IE10.0 = Trident/6.0

아래와 같이 처리를 하면 해당 브라우저의 버전을 체크 할 수 있습니다.

if(navigator.userAgent.match(/Trident\/(\d.\d)/i)[1] == '6.0'){

  alert('IE10 입니다.');

} else{

  alert('IE9 이하 입니다.');



이렇게 처리할 경우 다른 문제점이 하나 더 있습니다.

IE7.0 이하일 경우에는 해당 내용이 없기 때문에 null이 발생됩니다.

그래서 아래와 같이 하면 정상적으로 처리가 됩니다.

var trident = navigator.userAgent.match(/Trident\/(\d.\d)/i);
if(trident != null && trident[1] == "6.0"){
  alert('IE10 입니다.');
} else{
  alert('IE9 이하 입니다.');
}

다른 방법이 있을수도 있겠지만, 분기처리나 기타등등..
 
여튼 이렇게 할 경우 해당 버전을 찾는게 가능합니다.



[HTML form 태그]




[Servlet]



<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <title></title>

  </head>

  <body>

    <ul>

      <li>HTML</li>

      <li>CSS</li>

      <li id="active">JavaScript</li>

    </ul>

    <script type="text/javascript">

      // 복수개의 li가 선택됨

      var liObjs = document.getElementByTagName('li');

      for(var i=0; i<liObjs.length; i++){

        console.log(liObjs[i].innerHTML());

      }

      // 부모 요소로 접근하기

      // jquery에서는 parent()

      var ulObj = liObjs[1].parentNode;

      // 부모요소에서 2번째 자식 요소 제거하기

      ulObj.removeChild(liObjs[1]);

      // 자식 요소 중 첫번째 요소 콘솔 찍기

      console.log(ulObj.childNodes[0]);

    </script>

  </body>

</html>



[    servlet의 라이프사이클(lifecycle)    ]




해당 jsp 페이지 요청시 servlet java 파일로 변환을 하고 컴파일 해 servlet class로 만들고 해당 객체를 생성하는데
한번 객체가 생성되고 나면 이후 다른 Client 요청은 멀티 쓰레드로 처리하게 된다.


Servlet의 라이프 사이클)

Servlet 객체 생성         -   최초 한번 생성
    |
@PostConstructor 호출 -   생성자 이후, init 메서드 이전에 호출
    |  
init() 메서드 호출         -   최초 한번 호출
    |
doGet()/doPost() 호출   -   요청시마다 호출
    |
destroy() 호출             -    마지막 한번(자원 해제)
    |
@PreDestroy 호출        -   destroy() 이후 호출



[ Servlet Mapping ]



- Servlet 문서는 자바로 된 웹 프로그래밍 문서로서 MVC 패턴에서 Controller를 담당한다.


이때, 특정 URL로 요청시 해당 Servlet 문서가 동작할 수 있도록 Mapping(맵핑) 작업을 해주어야 하는데 이와 같은 작업에는

두가지 방식이 있다.


- [ Mapping 방식 ]

1. web.xml 에서 맵핑 설정하기


2. Annotation(어노테이션)을 이용하기


먼저, web.xml에서 맵핑을 설정할 경우

해당 Servlet 문서를 생성한 뒤, web.xml에 들어가서

다음과 같이 설정한다.

아래는 Helloworld라는 Servlet class 파일에 대한 맵핑을 설정한 것이다.



두번째로 어노테이션을 이용한 맵핑 방식이다.

@WebServlet 의 괄호 안에 맵핑할 URI 패턴을 적어준다.

현재 프로젝트의 컨텍스트 패스가 /ex임으로 http://localhost:80/ex/hw 로 해당 Servlet 문서가 맵핑된다.



1. http://www.sba.seoul.kr:80/kr/index?contries=seoul

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

     1                2          3       4             5


1) 프로토콜 : 통신 규약 ex) http, https, FTP, SMTP ...

2) IP : 컴퓨터를 구분해주는 컴퓨터 주소 부분 but 쉽게 인식할 수 있도록 DNS로 표시

-> www.naver.com 등이 다 도메인이고 DNS를 통해 IP주소로 변환된다.

3) port : IP가 컴퓨터를 구분해 준다면 port는 해당 컴퓨터에서 프로그램을 구분해주는 주소 80번은 웹 default 포트이다.

4) context path 및 URI 부분

URL vs URI

: URL은 위와 같은 풀 경로를 가리키고 URI는 컨텍스트 패스 이후부터의 경로를 의미한다.

5) Query 문자열 : GET방식으로 데이터를 넘길 때 붙는 부분



2. [ 웹서버와 WAS(Web Application Server) 간의 차이 및 동작 방식 ]


- 웹서버 : 정적인 서비스를 지원해 준다. 단순히 HTML 문서 등을 응답할 때 사용

- WAS(Web Application Server) : 동적인 서비스를 지원해 준다. JSP페이지 등에서 DB 접근하고 특정 로직을 수행하는 등 동적인 처리후 응답을

   해줄 경우 이용된다.

=> WAS에서 웹서버의 역할을 할 수 있음에도 웹서버와 WAS를 분리시킨 이유?

: 간단 간단한 정적 페이지에 대한 요청을 웹서버가 처리해줌으로써 트래픽이 WAS로 전부 쏠리는 걸 분산시켜 처리하기 위해서


[ 기본적인 웹 동작 방식 ]

Client 브라우저(크롬,IE,사파리...) -request-> 웹서버 -> WAS(Web Application Server) -> DB

   <-response            <-                                        <-


3. [ JSP와 Servlet의 관계 ]


- JSP : 

HTML 문서 내에 자바 코드를 포함하는 문서로

- JSP페이지는 Servlet 으로 변환된다.

- MVC 패턴에서 View를 담당한다.


- Servlet :

JAVA언어로 웹프로그래밍 문서로

- MVC 패턴에서 Controller를 담당한다.



4. [ JSP에서의 MVC 패턴 ]


MVC 패턴

: Controller(Servlet 문서)

  Model <-> DB

  View(JSP 문서)

  로 분리하여 화면(View)와 데이터 처리를 분리시킨 방식으로 JSP에서는 Servlet이 Controller를 JSP 문서가 View를 

  담당하는 것이 일반적이다.



5. [ Client Request에 따른 JSP 처리 로직 ]


: Client Browser(크롬,IE,사파리...)에서 단순히 정적인 HTML 페이지 요청시 웹서버는 바로 HTML 페이지를 Response(응답)해 준다.

하지만, 동적인 작업이 필요한 특정 JSP페이지를 요청시(ex helloworld.jsp) 웹서버는 WAS로 요청을 보내게 되고

WAS는 컨테이너에 해당 JSP페이지에 대한 Servlet 객체가 있는지를 확인한다 있다면 해당 Servlet 객체의 doGET, doPOST 메서드를 통해

최종적으로 HTML 문서를 Client에게 응답하게 된다.


하지만, 요청한 JSP페이지에 대한 Servlet 객체가 존재하지 않는다면

우선, 요청한 JSP 페이지(helloworld.jsp)를 Servlet 자바 파일로 변환하게 된다.(helloworld_jsp.java)

그 뒤, 해당 Servlet 자바 파일을 컴파일 해 helloworld_jsp.class 와 같은 클래스 파일로 변환하게 되고

해당 class를 기반으로 Servlet 객체를 생성해 메모리에 적재하고 doGET, doPOST 메서드를 수행하여

최종적으로 Client 브라우저에 HTML 문서의 형태로 Response(응답)을 해주게 된다.




 


[ 자바스크립트로 제어하고 싶은 대상 선택하기(찾기) ]






+ Recent posts