JSP 태그의 개념



JSP도 Servlet과 같은 원리로 동작하기 때문에 다른 CGI 언어에 비해서 속도가 빠르다.



특정 Servlet이 생성될 때 초기에 필요한 데이터(예를 들어 특정 경로, 아이디 정보)들을 초기화 파라미터라고 하며, web.xml에

기술하고 Servlet파일에서는 ServletConfig 클래스를 이용해서 접근합니다.

방법 1. 초기화 파라미터를 web.xml에서 기술

방법 2. Servlet 파일에 직접 기술



첫번째 방법. 초기화 파라미터를 web.xml에서 기술

우선 web.xml 파일을 만들기 위해서

위와 같이 프로젝트 오른쪽 클릭 -> JAVA EE Tools -> Generate Deloyment Descriptor Stub 를 하여 web.xml을 생성한다.


그 후 java 파일에 getInitParam 메소드를 이용해 String 변수에 web.xml에서 가져온 값을 저장할 수 있다.



첫번째 방법. Servlet 파일에서 직접 기술

이렇게 Servlet 파일안에서 바로 기술해준다.


지금까지 두 가지 방식으로 Servlet 데이터값을 초기화 하는 것을 설명했다.

web.xml으로 사용하는 방법은 프록시사용할때나 db접근시 계정이랑 비밀번호 설정을 하드코딩하는걸 막을 수 있을거라고 생각한다.




다음은 Servlet 데이터 공유이다

web.xml에 데이터를 기술하고 Servlet에서 공유하는 간단한 방법이다.


어떤 특정한 Servlet 에서만 초기의 데이터만 들고 와야한다 -> 첫번째 방법

모든 Servlet이 데이터를 공유해야한다. -> 두번째 방법


정리 


데이터를 특정서블릿에서만 공유를 하겠다 (servletConfig 사용)

모든 서블릿에 다 공유하겠다.(servletContext 사용)

웹 어플리케이션을 감시하는 리스너를 만들수 있다. (servletContextListener 사용)



https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/pow

JSP 프로그래밍을 하기 위해서 JAVA EE를 설치하고 Apache tomcat과 Eclipse를 연동하겠다.


다음 유튜브 경로는 

JSP Servlet 동영상 개발 환경 설정을 잘 설명한 유튜브 동영상이다. 참고하길 바란다.

https://www.youtube.com/watch?v=0cy1Oa-2DQg&list=PLYBmkgNU_x7Zj0nCzt5D0qV33C_rU1NK2&index=2




문제는 아무리 찾아봐도 내 이클립스에는 없다는 것이다. 도대체 어떻게 된걸까?

이클립스를 쓴지 얼마 안되는 사람이 자주 저지르는 실수 중 하나긴 하다.

사실 원인을 따지자면 설치때로 거슬러 올라간다.





이클립스가 매우 유명한 자바툴이라 마차 이클립스가 자바 전용인줄 아는 사람이 있다.

그러나 이클립스는 고작 그정도 작은 툴이 아니라 정말 모든걸 다 할 수 있는 어마어마한 툴이다.


여러분이 설치시에 web관련 프로젝트및 파일을 만들 수 없는 이유는 매우 간단하다.

설치시에 여러분은 Java Developers를 선택했다.

그러나 web을 하려면 Java EE Developers를 선택해야한다.

Java EE Developers는 Java Developers를 포함하고 웹까지 담고 있다.





Eclipse에서 Help->Install New Software를 눌러준다.





여기에 Work with에 http://download.eclipse.org/releases/oxygen(이놈엔 여러분 이클립스 버전을 적어라) 까지 타이핑하면 목록에 주루륵 생긴다.

이 목록은 여러분 이클립스버전에서 이클립스 재단이 직접 지원해주는 플러그인 목록이다.





드래그 해서 내려가면 저런 부분이 있다. 딱 찝어서 저 목록을 이야기하지는 않겠다.

왜냐하면 시대에 따라서 저 목록의 이름이 디게 많이 바꼈기 때문이다.

어쨋던 목록에 EE가 있는것을 다운받으면된다.





목록에 EE와 Web이 있는지 확인하면된다. 이제 Next와 Finish를 눌러주자.





설치가 진행된다.



다음은 Tomcat을 설치하는 과정이다
주소창에 tomcat.apache.org를 검색하고 다운로에서 Tomcat 9를 누른다.



그 후 zip 파일을 다운로드 받고 압축을 풀어준다.




그 후 이클립스에 접속하여 오른쪽 상단에 첫번째 아이콘을 클릭한 후 JAVA EE를 추가한다.

JAVA EE아이콘을 선택하고 


Window-> Show View -> Servers를 클릭한 후 서버를 선택한다.





톰캣 서버를 추가하고


프로젝트 추가하기




추가되면 아래 Server탭에 서버가 추가된다.










서버에 대한 설정을 해준다


Specify the server path (i.e. catalina.base) and deploy path. Server must be published with no modules present to make changes.


서버 경로 (예 : catalina.base)와 배포 경로를 지정하십시오. 변경하려면 모듈이없는 서버를 게시해야합니다.


Use Tomcat installation (takes control of Tomcat installation)


Tomcat 설치 사용 (Tomcat 설치를 제어 함)


publish module contexts to separate XML files


XML 파일을 분리하기 위해 모듈 컨텍스트 공개



포트 설정 HTTP/1.1 에 포트넘버를 바꿔주면된다.



이제 하단에 Servers 에서 시작버튼을 눌러 서버를 동작 시켜보자




그 후 Chrome을 켜서 http://localhost:8080 을 검색해보자

나는 포트번호를 8181로 바꿨다. 나중에 Oracle을 Eclipse와 연동할 때 내부적으로 포트번호 8080을 사용하기 때문이다.

Apache Tomcat/ 9.0.10 홈페이지가 뜨면 이클립스와 톰캣의 연동에 성공한 것이다.



설명을 한다고는 했지만 조금 정신이 없을 것이다.


https://www.youtube.com/watch?v=0cy1Oa-2DQg&list=PLYBmkgNU_x7Zj0nCzt5D0qV33C_rU1NK2&index=2


이곳에 들어가서 10분정도만 투자한다면 빠르게 연동할 수 있을것이다.


























JSP와 Servlet?? 어떤 개념을 가지고 있고 어떤 차이가 있는지 알아보도록 하겠다.

1. Servlet

 정확한 이해가 필요 할 듯 하다. 서블릿(servlet)은 서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램이다. servlet은 Java코드 안에 HTML태그가 삽입되며 자바언어로 되어있다. .java가 확장자이다. 
 서블릿의 단어는 Server + Let의 합성어라고 알고 있는 사람도 있고 Server + Applet으로 알고 있는 사람도 있다. 사실 둘다 어려운 느낌이다. 하지만 쉽게 풀어보면 '클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 servlet 클래스의 구현 규칙을 지킨 자바프로그램'이라고 이해하면 좋을 듯하다. 
 서블릿(servlet)은 자바언어를 웹어플리케이션에 조금 더 개발하기 쉽게 하기 위해 만든 API(라이브러리, 클래스 들)이며 이 규약에 맞는 라이브러리나 클래스들을 상속 및 구현하여 만든 클래스들을 서블릿이라고 한다.

2. JSP(Java Server Pages)

 HTML을 코딩하기 너무 어렵고 불편해서 HTML 내부에 Java코드를 삽입하는 형식이 JSP이다. 다시 말해 서블릿의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술이다. 서블릿을 이용하게 되면 웹프로그래밍을 할 수 있지만 자바에 대한 지식이 필요하며 화면 인터페이스 구현에 너무 많은 코드를 필요로 하는 등 비효율적인 측면들이 있다. 때문에 서블릿을 작성하지 않고도 간편하게 웹프로그래밍을 구현하게 만든 기술이 JSP(Java Server Pages)이다.

 조금더 알아보자면 JSP(Java Server Pages)는 서블릿 기반의 '서버 스크립트 기술'이다.
여기서 스크립트 기술이란 ASP, PHP 처럼 미리 약속된 규정에 따라 간단한 키둬드를 조합하여 입력하면, 실행 시점에 각각의 키워드에 매핑이 되어 있는 어떤 코드로 변환 후에 실행되는 형태이다.

JSP는 Java소스로 사용하여 웹페이지에 접근하고 페이지 전환을 통하여 웹브라우저에 전달한다.
3. JSP와 Servlet의 차이 및 비교
Servlet
JSP
~ 자바코드로 구현하고 컴파일하고 배포해야 한다.
~ HTML태그로 문자열("")스크림으로 처리해야 한다.
~ 코드가 수정되면 다시 컴파일하고 배포해야 한다.
~ 키워드가 태그화 되어 서블릿에 비해 배우기 쉽다.
~ 자바코드를 <%%>태그 안에 처리해주어야 한다.
~ HTML처럼 태그를 사용하여 자바코드도 사용이 가능하다.
4. Servlet과 JSP의 역할

 내 용만 보게 된다면 서블릿이나 JSP나 만드는 방법에 차이가 있을 뿐 동일한 역할을 한다는 것을 알수 있다. 초기에 자바 웹개발은 서블릿을 이용한 개발이였다. 이후 JSP기술이 발표되면서 JSP형태의 개발이 유행하게 되고 지금에 와서 각각의 역할을 나누어 Servlet+JSP형태의 개발이 이루어지고 있다.

 JSP는 JSP기술의 장점을 최대한 활용 할 수 있는 웹에플리케이션 구조에서 사용자에게 결과를 보여주는 프리젠테이션 층을 담당하고 Servlet은 Servlet기술의 장점을 최대한 활용 할 수 있는 사용자의 요청을 받아 분석하고 비지니스 층과 통신하여 처리하고 처리한 결과를 다시 사용자에게 응답하는 컨트롤러 층을 담당한다.

5. MVC 패턴의 JSP와 Servlet

 얼마전까지만 하더라도 JSP만 이용한 개발(Model1 방식)이 유행하다 현재는 유지보수단계에서 많은 단점을 느껴 각각의 역할을 나누어 서블릿과 JSP를 동시에 사용하여 개발하는 방식(Model2 방식)으로 개발하고 있어 현재는 Servlet과 JSP를 나누어 사용하고 있다. 그리하여 JSP는 HTML태그 사용이 용이하고 자바코드 사용이 불편하기 때문에 웹어플리케이션에서 사용자에게 결과를 보여주는 View(Client)를 담당하고 Servlet은 자바코드 작성이 편리하기 때문에 주로 화면과 통신하여 자료를 받아 가공하고 가공한 자료를 다시 화면에 전달하는 Controller역할을 하고 있다.

~ JSP와 Servlet 동시에 사용 MVC모델(View는 JSP, Controller는 Servlet을 사용)
~ 프리젠테이션 로직과 비즈니스 로직 분리
(보여지는 부분은 HTML이 중심이 되는 JSP, 다른 자바클래스에게 데이터를 넘겨주는 부분은 Java코드가 중심이 되는 Servlet이 담당)
~ 유지보수 용이 

MVC패턴
Model2
기능
Model
서비스클래스 or 자바빈
~ 비지니스 로직을 처리하는 모든 것이 모델에 속한다. 컨트롤러부터 특정 로직에 대한 처리 요청(게시판 글쓰기, 회원 가입 등)이 들어오면 이를 수행하고 수행 결과를 컨트롤러에 반환한다.
(request 객체나 session객체에 저장하기도 함)
View
JSP페이지
~ 클라이언트에 출력되는 화면을 말한다. 모델1과는 달리 로직 처리를 위한 코드가 내포되어있지 않다. 요청 결과의 출력 뿐만 아니라 컨트롤러에 요청을 보내는 용도로도 사용된다.
(request객체나 session객체에 저장된 정보를 토대로 화면 출력)
Controller
Servlet
~ MVC패턴(Model2)모든 흐름제어츨 맡는다. 브라우저로 요청이 들어오면 어떤 요청이 들어오는지 분석하여 이 요청을 처리하기 위한 모델을 사용하여 처리한다. 사용한 모델로 부터 처리결과를 받으면 추가로 처리하거나 가공해야 할 정보가 있다면 처리 후 request객체나 session객체에 저장하고, View(JSP페이지)를 선택하여 Foward나 redirect하여 클라이언트에 출력한다.
장점
단점
~ 출력을 위한 뷰 코드와 로직처리를 위한 자바코드를 분리하기 때문에 JSP모델1에 비해 코드가 복잡하지 않다.
~ 뷰, 로직처리에 대한 분업이 용이하다.
~ 기능에 따라 분리되어 있기 때문에 유지보수가 용이하다.
~ 구조가 복잡하여 습득이 어렵고 작업량이 많다.
~ Java에 대한 깊은 이해도가 필요하다.

JSP파일은 결국 서블릿으로 변환이 되어 실행된다. JSP파일이 Servlet으로 변환되는 과정은 오직 한번만 일어나므로 같은 페이지에 수많은 사용자의 요청이 있더라도 처리속도는 거의 떨어지지 않게 된다. 만약 JSP페이지의 코딩 내용이 변경된다면 다시 변환 과정을 거친다. 즉 JSP가 서블릿을 기반으로 하고 있기 때문에 JSP의 동작 방식을 이해하기 위해서는 Servlet에 대한 이해도도 필요하다.

 지금까지 JSP와 Servlet에 관하여 알아봤습니다.


+ Recent posts