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 |