Servlet - 1
- XXX.jsp -> 요청을 받으면 일반 웹서버는 처리 불가능. 웹컨테이너가 있어야 요청을 처리할 수 있다. (WAS - Web Application Server)
- Tomcat -> EJB 서비스는 없다.
- 쓰레드를 기반으로 하므로 웹 애플리케이션 운영에 효율적이다.
- 자바를 기반으로 하므로 자바 API를 모두 사용할 수 있다.
- 운영체제나 하드웨어에 영향을 받지 않는다.
- 한 번 개발된 애플리케이션은 다양한 서버 환경에서도 실행이 가능하다.
- 웹 애플리케이션에서 효율적인 자료 공유 방법을 제공한다.
- 컨텐츠와 비즈니스 로직을 분리할 수 있다.
- 컨트롤러와 뷰의 역할 분담(MVC design pattern)
- 웹 디자이너와 개발자간의 원활한 공동작업이 가능해진다.
- 유지보수가 수월하다.
- 기능의 확장이 용이하다.
- 프로그래머가 HTML, 자바스크립트 스타일시트 등 복잡한 기술을 모두 알아야 할 필요가 없다.
- 빈즈라고 하는 자바 컴포넌트를 사용할 수 있다.
- 최초의 서블릿으로 컴파일 된 후에는 메모리에서 처리
- 많은 사용자 접속도 원활히 처리할 수 있다.
- JSP나 다른 서블릿 간의 쉬운 데이터 공유
- page, request, session, application scope 으로 가능
- 자바의 모든 기능을 사용할 수 있다. -> 무한한 확장성
- IBM, 오라클, 썬, BEA 등에서 강력히 지원
- 사용자 태그를 만들어 사용할 수 있다.
- JSTL(JSP Standard Tag Library)과 같은 다양한 기능의 태그 라이브러리 이용 가능
- 다양한 운영체제와 여러 회사의 JSP 개발/실행 환경을 이용할 수 있다.
- Tomcat 설치
- 웹 컨테이너를 받아오자. http://tomcat.apache.org/
- 환경변수 JAVA_HOME 설정
- D:\tomcat5.5에 압축을 풀자.
- D:\tomcat5.5\bin\startup.bat, D:\tomcat5.5\bin\shutdown.bat 바탕화면에 바로가기 만든다.
- startup.bat를 실행한다. DOS창이 죽으면 오류…
- http://127.0.0.1:8080/ or http://localhost:8080/
- 웹 애플리케이션 디렉토리 구조
- /WEB-INF/ 폴더는 url로 접근 못하는 특수한 폴더이다.
- WAR(Web Application aRchive)
- 간단한 Servlet 페이지 작성
- coding...
- Package compile을 한다. 그러나 에러…
- servlet api가 없어서 에러가 생긴다.
- 생성된 폴더를 D:\tomcat5.5\webapps\ROOT\WEB-INF\classes\ 폴더 밑에 복사한다.
- 프로토콜://ip:port/application 경로/servlet 클래스 이름
Web App의 역사
- 제 1세대 Web : Static Page(Html)
- 제 2세대 Web : Dynamic Page(DHTML,Servlet/JSP)
- 제 3세대 Web : Distributed Enviroment Enviroment(EJB, RMI)
- 제 4세대 Web : RIA(Rich Internet Application)-> Web 2.0 javaFX, Flex, Ajax , Silverlight
서블릿 특징
JSP 특징
tomcat 5.5 zip을 다운받는다.
JAVA_HOME 환경 변수 설정
환경변수 이름 : JAVA_HOME
환경변수 값 : JDK가 설치된 HOME Directory
*.html, *.jsp, *.jpg 등 : root 디렉토리를 중심으로 하위 디렉토리를 가지면서 위치.
/WEB-INF/web.xml : Web Application Deployment Descriptor
XML로 구성된 일종의 환경설정 파일
현재 웹 애플리케이션에 대한 각종 설정 사항을 갖고 있음
/WEB-INF/classes/: 현재 웹 애플리케이션에서 사용할 자바 클래스 파일 위치
서블릿과 기타 클래스도 위치할 수 있음. 패키지 구조에 따라 디렉토리 구성
jar 파일은 지원하지 않으므로 주의
▪ /WEB-INF/lib/ : jar 파일이 위치(classes와 유사)
대부분 JDBC 드라이버와 같은 서브파티 클래스 혹은 현재 웹 애플리케이션이 배포되었을 때 여러 환경에서 다른 설정 없이도 실행이 가능하도록 하는 다양한 클래스를 포함
• 웹 애플리케이션 디렉토리 구조를 가진 압축 파일(zip, jar 파일 호환)
• 웹 애플리케이션 배포를 위해 사용
• 애플리케이션 서버 간의 호환성 유지
package net.cjedu.hello;
import java.io.*;
import java.util.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class HelloServlet extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException{
resp.setContentType("text/html");
//니가 가지고 있는 출력스트림을 줘라!!
PrintWriter out = resp.getWriter();
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>");
out.println("HelloServlet");
out.println("</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<H1>Hello World</H1>");
out.println("<h2>현재 시간 " + new Date() + "</h2>");
out.println("</BODY>");
out.println("</HTML>");
out.close();
}
}
D:\java_servlet\1.hello\src>javac -d ../classes HelloServlet.java
HelloServlet.java:4: package javax.servlet.http does not exist
import javax.servlet.http.*;
^
HelloServlet.java:5: package javax.servlet does not exist
import javax.servlet.*;
D:\tomcat5.5\common\lib\servlet-api.jar 파일을 C:\Program Files\Java\jdk1.6.0_13\jre\lib\ext 복사한다.
D:\java_servlet\1.hello\src>javac -d ../classes HelloServlet.java
그러면 컴파일이 된다.
먼저 D:\tomcat5.5\conf\web.xml 에서 115주석 제거, 366주석 제거
http://127.0.0.1:8080/servlet/net.cjedu.hello.HelloServlet