IT story/JSP

[Jsp 강의] L01HelloServlet

jason719 2016. 10. 27. 14:44

L01HelloServlet

  • 새로운 workspace에 연결하기 위해 기존에 사용했던 JavaLesson 폴더 옆에 JspLesson 폴더를 생성하고 안에 workspace를 생성한다.

  • 이클립스를 실행하고 새로 생성한 JspLesson - workspace를 지정해준다. (맨 처음 이클립스를 열었을 때와 마찬가지로 모든게 초기화 되어있다...)




  • 이클립스의 설정을 해주고, 톰캣 서버를 설치한다. 

  • Dynamic Web Project를 생성하여 L01HelloServlet을 만든다. 

  • package와 class 생성! 아래의 예제를 살펴보자
      • 예제1 HelloWorld.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.jsp.servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
//servlet은 main을 실행하지 않는다.
//servlet은 server 환경에서 돌아가기 때문 (server==main)
//HelloWorld class가 servlet이 되려면 httpServlet을 상속 받아야 한다.
//HttpServlet은 아파치 톰캣 라이브러리다.
//@WebServlet은 annotation으로 보통 class 상단에 붙는다.
//밀접해 있는 class의 주소를 생성해준다. 이때 꼭 '/'를 붙여준다.
//주의사항: 주소이기 때문에 중복을 허용하지 않는다.
//server가 구동될때 web.xml에 등록된 주소를 처음 살피는데 @WebServlet에 작성한 주소는 web.xml에 등록이 된다.
//이때 주소가 중복되면 server는 큰 오류로 판단하고 server를 멈춘다.
//client의 요청(브라우저에서 server에 요청)을 받으려면 doGet, doPsot 메소드를 구현(Override)해야한다.
//http통신은 말그대로 통신 -> 입출력이 발생하기 때문에 예외처리를 해야한다.
 
@WebServlet("/hello")
public class HelloWorld extends HttpServlet {
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //브라우저에 URL로 요청을 하면 doGet 메소드가 받는다.
    //이때 요청은 doGet의 HttpServletRequest가 받는다.
    //이것을 줄여서 Request 객체라 부른다.
    //server가 브라우저에 정보를 전달하는 행위를 응답이라 하고
    //이때 응답 객체는 HttpServletResponse이고 줄여서 Response 객체라 부른다.
    // /hello 라는 페이지의 목표: url로 페이지 요청이 오면 Hello Servlet이라는 메시지를 보낸다.
    //브라우저에 ./hello 라는 펭지를 요청 -> server는 ./hello로 맵핑된 서블릿을 찾는다.
    // ->url 요청이기 때문에 /hello로 맵핑된 HelloWorld 서블릿에 doGet()을 호출한다.
        response.getWriter().append("<h1>HelloWorld</h1>");
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
    }
 
}
 
cs
      • 예제2 L01WebXml.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.jsp.servlet;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.text.SimpleDateFormat;
 
public class L01WebXml extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
   /* (non-Javadoc)
 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
       response.setContentType("text/html; charset=utf-8"); 
           SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<body>");
        out.println("<h1>오늘의 날짜 출력</h1><hr>");
        out.print(sdf.format(new Date()));
        out.println("</body>");
        out.println("</html>");
        //doGet의 response가 기본으로 응답하는 페이지 형식을 html로 잡고 있다.
        //response의 페이지 형식을 지정하지 않아도자동으로 html의 문서를 응답한다.
        //문서 형식을 바꾸고 싶다면 response.setContentType()에 무선 형태를 지정한다.
        
        //server charset 설정
        //servers/server.xml을 연다
        //connector tag protocol = "HTTP/1.1" 되어있는 곳에서
        //URIEncoding = "UTF-8" 추가한다.
        //응답하는 페이지의 charset을 하는 게 아니라 parameter를 주고 받을 때 세팅한다.
    }
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
cs


'IT story > JSP' 카테고리의 다른 글

[Jsp 강의] L03ServletMethod  (0) 2016.10.27
[Jsp 강의] L02HelloJsp  (0) 2016.10.27
L09 Sub Query  (0) 2016.10.22
L08 join  (0) 2016.10.22
L07 group by  (0) 2016.10.22