관리 메뉴

nkdk의 세상

2번 서블릿의 기본 개념 서블릿을 사용해 보자 본문

My Programing/JSP and Servlet

2번 서블릿의 기본 개념 서블릿을 사용해 보자

nkdk 2008. 3. 9. 00:57
context 에 추가 하는 방법 2가지

1번
기존 경로가 아닌 새로운 경로를 연결시키는 방법
해당 디렉토리에서 WEB-INF 를 만든다.

그 해당 디렉토리에 테스트용 htm 을 만들어서 실행해 본다.
그리고

C:\Tomcat 5.5\conf\Catalina\localhost
<Context path="/star" reloadable="true" docBase="c:\star"
workDir="c:\star\work"/> 로 만들어 준다.

이곳에 가서 star.xml 을 만들어 준다.

그리고 server.xml 에 등록하는 2번째 방법에 대해서 설명하겠습니다.
C:\Tomcat 5.5\conf\server.xml 파일에 들어가서 357번째 줄에
다음을 추가한다.
<Context path="/star2" docBase="c:\star2"/>

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

이제 이클립스에서 하는 방법을 알아보도록 하겠습니다.
new-> dynamic web project 를 만든다.
그곳에서 기존의 방법과 같이 만든 후에
서버 쪽에서 add and remove 를 한다.

여기서도 마찬가지로 서버에 가서 주석처리 96번째줄 을 해제한다.
그리고 다음에 344번째 줄도 마찬가지로 삭제한다. 그래야
서블릿을 이용할 수 있다. 이건 예전에 일반 web.xml을 삭제한 것과
같은 결과값을 가지게 된다.

또한, 포트 변경을 하고 싶을 경우에는 server 에서 69번째
포트 번호를 변경한다.

sertest/WebContent/WEB-INF/web.xml 이것은 배포관리자 이다.

----
mime 타입에 관해서 찾아본다.
유비쿼터스에 대해서도 조사한다.
---

이제 서블릿을 만들어 봅시다.
get 방식과 post 방식이 있습니다.
한글이 안 깨지게 하기 위해서는
response.setContentType("text/html; charset=euc-kr");
자바에서 해당 메소드를 써야 한다.


---

http://localhost:8080/tomcat-docs/servletapi/ 참고
--

servlet인터페이스는 init, service, destroy 를 가지고 있음
servlet를 implement를 한 것은 generalServlet

servlet -> generalServlet(*중요클래스) -> servletConfig
^
|
HttpServlet 이 상속 받는다

server -> client 로 넘기는것: httpServletResponse 해당클래스 통해 값 얻음

client -> server 로 넘기는것: httpServletRequest 해당클래스 통해 값 얻음

프로세스는 하나만 돌아가고 계속적으로 스레드만 돌아간다.(확장된 cgi의 개념이다.)


기본 서블릿



import java.io.*;
import java.util.Calendar;

import javax.servlet.*;
import javax.servlet.http.*;

public class sert1 extends HttpServlet implements Servlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=euc-kr"); // 한글이 바이트 단위로 가기 때문에 묶어서 내보낸다.
PrintWriter out = response.getWriter(); // 출력
out.print("<html>");
out.println("<body><center>");
out.println("<h1>서블릿 시작</h1>");
int a= 10, b=20;
int sum = calc(a,b);
out.println("a="+ a + ", b=" +b);
out.println("<br>sum="+sum);
java.util.Calendar calendar= java.util.Calendar.getInstance(); // 클래스의 포함
out.println("<hr width=70%>날짜:"+calendar.get(java.util.Calendar.YEAR) +"년 ");
out.println((calendar.get(java.util.Calendar.MONTH)+1) + "월");
out.println("</center></body></html>");
}

private int calc(int a,int b) {
return a+b;
}
}

다음과 같이 사용하였습니다.추석 잘 보내세요 ^_^