서블릿을 하나 만들어 봅니다.


사용자 삽입 이미지

사용자 삽입 이미지
 

사용자 삽입 이미지
 

사용자 삽입 이미지
 

사용자 삽입 이미지
 

사용자 삽입 이미지
 

사용자 삽입 이미지
 



만들어준후에...
web.xml 을 열어 봅니다.


사용자 삽입 이미지
 


그럼 자동으로 생성된 내용이 보입니다.

어떠한 서비스를 제공하려면 web.xml 에 적혀있어야 한다.


<servlet> </servlet> 사이의 내용을 살펴보면...

<description>안녕하는 서블릿</description>

<display-name>HelloServlet</display-name>

이건 별의미 없다고 봐도 됨

<servlet-name>HelloServlet</servlet-name>

<servlet-class>hello.HelloServlet</servlet-class>

hello.HelloServlet 의 이름을 HelloServlet 이라고 부르겠뜸! 이라는 내용


<servlet-mapping> </servlet-mapping> 사이의 내용은...

<servlet-name>HelloServlet</servlet-name>

<url-pattern>/hello</url-pattern>

/hello 라고 요청을 하면... servlet-name이 HelloServlet 이니까...

<servlet> 안에서  같은 servlet-name을 찾고 , 해당하는 servlet-class 가 호출된다.


사용자 삽입 이미지
 


만들어진 servlet의 내용을 보면....


package hello;

import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public HelloServlet() {
        super();
        System.out.println("생성자 호출");
    }

	public void init(ServletConfig config) throws ServletException {
		System.out.println("init() 호출");
	}

	public void destroy() {
		System.out.println("destroy() 호출");
	}

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("service() 호출");
		super.service(request, response);
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet() 호출");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost() 호출");
	}

}


init() , destroy(), service(), doGet(), doPoat() 등이 기본적으로 많이 쓰이는 메소드 들이다.

위에서 자동으로 체크하여 만들어진 부분임

거기에 System.out.println(); 을 넣은것뿐

이것들은 HttpServlet에서 상속받아서 오버라이딩해서 사용하는 것들이다.

서버 재시작하고 에러메시지가 있는지 확인하고

브라우져에 http://localhost:8080/wps/hello 라고 쳐보면

아무것도 안나오지만... 지금 저게 servlet 이 실행된 화면이다.


사용자 삽입 이미지
 


아무것도 안나오는데 이게 제대로 되었는지 어떻게 알어?

이클립스 콘솔창을 보면...




머머가 호출되었다고 나오는것을 알 수 있닷!

여기서 다시  http://localhost:8080/wps/hello 라고 쳐보면

service, doGet 이렇게 두개의 매소드만 다시 호출됨을 알 수 있다.


사용자 삽입 이미지
 


생성자와, init 메소드는 처음 호출이 되었을때 만 호출이 되는것을 알수 있는데...

이는 servlet이 처음 호출시 메모리 상에 올라가서 서버가 죽을때까지

죽지 않고 계속 살아있는 특성을 갖고 있기 때문이다.

servlet은 사용자의 요청이 있을때 메모리에 떠있다가 계속해서 요청을 받을 수 있다.

메모리에서 내려가지 않는다.

이것이 servlet jsp 의 장점이 있는 것이다.

메모리에 일단 올라가면 내려가지 않고 메모리에 상주하면서 호출이 들어오는대로 처리하기때문에

처음 로딩될때 느릴지라도 한번 로딩이 되면 여타 다른것 (asp, php 등) 보다 처리가 빠르다.

(destroy()는 서버를 내릴때 호출된다.)

이제 페이지에 내용을 넣어보자.

(service 메소드는 클라이언트에게 요청이 들어왔을때 무조건 호출됨

doGet 은 전송방식임... 전송방식에 따라서 메소드가 달라짐

doGet, doPost, doPut, doDelete 방식들이 있는데...

put, delete 방식은 거의 안쓰므로 신경쓸 필요가 없다능)

doGet 메소드 등의 두인자

HttpServletRequest request, HttpServletResponse response

가 있는데 이는 각각 요청과 응답에 관한 인자임


package hello;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public HelloServlet() {
        super();
        System.out.println("생성자 호출");
    }

	public void init(ServletConfig config) throws ServletException {
		System.out.println("init() 호출");
	}

	public void destroy() {
		System.out.println("destroy() 호출");
	}

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("service() 호출");
		super.service(request, response);
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet() 호출");
		PrintWriter pw =  response.getWriter();
		pw.write("

Hello World

"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doPost() 호출"); } }

실행해보믄... Hello World 라고 찍히는 것을 알 수 있다.


사용자 삽입 이미지
 


내용을 보자면...


 

사용자 삽입 이미지

 

사용자 삽입 이미지


response 라는 객체를 통해 getWriter 해서 PrintWriter 라는 놈을 pw 로 받아서

write 메소드를 이용 <h1>Hello World</h1> 문자열을 뿌렸다.

기본적으로 http 프로토콜을 이용해서 주고 받는것은 문자열이다.

04 8, 2009 10:46 04 8, 2009 10:46
iamback 이 작성.

Trackback URL : http://pippen80.cafe24.com/trackback/154

Trackback RSS : http://pippen80.cafe24.com/rss/trackback/154

Trackback ATOM : http://pippen80.cafe24.com/atom/trackback/154


« Prev : 1 : ... 121 : 122 : 123 : 124 : 125 : 126 : 127 : 128 : 129 : ... 251 : Next »