개요
개발자가 자바를 설치한다는 것은
JRE(Java Runtime Enviroment)와 JDK(Java Development Kit)을 설치한다는 것을 뜻합니다.
JRE는 Servlet과 JSP 등을 실행 시켜주는 일종의 엔진 입니다.
(그 외 JAVA로 만들어진 어플리케이션을 실행합니다만 웹 프로그래밍에서는 논외 입니다.)
JDK는 개발자가 사용하는 여러가지 개발용 도구들이 들어 있습니다.
대표적으로 javac.exe가 있는데, *.java 파일을 컴파일 하는 도구(컴파일러) 입니다.
더 알고 싶으시면 http://folt.egloos.com/viewer/2353901 이 블로그를 참고 하세요.
JDK(Java Development Kit) 설치 - JRE가 함께 포함되어 있습니다.
http://www.oracle.com/technetwork/java/javase/downloads/index.html
자신의 시스템에 맞는 것을 다운로드 받아 설치합니다.
변수 값 마지막에
javac.exe 가 있는 경로를 추가 합니다.
C:\Program Files\Java\jdk1.8.0\bin\;
'사용자 변수 편집' 창에서 확인 누르고, '환경 변수' 창에서도 확인 눌러줘야 적용 됩니다.
(재부팅하지 않아도 되지만 시스템 속성 창 까지 닫아주어야 합니다.)
* 사용자 변수 쪽에 Path가 보이지 않는다면, 시스템 변수 쪽에 있는 Path를 수정하십시오.
시작 > 실행 > cmd 를 입력하여, 커맨드 창을 하나 열고,
javac 엔터를 입력하여 패스가 잘 걸렸는지 확인합니다.
*이렇게 설정하는 이유는 컴파일 할 때 조금이라도 타이핑을 줄이기 위해서 이다. 적어도 경로는 안쳐도 됩니다.
다음으로 시스템 변수에 JAVA_HOME, JRE_HOME을 추가할 겁니다.
변수 이름: JAVA_HOME
변수 값: C:\Program Files\Java\jdk1.8.0
변수 이름: JRE_HOME
변수 값: C:\Program Files\Java\jre8
커맨드 창에서 cd %JAVA_HOME% 를 입력하여 잘 이동되는지 확인해 봅니다.
커맨드 창에서 cd %JRE_HOME% 를 입력하여 잘 이동되는지 확인해 봅니다.
*환경변수를 설정해야 하는 이유는 자바 기반 각종 프로그램에서, JAVA_HOME이라던가 JRE_HOME 같은 변수를 사용하기 때문입니다. 이것은 약속 아닌 약속 입니다.
'JSP' 카테고리의 다른 글
자바 웹 어플리케이션 폴더 구조 / 요청에서 응답까지 기본적인 실행 순서 (0) | 2013.10.20 |
---|---|
서블릿 요청에 대한 컨테이너의 요청처리 순서 (0) | 2013.10.10 |
웹 어플리케이션 발전 순서 - HTML > CGI > JSP & Servlet (0) | 2013.10.10 |
HTTP 기초 (0) | 2013.10.10 |
JAVA 웹 개발환경 세팅 - JSP 개발환경 세팅 - 수동컴파일(no eclipse) (0) | 2013.10.10 |
요청에서 응답까지 다양한 실행 순서
서블릿만 사용시 | 컨테이너 | 서블릿 | 컨테이너 | |||
모델 사용시 | 컨테이너 | 서블릿 | 모델 | 서블릿 | 컨테이너 | |
JSP 사용시 | 컨테이너 | 서블릿 | JSP | 컨테이너 | ||
모델+JSP 사용시 | 컨테이너 | 서블릿 | 모델 | 서블릿 | JSP | 컨테이너 |
요청에서 응답까지 기본적인 실행 순서- JSP 사용시 / 모델 사용시
순서 | 설명 |
컨테이너(톰캣) | servlet 이라면 DD(web.xml)을 참조하여, 해당 servlet 스레드를 생성하고, HttpSevletRequest, HttpServletResponse 를 생성하여 인자로 넘기며, 해당 servlet의 service() 메소드를 호출하여, servlet을 구동시킴 (바로 컨테이너에게 Response 객체를 전달 할 수도 있으나…) |
servlet | 요청 처리를 진행(바로 JSP로 Request dispatching 할 수도 있으나…) |
모델 | servlet이 호출하는 대상이며, 보통 자료를 리턴 함 |
servlet | 여러 타 servlet을 거처 자료를 완성된 자료를 Request 객체에 담아낸 servlet JSP로 Request dispatching |
JSP | 서블릿이 자료를 담아 낸 Request 객체에서 attribute를 적출해 사용함 최종적으로 Response 객체를 완성시키고 컨테이너에게 전달 |
컨테이너 | HttpServletResponse를 HTTP Respose로 응답함 |
배포된 자바 웹 어플리케이션 폴더 구조 - JSP 미사용시
폴더 / 파일 | 설명 |
/*.html | 보통의 요청이 시작되는 곳 |
/WEB-INF/web.xml | 요청이 servlet 일 때, 어떤 servlet으로 요청을 넘겨야 하는지가 기술되어 있음 |
/classes/[model]/*.class /classes/[web]/*.class /classes/[namespaces1]/*.class /classes/[namespaces2]/*.class /classes/[namespaces3]/*.class … | servlet과 모델들이 모여 있는 곳 JSP 미사용시는 아래와 같이 response를 직접 작성함 response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<br />…"); |
배포된 자바 웹 어플리케이션 폴더 구조 - JSP 사용시
폴더 / 파일 | 설명 |
/*.html | 보통의 요청이 시작되는 곳 |
/WEB-INF/web.xml | 요청이 servlet 일 때, 어떤 servlet으로 요청을 넘겨야 하는지가 기술되어 있음 |
/classes/[model]/*.class /classes/[web]/*.class /classes/[namespaces1]/*.class /classes/[namespaces2]/*.class /classes/[namespaces3]/*.class … | servlet과 모델들이 모여 있는 곳 JSP 사용시는 response를 직접 작성 안하고, JSP에게 요청을 부탁함(RequestDispatcher) RequestDispatcher view = request.getRequestDispatcher("result.jsp"); 필요하다면 request 객체를 통해 자료를 넘김 request.setAttribute("styles", result); RequestDispatcher view = request.getRequestDispatcher("result.jsp"); view.forward(request, response); |
/*.jsp | HTML과 scriptlet 코드로 response를 작성한다. 필요하다면 servlet으로 부터 넘어온 request객체를 통해 자료를 얻음 List styles = (List)request.getAttribute("styles"); |
'JSP' 카테고리의 다른 글
JAVA JDK 설치 / 환경 변수 설정 (0) | 2014.04.18 |
---|---|
서블릿 요청에 대한 컨테이너의 요청처리 순서 (0) | 2013.10.10 |
웹 어플리케이션 발전 순서 - HTML > CGI > JSP & Servlet (0) | 2013.10.10 |
HTTP 기초 (0) | 2013.10.10 |
JAVA 웹 개발환경 세팅 - JSP 개발환경 세팅 - 수동컴파일(no eclipse) (0) | 2013.10.10 |
요청 처리 순서
1. 웹서버가 HTTP request를 컨테이너에게 전달
2. 컨테이너가 HttpServletRequest, HttpServletResponse 객체 생성
3. DD를 참고하여 URL을 분석 후 해당 서블릿 스레드를 생성
(HttpServletRequest, HttpServletResponse 객체를 인자로 넘김)
4. 컨테이너가 서블릿 service() 메소드를 호출하면, doGet() 또는 doPost()가 호출됨
5. 서블릿의 doGet() 메소드는 동적인 페이지를 생성한 다음,
HttpServletResponse 객체에 실어 컨테이너에게 보냄
6. 컨테이너는 HttpServletResponse 객체를 HTTP response 로 전환하여 웹서버로 보냄
7. 컨테이너는 전환이 끝나면 HttpServletRequest, HttpServletResponse 객체 소멸시킴
컨테이너의 역할
통신 지원 : 웹서버와 통신하기 위해
라이프사이클 관리 : 서블릿의 생성과 소멸을 위해
멀티스레딩 지원 : 다중 요청 처리를 위해
선언적인 보안 관리 : XML 기반 보안 관리를 위해
JSP 지원 : JSP 코드를 자바 코드로 변환하기 위해
요청에 대한 서블릿 연결
오류 페이지 설정
접근 제어 목록 설정
보안 역할 설정
'JSP' 카테고리의 다른 글
JAVA JDK 설치 / 환경 변수 설정 (0) | 2014.04.18 |
---|---|
자바 웹 어플리케이션 폴더 구조 / 요청에서 응답까지 기본적인 실행 순서 (0) | 2013.10.20 |
웹 어플리케이션 발전 순서 - HTML > CGI > JSP & Servlet (0) | 2013.10.10 |
HTTP 기초 (0) | 2013.10.10 |
JAVA 웹 개발환경 세팅 - JSP 개발환경 세팅 - 수동컴파일(no eclipse) (0) | 2013.10.10 |
웹 어플리케이션 발전 순서
웹 통신 초기에는 정적인 HTML 문서만 서비스함(과학분야 / 대학교 등에서 주로 사용됨)
항상 똑같은 정적인 문서에 동적인 표현이 필요하게 되어 CGI(Common Gateway Interface)가 동적으로 작성한 HTML을 서비스함
CGI의 시스템 퍼포먼스 문제와 느린 개발 속도 때문에 ASP, PHP, JSP & Servlet 같은 스크립트 방식 엔진이 등장함
첫 직장 최고 개발 팀장왈 ‘CGI 노가다 안해봤지? PHP 부터 하는걸 축복으로 생각해.’
CGI에 관한 자주 있는 오해
이름에서 알 수 있듯이, CGI는 어디까지나 인터페이스이며, 특정 플랫폼에 의존하지 않고, 웹 서버 등으로부터 외부 프로그램을 호출하는 조합을 가리킨다.
(출처 : http://ko.wikipedia.org/wiki/%EA%B3%B5%EC%9A%A9_%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4)
다시 말해 각각의 개발사가 필요에 의해 자신들만의 cgi 프로그램을 만든 것이고, 이를 통칭하여 cgi라고 한다.
특정 벤더가 만든 메이커 소프트웨어가 아니란 말이다.
요청을 분석하여 Perl, C, Python 등의 언어로 작성된 CGI 프로그램에 집어 넣으면, 요청에 따라 동적인 HTML을 작성하여 뱉어 낸다. 이것을 웹서버가 응답시킴
스크립트 방식 엔진에 사용되는 언어
ASP : 주로 VBScript
PHP : PHP
JSP : java
'JSP' 카테고리의 다른 글
JAVA JDK 설치 / 환경 변수 설정 (0) | 2014.04.18 |
---|---|
자바 웹 어플리케이션 폴더 구조 / 요청에서 응답까지 기본적인 실행 순서 (0) | 2013.10.20 |
서블릿 요청에 대한 컨테이너의 요청처리 순서 (0) | 2013.10.10 |
HTTP 기초 (0) | 2013.10.10 |
JAVA 웹 개발환경 세팅 - JSP 개발환경 세팅 - 수동컴파일(no eclipse) (0) | 2013.10.10 |
브라우저 <-------> 서버
HTTP 통신
TCP/IP 위에서 돌아감 (TCP : 노드 사이에서 파일을 보냄, IP : 호스트 사이에서 패킷을 보냄)
브라우저는
HTTP.GET 메소드
HTTP.POST 메소드 등으로 서버에게 요청(Request) 함
기타 HEAD, TRACE, PUT, DELETE, CONNECT 메소드가 있다.
요청의 주요 구성요소
구분 | 요소 | 예 |
요청라인 | HTTP 메소드명 | POST |
서버 자원경로 | /bbs/read.jsp | |
파라미터(GET일 경우) | ?id=1&page=1 | |
HTTP 프로토콜 버전 | HTTP / 1.1 | |
요청헤더 | Host, User-Agent, Accept, Accept-Language, Accept-Encoding, Accept-Charset, Keep-Alive, Connection 등의 상세정보 |
|
메시지몸체 (POST일 경우) |
id=1&page=1 |
서버는
HTML이 포함된 HTTP 응답(Response)을 함
응답의 주요 구성요소
구분 | 요소 | 예 | 설명 |
응답헤더 | 상태코드 | HTTP / 1.1 200 OK | 요청 성공 여부 |
컨텐츠 타입 (MIME 타입) |
text/html |
컨텐츠를 브라우저가 어떻게 해석 할 것인가? | |
몸체 | 컨텐츠 | <html>…</html> | HTML 코드, 이미지 등 |
참고
http://ko.wikipedia.org/wiki/HTTP
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol 문서의 Client request, Server response 부분
'JSP' 카테고리의 다른 글
JAVA JDK 설치 / 환경 변수 설정 (0) | 2014.04.18 |
---|---|
자바 웹 어플리케이션 폴더 구조 / 요청에서 응답까지 기본적인 실행 순서 (0) | 2013.10.20 |
서블릿 요청에 대한 컨테이너의 요청처리 순서 (0) | 2013.10.10 |
웹 어플리케이션 발전 순서 - HTML > CGI > JSP & Servlet (0) | 2013.10.10 |
JAVA 웹 개발환경 세팅 - JSP 개발환경 세팅 - 수동컴파일(no eclipse) (0) | 2013.10.10 |
개요
웹 어플리케이션을 서비스 하기 위해서는
클라이언트 브라우저와 통신 할 웹 서버 : apache
웹 서버로 부터 넘겨 받은 요청을 효율적으로 처리해줄 웹 컨테이너 : tomcat
웹 컨테이너 관리하에 Servlet과 JSP를 실행해줄 엔진 : JRE(Java Runtime Enviroment)
등을 설치해야 합니다.
웹 어플리케이션 개발을 하기 위해서는
java 소스를 컴파일해줄 javac.exe 등 여러 개발 도구가 들어 있는 : JDK(Java Development Kit)
를 설치해야 합니다.
JDK 설치
먼저 http://denisoh.tistory.com/entry/JAVA-JDK-설치-환경-변수-설정 이 게시물을 따라하세요.
apache-tomcat 설치 – 통합본 입니다.
http://tomcat.apache.org/
8.0은 RC 버전이라서 7.0을 다운로드 받았습니다.
자신의 시스템에 맞는 버전을 다운로드 합니다.
적당한 곳에 압축을 풀고, bin\startup.bat 으로 서버를 실행 합니다.
http://localhost:8080 이 열리는지 테스트 해봅니다.
* startup.bat 는 바탕화면에 단축 아이콘으로 빼놓으면 편합니다.
JAVA 웹 개발환경 테스트
apache-tomcat\webapps에 test 라는 폴더를 만듭니다.
test 폴더에 WEB-INF 라는 폴더를 만듭니다.
WEB-INF 폴더에 classes라는 폴더를 만듭니다. 또한 web.xml, Servlet1.java 라는 파일을 만듭니다.
web.xml, Servlet1.java 에 아래와 같이 각각 코딩 합니다.
<Servlet1.java> 이 줄은 코딩하지 않습니다.
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Servlet1 extends HttpServlet
{
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws IOException {
PrintWriter out = response.getWriter();
java.util.Date today = new java.util.Date();
out.println("<html>"
+ "<body>"
+ "<br>" + today
+ "</body>"
+ "</html>"
);
}
}
<web.xml> 이 줄은 코딩하지 않습니다.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>Servlet1 Servlet</servlet-name>
<servlet-class>Servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet1 Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
커맨드 창을 하나 열어 소스가 있는 경로로 이동합니다.
cd "C:\apache-tomcat-7.0.42\webapps\test\WEB-INF”
Servlet1.java 를 컴파일 합니다.
javac -classpath "C:\apache-tomcat-7.0.42\lib\servlet-api.jar" -d classes Servlet1.java
아무런 메시지도 나오지 않았다면 컴파일이 성공한 겁니다.
컴파일에 성공했다면 아까 만들어둔 classes 폴더를 열어 보면 컴파일된 Servlet1.class 가 있을 겁니다.
브라우저에 http://localhost:8080/test/ 을 열어 확인합니다.
주의 : 실제 프로젝트는 위와 같은 폴더 구조를 사용하지 않습니다. 이건 어디까지나 구동 테스트 입니다.
또한 tomcat/webapps 에 바로 코딩하는 일도 하지 않습니다.
'JSP' 카테고리의 다른 글
JAVA JDK 설치 / 환경 변수 설정 (0) | 2014.04.18 |
---|---|
자바 웹 어플리케이션 폴더 구조 / 요청에서 응답까지 기본적인 실행 순서 (0) | 2013.10.20 |
서블릿 요청에 대한 컨테이너의 요청처리 순서 (0) | 2013.10.10 |
웹 어플리케이션 발전 순서 - HTML > CGI > JSP & Servlet (0) | 2013.10.10 |
HTTP 기초 (0) | 2013.10.10 |