«   2025/05   »
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
Tags more
Archives
Today
Total
관리 메뉴

장미의 개발일기

Web java => Servelet 서블릿 선언 방법 2가지 / 2번째 본문

개발일기/JSP 프로그래밍 (Java 웹프로그래밍)

Web java => Servelet 서블릿 선언 방법 2가지 / 2번째

민장미 2023. 6. 4. 20:48

 

웹 자바: 서블릿 : 서블릿 선언방법 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가지는 접근이 불가능하다는 것을 알 수 있다.