728x90
대부분의 웹 애플리케이션의 메뉴는 공통으로 사용하는 기능이다. 따라서 web.xml에 설정해놓고 프로그램 시작 시 초기화할 때 가져와서 사용하면 편리하다. 그러면 새로운 메뉴 항목이 생성되거나 기존 메뉴 항목을 추가, 삭제할 때도 쉽게 수정이 가능하다.
다음과 같이 ContextParamServlet.java 클래스 파일과 web.xml 파일을 준비.
web.xml에 메뉴 항목을 설정. <context-param> 태그 안에 <param-value> 태그와 <param-value> 태그를 이용해 메뉴에 대한 하위 메뉴 항목을 설정.
// ContextParamServlet.java
package sec05.ex02;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ContextParamServlet
*/
@WebServlet("/initMenu")
public class ContextParamServlet extends HttpServlet {
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
ServletContext context = getServletContext(); // ServletContext 객체를 가져옴
// web.xml의 <param-name> 태그의 이름으로 <param-value> 태그의 값인 메뉴 이름들을 받아옴
String menu_member = context.getInitParameter("menu_member");
String menu_order = context.getInitParameter("menu_order");
String menu_goods = context.getInitParameter("menu_goods");
out.print("<html><body>");
out.print("<table border=1 cellspacing=0><tr>메뉴 이름</tr>");
out.print("<tr><td>" + menu_member + "</td></tr>");
out.print("<tr><td>" + menu_order + "</td></tr>");
out.print("<tr><td>" + menu_goods + "</td></tr>");
out.print("</tr></table></body></html>");
}
}
getServletContext( ) 메서드로 ServletContext 객체에 접근하고, getInitParameter( ) 메서드의 인자로 각각의 메뉴 이름을 전달한 후 메뉴 항목들을 가져와 이를 브라우저로 출력함.
728x90
'웹 개발 기초 > 자바 웹을 다루는 기술' 카테고리의 다른 글
ServletConfig 서블릿 확장 API (0) | 2023.02.20 |
---|---|
ServletContext의 파일 입출력 기능 (0) | 2023.02.20 |
ServletContext 바인딩 기능 (0) | 2023.02.20 |
ServletContext 클래스 (0) | 2023.02.20 |
두 서블릿 간 회원 정보 조회 바인딩 실습 (0) | 2023.02.20 |