초기 파라미터
☞ 서버단 컴포넌트(Servlet, JSP, Listener 등)이 사용하는 문자열 중 나중에 변경 될 수 있는 문자열을 web.xml에 등록해 놓고 컴포넌트에서 호출하여 사용
☞ 나중에 변경시 설정에서만 바꾸면 컴포넌트의 수정없이 변경이 가능
☞ 초기 파라미터 2가지
◎ 특정 서블릿, JSP만 사용할 수 있는 초기 파라미터
- ServletConfig 이용
◎ Application 내 모든 컴포넌트가 사용할 수 있는 초기 파라미터
- ServletContext 이용
☞ javax.servlet.ServletConfig
- Servlet 객체가 일하는 데 필요한 정보를 가지고 있는 객체
- Web Container가 생성하여 Servlet의 init() 호출시 주입
- Servlet 객체 당 하나씩 생성
☞ ServletConfig를 이용한 초기 파라미터 처리
1. web.xml에 초기 파라미터 설정
<servlet>
<servlet-name>서블릿 객체 이름</servlet-name>
<servlet-class>서블릿 클래스 이름</servlet-class>
<init-param>
<param-name>초기 파라미터 이름</param-name>
<param-value>초기 파라미터 값</param-value>
</init-param>
</servlet>
- 초기 파라미터가 여러개인 경우 <init-param>을 반복
2. ServletConfig 객체.getInitParameter(String paramName) : paramValue
- return type : String ParamValue
하나의 클래스를 통해 두개의 Servlet 객체를 사용하는 프로그램
GreetingServlet.java
더보기 접기
package servlet.initparam;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
public class GreetingServlet extends HttpServlet { private static final long serialVersionUID = 1L; private String label; private String greeting; public void init() throws ServletException { label = getInitParameter("label"); greeting = getInitParameter("greeting"); }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); //1. 요청 파라미터 조회 String name = request.getParameter("name"); //2. 응답 out.println("<html><body>"); out.println(label+greeting + " "+ name); out.println("<br><a href='/myweb/initparam/greeting_form.html'>요청</a>"); out.println("</body></html>"); }
}
접기
greeting_form.html
더보기 접기
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd "> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="/myweb/eng_greeting"> Name : <input type="text" name ="name"> <input type="submit" value="전송"> </form> <hr> <form action="/myweb/kor_greeting" method="post"> 이름 : <input type="text" name="name"> <input type="submit" value="전송"> </form> </body> </html>
접기
web.xml
더보기 접기
<?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 " xmlns:web=" http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd " 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"> <servlet> <description></description> <display-name>GreetingServlet</display-name> <servlet-name>GreetingServlet</servlet-name> <servlet-class>servlet.initparam.GreetingServlet</servlet-class> <init-param> <description></description> <param-name>greeting</param-name> <param-value>How are you?</param-value> </init-param> <init-param> <description></description> <param-name>label</param-name> <param-value>Greeting :</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>GreetingServlet</servlet-name> <url-pattern>/eng_greeting</url-pattern> </servlet-mapping> <servlet> <servlet-name>GreetingKorean</servlet-name> <servlet-class>servlet.initparam.GreetingServlet</servlet-class> <init-param> <param-name>label</param-name> <param-value>인사말 : </param-value> </init-param> <init-param> <param-name>greeting</param-name> <param-value>안녕하세요...?</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>GreetingKorean</servlet-name> <url-pattern>/kor_greeting</url-pattern> </servlet-mapping> </web-app>
접기
☞ javax.servlet.ServletContext
☞ web Application이 자체 또는 일하는데 필요한 정보를 가지고 있는 객체
- Web Component는 Web Application과 관련된 정보를 조회하거나 업무를 처리할 때
ServletContext type객체를 이용
☞ Web Application이 시작할 때 Web Container에 의해 생성된다.
☞ Servlet의 getServletContext()를 통해 조회
- ServletContext ctx = getServletContext();
☞ Web Application 당 하나가 생성됨
☞ ServletContext를 이용한 초기 파라미터 처리
1. web.xml에 초기 파라미터 설정
<web-app>
<context-param>
<param-name>초기 파라미터 이름</param-name>
<parm-value>초기 파라미터 값</param-value>
</context-param>
- 초기 파라미터가 여러개인 경우 <context-param> 반복
2. 코드상에서 조회
ServletContext객체.getInitParameter(String paramName) : String paramValue
ContextParamServlet.java
더보기 접기
package servlet.initparam
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ContextParamServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //ServletContext를 이용해 Context level의 초기 파라미터 조회 //1. ServletContext 객체 조회 - ServletContext는 반드시 얻어와야 한다 ServletContext ctx = getServletContext(); //2. 파라미터 조회 String name = ctx.getInitParameter("name"); String email = ctx.getInitParameter("email"); String phoneNumber = ctx.getInitParameter("phone number"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("이름 : " + name + "<br>"); out.println("email : " + email + "<br>"); out.println("전화번호 : "+ phoneNumber+ "<br>"); out.println("</body></html>"); } }
접기
web.xml
더보기 접기
<?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 " xmlns:web=" http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd " 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"> <context-param> <param-name>name</param-name> <param-value>홍길동</param-value> </context-param> <context-param> <param-name>email</param-name> <param-value>abc@abc.com</param-value> </context-param> <context-param> <param-name>phone number</param-name> <param-value>010-111-2222</param-value> </context-param> <servlet> <description></description> <display-name>ContextParamServlet</display-name> <servlet-name>ContextParamServlet</servlet-name> <servlet-class>servlet.initparam.ContextParamServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ContextParamServlet</servlet-name> <url-pattern>/context_param</url-pattern> </servlet-mapping> </web-app>
접기
ContextParamServlet의 context 객체 조회 코드를 GreetingServlet.java에 적용해도 ContextParamServlet에서 조회한 결과와 같은 값이 추가적으로 더해져 출력된다. Therefore, Web Application은 web application 내에서 값을 공유하는 하나의 Servlet Context를 가진다.
GreetingServlet.java에 추가한 context객체 조회 코드
더보기 접기
접기
출력결과
더보기 접기
접기
Event 모델
☞ Event : 컴포넌트에 가해진 동작, 변화.
☞ Event Listener
1. 컴포넌트에서 Event가 발생하는 것을 감시하는 Container
2. 발생한 Event를 처리하는 동작을 가진 객체(Listener class)
☞ Event Handler : 발생한 Event를 처리하는 동작(메소드)
☞ Event Source : Event가 발생한 컴포넌트
ex) 버튼을 클릭하면 안녕이라고 출력한다.
Event Source : 버튼
Event : 클릭
Event Handler : 안녕 을 출력하는 동작