JSP_1강_5_Servlet_mapping 방법 (1:1 과 web.xml)_예시4

열라뽕따히·2024년 3월 13일

JSP

목록 보기
5/43

서블릿 매핑 방법

1. 애노테이션 등록

  • 서블릿 클래스에 url-mapping에 등록
  • 1:1 매핑인 경우에 사용
  • 설정 파일이 필요가 없음

2. 배포서술자(web.xml) 등록

  • 매핑할 서블릿이 많은 경우에 일괄 처리에 용이함
  • N : 1 매핑인 경우에 사용
  • web.xml 파일에 설정
  • 향후 배울 MVC 패턴에서 많이 사용되는 매핑 방법

web.xml 이란?

  • web.xml은 배포 서술자라고 불리는 파일임
  • web.xml은 url 경로와 해당 경로의 요청을 처리하는 서블릿 사이의 매핑을 정의하는 곳임.
    웹 서버는 이 구성을 사용하여 특정한 요청을 처리할 서블릿을 식별하고 요청 메서드에 해당하는 클래스를 호출함

※ Servlet 매핑 목적

  • 처리 프로그램을 url에서 숨기는게 목적임
    ==> 파일명과 폴더명(패키지)까지 숨김
  • 보완을 목적으로 숨김





홈페이지랑 서버를 1:1로 mapping 하는 방법


=============================코드=============================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

		<div align = "center">
			<h2>두 수 더하기(애노테이션(1:1) 등록)</h2>
			<form action = "adder">
				<p>첫번째 수 : <input type = "text" name = "num1"></p>
				<p>두번째 수 : <input type = "text" name = "num2"></p>
				
				<input type = "submit"  value = "더하기">
			</form>
			<br/>
			<hr width = "30%">
			<br/>
			
			<h2>두 수 더하기(web.xml 등록)</h2>
			<form action = "adder1">
				<p>첫번째 수 : <input type = "text" name = "num1"></p>
				<p>두번째 수 : <input type = "text" name = "num2"></p>
				
				<input type = "submit"  value = "더하기">
			</form>
		</div>

</body>
</html>

=============================실행=============================




servlet 생성!


=============================코드=============================

package goott;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/adder")
public class AdderServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
  
    public AdderServlet() {
        super();
        
    }

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 파라미터는 String 타입이기 때문에 형변환이 필요하다!
			int su1 = Integer.parseInt(request.getParameter("num1"));
			int su2 = Integer.parseInt(request.getParameter("num2"));
			
			// 응답 시 한글 깨짐 방지 설정
			response.setContentType("text/html; charset = UTF-8");
			
			PrintWriter out = response.getWriter();
			
			out.println("<html>");
			out.println("<head></head>");
			out.println("<body>");
			
			out.println("<h2>두 수의 합 >>> " + (su1 + su2) + "</h2>");
			
			out.println("</body>");
			out.println("</html>");
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

}

=============================실행=============================

더하기 클릭!




이번에는 서블릿으로 mapping 해보자!

webapp -> WEB-INF 화살표 클릭 -> 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_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>01_Servlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    <welcome-file>default.htm</welcome-file>
  </welcome-file-list>
  
  <!-- 서블릿 매핑 방법 -->
  <servlet>
  	<servlet-name>abc</servlet-name>
  	<servlet-class>goott.Adder1Servlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <!-- 위의 abc 이름과 동일하게 작성! -->
  	<servlet-name>abc</servlet-name>
  	<!-- Adder1Servlet 으로 가라! -->
  	<url-pattern>/adder1</url-pattern>  
  </servlet-mapping>
  
</web-app>

servlet을 만들자!
※ web.xml 에서 goott.Adder1Servlet을 줬기 때문에 servlet 명을 Adder1Servlet으로 줘야 함!!


=============================코드=============================

package goott;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


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

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
				// 파라미터는 String 타입이기 때문에 형변환이 필요하다!
					int su1 = Integer.parseInt(request.getParameter("num1"));
					int su2 = Integer.parseInt(request.getParameter("num2"));
					
				// 응답 시 한글 깨짐 방지 설정
					response.setContentType("text/html; charset = UTF-8");
					
					PrintWriter out = response.getWriter();
					
					out.println("<html>");
					out.println("<head></head>");
					out.println("<body>");
					
					out.println("<h2>두 수의 합 >>> " + (su1 + su2) + "</h2>");
					
					out.println("</body>");
					out.println("</html>");
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

}

=============================실행=============================

더하기 클릭

1:1 mapping과 마찬가지로 똑같이 잘 mapping 되는 것을 확인할 수 있음!

0개의 댓글