728x90
서블릿에서 사용할 설정 정보를 읽어 들여와 초기화하는 방법 중 하나.
@WebServlet의 구성 요소들
요소 | 설명 |
urlPatterns | 웹 브라우저에서 서블릿 요청 시 사용하는 매핑 이름 |
name | 서블릿 이름 |
loadOnStartup | 컨테이너 실행 시 서블릿이 로드되는 순서 지정 |
initParams | @WebInitParam 애너테이션을 이용해 매개변수를 추가 |
description | 서블릿에 대한 설명 |
@WebServlet으로 서블릿을 생성할 때 사용할 매개변수를 설정하고 가져오는 방법
1. InitParamServlet.java 클래스 이름을 지정하고 Next 클릭
2. Initialization parameters 의 Add를 클릭하고 다음 두 가지 Name과 Value를 설정한다.
3. Name과 Value가 잘 들어갔는지 확인 후 URL mappings의 기본값으로 존재하는 /InitParamServlet을 Remove를 눌러 삭제한 뒤 Add를 클릭한다.
4. 패턴으로 /sInit과 /sInit2를 추가한다.
5. URL mappings를 확인한 후 Next를 클릭
6. Inherited abstract methods와 doGet을 체크하고 Finish 클릭
7. 그럼 이렇게 설정한 대로 @WebServlet으로 추가된 매핑 이름과 매개변수가 표시되는 것을 확인할 수 있음
8. InitParamServlet 클래스 작성
(getInitParameter( ) 메서드에 애너테이션으로 매개변수를 설정할 때 지정한 email과 name을 인자로 전달하여 각 값을 가져옴)
// InitParamServlet.java
package sec06.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class initParamServlet
*/
@WebServlet(name="initParamServlet",
// urlPatterns를 이용해 매핑 이름을 여러 개 설정이 가능
urlPatterns = {"/sInit","/sInit2"},
// @WebInitParam을 이용해 여러 개의 매개변수를 설정하는 것이 가능
initParams = {@WebInitParam(name = "email", value = "admin@jweb.com"),
@WebInitParam(name = "tel", value = "010-1111-2222")})
public class InitParamServlet extends HttpServlet {
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
// 설정한 매개변수의 name으로 값을 가져옴
String email = getInitParameter("email");
String tel = getInitParameter("tel");
out.print("<html><body>");
out.print("<table><tr>");
out.print("<td>email: </td><td>"+email+"</td></tr>");
out.print("<tr><td>휴대전화: </td><td>"+tel+"</td></tr>");
out.print("</tr></table></body></html>");
}
}
9. 브라우저에서 각각 매핑 이름 /sInit과 /sInit2로 요청하면 동일한 결과가 출력되는 것을 확인할 수 있음
추가로 지금은 잘 이용되지 않지만 다음과 같이 web.xml 을 이용해 매개변수를 설정하는 방법도 있음
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>sinit</servlet-name>
<servlet-class>sec06.ex01.initParamServlet</servlet-class>
<!-- <init-param> 태그 안에 매개변수를 설정할 수 있음 -->
<init-param>
<param-name>email</param-name>
<param-value>admin@jweb.com</param-value>
</init-param>
<init-param>
<param-name>tel</param-name>
<param-value>010-1111-2222</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>sinit</servlet-name>
<url-pattern>/first</url-pattern>
</servlet-mapping>
</web-app>
728x90
'웹 개발 기초 > 자바 웹을 다루는 기술' 카테고리의 다른 글
웹 페이지 연결 기능 (0) | 2023.02.22 |
---|---|
load-on-startup 기능 사용하기 (0) | 2023.02.20 |
ServletConfig 서블릿 확장 API (0) | 2023.02.20 |
ServletContext의 파일 입출력 기능 (0) | 2023.02.20 |
ServletContext의 매개변수 설정 기능 (0) | 2023.02.20 |