BLOG main image
분류 전체보기 (65)
JSP (6)
Android (1)
ASP.NET (0)
MSSQL (4)
PHP (18)
ASP (11)
오픈 API (1)
HTML (2)
JavaScript (0)
Windows Programming (8)
컴퓨터교양 (14)
객체 지향 (0)
리뷰 및 생각 (0)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
'JSP'에 해당되는 글 6건
2014. 4. 18. 03:22
[JSP]

개요
개발자가 자바를 설치한다는 것은
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

자신의 시스템에 맞는 것을 다운로드 받아 설치합니다.



 

JAVA 환경변수 설정

변수 값 마지막에
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 같은 변수를 사용하기 때문입니다. 이것은 약속 아닌 약속 입니다.

2013. 10. 20. 04:29
[JSP]


요청에서 응답까지 다양한 실행 순서
서블릿만 사용시 컨테이너 서블릿       컨테이너
모델 사용시 컨테이너 서블릿 모델 서블릿   컨테이너
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");

2013. 10. 10. 22:41
[JSP]

요청 처리 순서

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 코드를 자바 코드로 변환하기 위해

 

DD(Deployment Descriptor)의 역할

2013-10-10 오후 9-34-45

요청에 대한 서블릿 연결
오류 페이지 설정
접근 제어 목록 설정
보안 역할 설정

2013. 10. 10. 17:05
[JSP]

웹 어플리케이션 발전 순서
웹 통신 초기에는 정적인 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


참고
http://www.cyberenter.com/study/00001_jsp.html

2013. 10. 10. 16:43
[JSP]

브라우저 <-------> 서버
            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> HTML 코드, 이미지 등

 

참고
http://ko.wikipedia.org/wiki/HTTP
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol 문서의 Client request, Server response 부분

2013. 10. 10. 08:41
[JSP]

개요
웹 어플리케이션을 서비스 하기 위해서는
클라이언트 브라우저와 통신 할 웹 서버 : 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 에 바로 코딩하는 일도 하지 않습니다.



web.xml 설명

prev"" #1 next