Web java => Servelet 서블릿 선언 방법 2가지 / 2번째
웹 자바: 서블릿 : 서블릿 선언방법 2번째 (web.xml)에 선언 / 2번째 포스팅
1번째 포스팅 :
Java/ Web java => Servelet 서블릿 선언 방법 2가지 (tistory.com)
Java/ Web java => Servelet 서블릿 선언 방법 2가지
서블릿 기초 : html 파일 1개 + 서블릿 클래스 1개로 간단한 예제 (tistory.com) 서블릿 기초 : html 파일 1개 + 서블릿 클래스 1개로 간단한 예제 셋팅 : 본인은 아파치 톰캣 9.0 설치 / 이클립스 ee *톰캣 에
jangmicoding.tistory.com
서블릿 선언 방식
1. 클래스 위에 @WebServlet("/주소") 어노테이션 사용
2. web.xml 파일에 선언해주기
1 서블릿을 상속받은 클래스 생성
2 init() 과 doget() 메서드 오버라이딩
package ex1;
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("/scopeTest1")
public class Ex5_Scope extends HttpServlet{
private String company;
private String email;
private String tel;
//String mymode = req.getParameter("mode");
@Override
public void init() throws ServletException {
email=getServletConfig().getInitParameter("email");
tel= getServletConfig().getInitParameter("tel");
//company= getServletConfig().getInitParameter("company");
company= getServletContext().getInitParameter("company");
//String 변수에 파라미터를 담는다.
//getServletContext().
// <init-param>는 여기 내부에서는 config로 불러오기 가능 외부는 불가능?
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html; charset=euc-kr");
PrintWriter pw = resp.getWriter();
pw.println("Ex5_Scope Page"+"<br>");
pw.println("email:"+email+"<br>");
pw.println("tel:"+tel+"<br>");
pw.println("company:"+company+"<br>");
}
}
3 web.xml 파일에 코드 추가
(전화번호 이메일, 회사이름 등은 테스트니까 자유롭게 설정 가능)
*context-param : 모든 서블릿에서 접근이 가능한 파라미터 값이다. 독립적이므로 서블릿의 밖에서 선언한다.
파라미터를 얻을 때 getServletContext() 메소드 사용 /전역변수 개념
*Init-param : 해당 서블릿 내에서만 접근이 가능한 파라미터 값이다.
파라미터 값을 얻을 때 getServletConfig() 메소드를 사용 / 지역변수 개념
<context-param>
<description>회사이름</description>
<param-name>company</param-name>
<param-value>티스토리 교육센터</param-value>
</context-param>
<servlet>
<servlet-name>scope1</servlet-name>
<servlet-class>ex1.Ex5_Scope</servlet-class>
<init-param>
<param-name>email</param-name>
<param-value>tssss@naver.com</param-value>
</init-param>
<init-param>
<param-name>tel</param-name>
<param-value>010-2222-2222</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>scope1</servlet-name>
<url-pattern>/myScope1</url-pattern>
</servlet-mapping>
Ex5_Scope 클래스에서 실행시켜본다.
*context-param 와 Init-param 의 차이*
클래스를 하나 만들고 앞의 예제 Ex5_Scope 클래스와 같은 멤버필드를 구성한다.
package ex1;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/life")
public class Ex4_LifeCycle extends HttpServlet{
//서블릿의 생명서클 생명주기
//http://localhost:8080/repeatA/life?company=LSD&tel=shm&email=102
private String company;
private String email;
private String tel;
public Ex4_LifeCycle() {
System.out.println("생성자 호출");
}
//클래스 ex5 한 후에
@Override
public void init() throws ServletException {
//class ex5 scope에서 가져오기 복붙
System.out.println("init()호출");
email=getServletConfig().getInitParameter("email");
tel = getServletConfig().getInitParameter("tel");
company= getServletContext().getInitParameter("company");
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("service() 호출");
arg1.setContentType("text/html; charset=euc-kr");
PrintWriter pw = arg1.getWriter();
pw.println("Ex4_LifeCycle Page"+"<br>");
pw.println("email : " + email +"<br>");
pw.println("tel : " + tel + "<br>");
pw.println("company : " + company+"<br>");
}
@Override
public void destroy() {
System.out.println("destroy() 호출");
}
//출력결과ㅣ destory는 호출되지 않음
}
실행결과, context-param인 company는 출력이 되지만, 타 서블릿의 init-param 요소인
메일과 전화번호 2가지는 접근이 불가능하다는 것을 알 수 있다.