2021-06-25강의록_서블릿Servlet

MIN.DI·2021년 6월 25일
0

강의록

목록 보기
21/54

URL pattern / URL mapping

서블릿 naming convention / naming rule 확인하기

org.bitcamp.myweb.servlet.TempServlet.class
=> 별칭 : name항목(보통 서블릿 클래스 이름과 동일하게)
"TempServelet"(별칭)

=> URL mapping(사상) = URL pattern
http://www.naver.com
http://localhost:8090/~~~~~~~~ => URI(~~~) 를 잘 이해해야 한다!

=> URI : 클라이언트가 요구하는 자원의 식별자(indicator)
URI = /Context Root(path)/Servlet 의 호출 이름.
예 > /ex00/Temp
url 매핑되는 uri 는 클래스명에서 Servlet지워줌!!

Context Root >> 우리가 만든 웹 어플리케이션의 위치까지 도달 가능하게 만드는 것이 ContextPath.
/ >> Root (우리가 만든 웹 어플리케이션에 도달하려면 /ex00 을 작성해주어야 함.)
/Temp >> ex00 안의 수많은 서블릿 중에, 원하는 서블릿에 도달하려면 URL mapping을 알려주어야 함.

별칭 name은 내부적으로 사용하는 이름일 뿐, 웹 브라우저(사용자)에서는 아무런 역할을 하지 못한다.
URI를 지정해야만 사용할 수가 있는데, URI 지정하는 것을 mapping 이라고 한다.

  <servlet>    
    <servlet-name>helloServlet</servlet-name>	<!--서블릿 클래스명과 똑같이 하되, 앞글자만 소문자로!-->
    <servlet-class>org.bitcamp.myweb.servlet.HelloServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>helloServlet</servlet-name>

    <!-- 웹 브라우저에서 어떻게 경로를 지정해야, 
      이 서블릿이 요청을 받고, 처리하고, 응답을 보낼지 지정 -->
    <url-pattern>/hello</url-pattern>	<!--url mapping과 같은 의미-->
  </servlet-mapping>

setContentType

// 1.
res.setCharacterEncoding("UTF-8");
res.setContentType("text/html");
// 2.
res.setContentType("text/html; charset=utf8");

1번은 2번과 같이 한 줄로 작성할 수 있다.
(UTF-8, UTF8, utf-8, utf8 다 사용 가능)


서블릿 응답처리

@Log4j
@NoArgsConstructor

@WebServlet("/Response")
public class ResponseServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;


	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res) 
		throws ServletException, IOException {
		log.debug("service(req, res) invoked.");

		////////////////
		//응답문서 만들 때의 코드
		res.setContentType("text/html; charset=UTF-8");

		PrintWriter out = res.getWriter();

		out.print("<html><body>");
		out.print("ResponseServlet 요청성공");
		out.print("</body></html>");

		out.flush();	//아직 브라우저쪽으로 나가지 못한 응답 데이터가 있을 수도 있어서 flush 해주어야 함.
				//남아있는 전송 데이터가 있다면 전송하고 비워라(flush).
                //출력버퍼에 잔류하는 데이터를 강제로 방출
		out.close();	//PrintWriter객체는 자원객체라, 마지막에 close해주어야 자원낭비를 없앨 수 있다. (자원해제)
	} //service

} //end class

  • var 타입 변수는 지역변수가 필요할때 사용 (Rvalue의 타입을 확인한뒤 Lvalue의 타입이 결정됨)
    -> 스크립트 언어는 변수에 유연성이 있다.
    Rvalue의 타입에 딸가 적절한 변수타입을 추론함.
  • servlet클래스가 실행되면 init()메소드가 실행됨
    -> 여기서 대체로 생성자처럼 초기화 수행
  • service(req, res)메소드가 종료되면 destroy()메소드가 실행됨
    -> 여기서 인스턴스에 null값 등을 대입하면서 gc에 의한 메모리 수거
profile
내가 보려고 쓰는 블로그

0개의 댓글

관련 채용 정보