다양한 관심 :)

java- servlet ( 서블릿 ) 본문

프로그래밍 공부/JAVA

java- servlet ( 서블릿 )

뚜뚜:) 2020. 11. 26. 18:28

- servlet(서블릿) : 컨테이너(서블릿 엔진)에 의해 관리되는 자바기반 웹 컴포넌트,

                        동적인 웹 컨텐츠 생성을 가능하게 해준다.

 

- 컨텍스트 패스(Context Path) :  WAS(Web Application Server)에서 웹어플리케이션을 구분하기 위한 path,

                                           이클립스에서 프로젝트를 생성하면 자동으로 server.xml에 추가

 

사용하기 전 기본적으로 알아야할 것 **

전체 요청 URL 주소 : http://localhost:80/servletTest

더보기

   클라이언트가 요청하는 URL정보

  요청을 보낼 서버의 IP주소 : Port번호/ App이름 / 달라고 요청하는 HTML

  예 ) 전체 요청 URL 주소 : localhost:80/servletTest/servletTest01.html

 

- http : 프로토콜

- localhost : 컴퓨터 이름 or 도메인명 or IP주소

- 80 : PORT번호 ( 웹은 80번이 기본이라 80번일 경우에는 생략이 가능)

- /servletTest : contextPath (컨텍스트 패스 = 보통 프로젝트 이름 으로 지정된다)

- /servletTest01.do : 서블릿 요청 URL패턴

 

- 웹 어플리케이션 구조

반드시 모든 웹 어플리케이션이 공통으로 가져야 하는 디렉터리와 파일이 존재한다.

  1. WEB-INF 디렉토리

    웹 어플리케이션에서 서비스하려는 클래스 파일이 있다면 WEB-INF/classes 클래스 파일들이 jar로 압축되어 있다면 WEB-INF/lib에 존재해야한다. 이는, WAS를 구성하는 어플리케이션 서버들이 자동으로 인식하게끔 하기위함이다.

  2. web.xml

    web.xml은 WEB-INF 안에 있어야 한다.

 

Servlet 인터페이스 :

Servlet 인터페이스는 서블릿 프로그램을 개발할 때, 반드시 구현해야 하는 메소드를 선언하고 있는 인터페이스

  1. init()
  2. service()
  3. destroy()
  4. getServletConfig()
  5. getServletInfo()

예제 = 배포 서술자(DD - Deployment Descriptor ==> web.xml)를 이용해서 실행할 Servlet을 설정하여 처리하는 예제

* serialversionUID를 이해하려면 직렬화부터 다시 봐야함 

 

ServletTest01

public class ServletTest01 extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
    @Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		resp.setCharacterEncoding("UTF-8");				// 응답 문서의 인코딩 방식 지정
		resp.setContentType("text/html; charset=utf-8");	//응답 문서의 ContentType지정
		
		//처리한 내용을 응답으로 보내기위해 PrintWriter객체 생성
		PrintWriter out = resp.getWriter();	//웹브라우저에 출력하는 객체  
		
		// 처리한 내용을 출력 한다 
		//방법 1) append() 메서드 이용하기
		out.append("<html>");
		out.append("<head>");
		out.append("<meta charset='utf-8'>");
		out.append("<title>첫번째 Servlet 연습 </title>");
		out.append("</head>");
		
		out.append("<body>");
		out.append("<h1 style = 'text-align:center;'>");
		out.append("안녕하세요. 첫번째 Servlet 프로그램 입니다. <br>");
		out.append("servlet at : " + req.getContextPath());
		out.append("</h1>");
		out.append("</body>");
		out.append("</html>");
		
	}
	
	//doPost() 메서드 => Post방식의 요청을 처리하는 메서드 
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPost(req, resp);
	}
	
}

 

- 여기에서 대부분 service()메서드 또는 doGet()메서드나 doPost()메서드를 재정의해서 작성한다.

- doGet()메서드나 doPost()메서드는 service()메서드를 통해서 호출된다.

- HttpServletRequest객체 : 서비스 요청에 관련된 정보 및 메서드를 관리하는 객체 (요청을 받을때)

- HttpServletResponse객체 : 서비스 응답에 관련된 정보 및 메서드를 관리하는 객체 (요청을 보낼때)

 

- doGet() : Get방식의 요청을 처리하는 메서드

- doPost() : Post방식의 요청을 처리하는 메서드

 

 

 

ServletTest01을 실행하기 위해 web.xml을 생성, 작성한 예제

<?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>servletTest</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>
    <servlet-name>servletTest01</servlet-name>
    <servlet-class>test.ServletTest01</servlet-class>
  </servlet>
  
  
  <servlet-mapping>
    <servlet-name>servletTest01</servlet-name>
    <url-pattern>/servletTest01.do</url-pattern>
  </servlet-mapping>
  
  
  </web-app>

 

  • <servlet> : Alias를 설정

               - <servlet-name> 에는 servlet이름 (아래 매핑 설정에서의 servlet-name과 같아야한다)

                - servlet-class에는 패키지+클래스 이름 (개발자에 의해 작성된 실제 클래스 이름)

 

  • <servlet-mapping> : 위에 작성한 servlet을 찾아서 연결해준다고 생각, URL을 서블릿 이름에 연결해준다

                - <servlet-name>  에는 찾아줄 이름 : 위에 작성한 이름을 찾아준다고 생각 -> 그래서 같아야한다.

                - <url-pattern> : 찾기를 원하는 주소 : 클라이언트의 요청 URL에서 앱(프로젝트)이름 뒤에 오는 부분,

                                       슬래쉬( / )로 시작해야한다.

 

 

 

 

'프로그래밍 공부 > JAVA' 카테고리의 다른 글

java - servlet (서블릿 ) 동작방식  (0) 2020.11.27
java - servlet ( 서블릿) 2  (0) 2020.11.26
Java - 암호화 (양방향)  (0) 2020.11.23
Java - 암호화 (단방향)  (0) 2020.11.23
ibatis 환경 설정 - sqlMapConfig  (0) 2020.11.18