본문 바로가기
Servlet

[Servlet] 동적인 컨텐츠를 제공하는 Servlet

by happyhelen 2021. 12. 18.

 

** 공유가 아닌 개인 공부에 목적을 둔 글입니다

** 설명이 불충분할 수 있으며 잘 정리된 글이 아닐 수도 있습니다

 

 

 

WAS

 

자바 웹 어플리케이션 WAS(Web Application Server) 는 HTTP 프로토콜을 통해 사용자 컴퓨터나 장치에 어플리케이션을

 

수행해주는 미들웨어로, 주로 동적 서버 컨텐츠를 동작시키고 DB 서버와 함께 동작한다

 

주로 정적 컨텐츠를 제공하는 웹 서버 단독으로는 어려운 DB 조회, 로직을 수행하는 동적인 컨텐츠를 제공하는데

 

Servlet(로직 처리), JSP(화면 구성) 의 구동환경을 제공해주는 것이 특징으로 웹컨테이너, 서블릿 컨테이너라고도 한다

 

대표적인 종류로는 Tomcat 이 있다

 

 

Servlet 작성

 

Servlet 3.0 미만에서는 web.xml 파일을 직접 등록하지만 , Servlet 3.0 이상에서는 자바 어노테이션을 사용한다

 

3.0 미만 버전은 Web.XML 파일에서 Servlet 태그가 추가되고 @WebServlet("/ten") 어노테이션이 붙지 않지만

 

3.0 이상 버전에서는 Web.XML 파일에서 Servlet 태그가 없는 대신 그 역할을 어노테이션이 대신하고 있다

 

 

 

3.0 미만 버전)

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>exam25</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>TenServlet</display-name>
    <servlet-name>TenServlet</servlet-name>
    <servlet-class>exam.TenServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TenServlet</servlet-name>
    <url-pattern>/ten</url-pattern>
  </servlet-mapping>
</web-app>

 

package exam;

// import 생략

public class TenServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
    	public TenServlet() {
        super();
    	}

	
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8"); 
        PrintWriter out = response.getWriter();

  	out.print("<h1>1-10까지 출력 </h1>");

  	for(int i=1; i<=10; i++) {
  	out.print(i+"<br>");
  	}

	out.close();	}

}

 

3.0 이상 버전)

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>exam31</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

package exam;
// import 생략

@WebServlet("/ten")
public class TenServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
      
        public TenServlet() {
        super();
    	}
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	response.setContentType("text/html;charset=utf-8"); 
	PrintWriter out = response.getWriter();
	out.print("<h1>1-10까지 출력 </h1>");
	for(int i=1; i<=10; i++) {
		out.print(i+"<br>");
	}
		
		out.close();
	}

}

 

 

둘의 결과는 아래로 같다

 

 

 

여기서 HttpServletRequest 는 요청을 받아내는 객체로서 요청정보를 추상화해서 갖고 있고,

 

HttpServletResponse 는 응답을 보내기 위한 객체로 응답정보를 추상화해서 갖고 있다

 

doGet 메소드로 응답하고자 할때 response 객체를 활용한 이유가 그것이다

 

URL mapping 값이 무엇인지에 따라 정보를 요청하는 주소가 달라지는 것도 기억해두자