일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- javascript
- redis
- jenkins
- Spring
- 요리
- java
- elasticsearch
- devops
- tool
- Design Patterns
- ReactJS
- AWS
- db
- IntelliJ
- Spring Boot
- Git
- ubuntu
- jsp
- 맛집
- php
- Gradle
- JVM
- MySQL
- linux
- it
- springboot
- Oracle
- laravel
- Web Server
- Spring Batch
- Today
- Total
아무거나
[Servlet] 서블릿 학습(4) 본문
[Servlet] 서블릿 학습(4)
1. 서블릿 초기화 파라미터 : ServletConfig
- 특정 Servlet이 생성될 때 초기에 필요한 데이터들이 있다. 이러한 데이터들을 초기화 파라미터라고 하며, web.xml에 기술하고
Servlet파일에서는 ServletConfig 클래스를 이용해서 접근(사용)합니다.
또한 초기화 파라미터를 web.xml이 아닌 Servlet파일에 직접 기술하는 방법도 확인하자.
[web.xml 방식]
(1) Servlet 클래스 제작
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>com.javalec.ex.HelloWorld</servlet-class>
</servlet>
......
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/hw</url-pattern> <!-- servlet-class의 클래스를 매핑할 임의의 이름을 입력한다. 주의할점은 /로 시작해야된다 -->
</servlet-mapping>
(2) web.xml파일에 초기화 파라미터 기술
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>com.javalec.ex.HelloWorld</servlet-class>
......
<!-- 초기화 파라미터 지정 -->
<init-param>
<param-name>id</param-name>
<param-value>abcdef</param-value>
</init-param>
<init-param>
<param-name>pw</param-name>
<param-value>1234</param-value>
</init-param>
<init-param>
<param-name>path</param-name>
<param-value>C:\\javalec\\workspace</param-value>
</init-param>
.......
(3) ServletConfig 메소드 이용해서 데이터 불러오기
- String id = getInitParameter("id");
- String pw = getInitParameter("pw");
- String path = getInitParameter("path");
** ServletConfig를 선언할 필요없이 어차피 HttpServlet이 상속받기 때문에 바로 getInitParameter을 갖다 쓰면 된다.
[Servlet 파일에 초기화 파라미터(Initialization Parameter) 직접 기술하는 방법]
(1) Servlet 클래스 제작
(2) @WebInitParam에 초기화 파라미터 기술
- @WebServlet(urlPatterns={"/ServletInitParam"}, initParams={@WebInitParam(name="id", value="abcdef"), @WebInitParam=....})
(3) ServletConfig 메소드 이용해서 데이터 불러오기
- String id = getInitParameter("id");
- String pw = getInitParameter("pw");
- String path = getInitParameter("path");
2. 데이터 공유(ServletContext)
- 1번 2번과 달리 모든 Servlet에서 쓸 수 있는(즉, 특정 데이터를 공유해야 할 경우) context parameter를 이용해서
web.xml에 데이터를 기술하고, Servlet에서 공유하면서 사용할 수 있다.
[web.xml 방식]
(1) Servlet 클래스 제작
(2) web.xml 파일에 context parameter 기술(반드시 독립적으로 기술하며 Servlet매핑하는 태그보다 위에 위치를 해야한다.)
.........
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>id</param-name>
<param-value>abcedf</param-value>
</context-param>
<context-param>
<param-name>pw</param-name>
<param-value>1234</param-value>
</context-param>
<context-param>
<param-name>path</param-name>
<param-value>C:\\javalec\\workspace</param-value>
</context-param>
<servlet>
<servlet-name>helloworld</servlet-name> <!-- 임의의 이름을 만든다 -->
<servlet-class>com.javalec.ex.HelloWorld</servlet-class> <!-- 매핑할 클래스 파일명을 패키지명을 포함하여 정확히 입력 -->
<!-- 초기화 파라미터 지정 -->
<init-param>
.........
(3) ServletContext 메소드 이용해서 데이터 불러오기
- String id = getServletContext().getInitParameter("id");
- String pw = getServletContext().getInitParameter("pw");
3. 웹 어플리케이션 감시(ServletContextListener)
- 웹 어플리케이션의 생명주기(LifeCycle)를 감시하는 리스너(Listener)가 있다. 바로 ServletContextListener이다.
리스너의 해당 메소드가 웹 어플리케이션의 시작과 종료 시 호출 됩니다. ( contextInitialized(), contextDestroyed() )
[web.xml 방식]
(1) 리스너 클래스 제작
- ServletL이라는 클래스를 만들고 ServletContextListener를 implements한다.
- 반드시 ServletContextListener를 implements 하고 있어야 한다.
[ServletL.java]
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ServletL implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) { // 종료될때
System.out.println("contextDestroyed");
}
@Override
public void contextInitialized(ServletContextEvent arg0) { // 처음 웹 어플리케이션이 구동될때 실행
System.out.println("contextInitialized");
}
}
(2) web.xml파일에 리스너 클래스 기술
<listener>
<listener-class>com.javalec.ex.ServletL</listener-class>
</listener>
[Servlet 파일에 직접 기술]
@WebListener로 명시를 해줘도 된다.
[ex]
@WebListener
public class ServletL implements ServletContextListener {
.....
참고: https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-jsp-%EA%B0%95%EC%A2%8C/dashboard
'Java & Kotlin > JSP & Servlet' 카테고리의 다른 글
[JSP] 학습 2 (0) | 2019.12.21 |
---|---|
[JSP] 학습 1 (0) | 2019.12.21 |
[Servlet] 서블릿 학습(3) (0) | 2019.12.21 |
[Servlet] 서블릿 학습(2) (0) | 2019.12.21 |
[Servlet] 서블릿 학습 (1) (0) | 2019.12.21 |