WEB/JSP

7. Servlet 컨텍스트 영역에 값넣기

choi121xx 2013. 4. 18. 16:43

서블릿 컨텍스트 영역에 값 넣기 예제

 << 서블릿의 영역(scope) ** >>

  1. ServletContext영역

  - 모든 서블릿이 공유하는 영역

  - 하나의 웹어플리케이션당 하나가 만들어짐.


  2. ServletConfig영역

  - 서블릿 하나당 할당되는 영역



1. web.xml

2. main.html

3. MyServlet.java

4. ServletScope.java

5. ServletScope1.java

6. TestServlet.java




 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_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>day02_servlet01</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  <servlet>

  <servlet-name>myservlet</servlet-name>

  <servlet-class>test.servlet.MyServlet</servlet-class>

  </servlet>

  <servlet-mapping>

  <servlet-name>myservlet</servlet-name>

  <url-pattern>/my.do</url-pattern>

  </servlet-mapping>

  <!-- 서블릿 컨텍스트 영역에 값 넣기 -->

  <context-param>

  <param-name>user</param-name>

  <param-value>scott</param-value>

  </context-param>

  

  <servlet>

  <servlet-name>scope1</servlet-name>

  <servlet-class>test.servlet.ServletScope1</servlet-class>

  <!-- 초기화 파라미터 설정하기(서블릿컨피그를 통해 사용가능함.!!) -->

  <init-param>

  <param-name>id</param-name>

  <param-value>song</param-value>

  </init-param>

  </servlet>

  <servlet-mapping>

  <servlet-name>scope1</servlet-name>

  <url-pattern>/scope1.do</url-pattern>

  </servlet-mapping>

</web-app>



2. main.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=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<a href="my.do">myservlet</a><br/>

<a href="scope.do">scope</a><br/>

<a href="test.do">test</a><br/>

</body>

</html>








3. MyServlet.java

; myservlet 클릭하면

package test.servlet;


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 MyServlet extends HttpServlet{

//서블릿이 최초로 요청될때 딱한번만 호출됨.(초기화작업)

@Override

public void init() throws ServletException {

System.out.println("init메소드가 호출됨!!");

}

//서블릿이 종료될때 ( 메모리에서 제거될때 ) 호출됨.(자원해제등, .. )

//일정시간 동안 서블릿이 호출되지 않거나 웹서버가 종료되면 서블릿은 제거됨.

@Override

public void destroy() {

System.out.println("destroy");

}

// 서블릿을 요청할때마다 호출됨.

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

resp.setContentType("text/html;charset=euc-kr");

PrintWriter pw = resp.getWriter();

pw.println("<h2>service메소드 호출!</h2>");

pw.close();

}

}



4. ServletScope.java

package test.servlet;


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;


@WebServlet("/scope.do")

public class ServletScope extends HttpServlet{

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {


//서블릿컨텍스트 객체 얻어오기

ServletContext sc = getServletContext();


//서블릿컨텍스트 영역에 값넣기

sc.setAttribute("url", "localhost");


//서블릿컨텍스트 영역에서 값 꺼내오기

String url=(String)sc.getAttribute("url");


//web.xml에 설정된 초기화파라미터 읽어오기.

String user = sc.getInitParameter("user");

resp.setContentType("text/html;charset=euc-kr");

PrintWriter pw = resp.getWriter();

pw.println("url:" + url);

pw.println("user:" + user);

pw.println("<a href='test.do'>testservlet</a><br/>");

pw.close();

}

}



; user에 scott를 보여준다.(xml에서 읽기)



5. ServletScope1.java

package test.servlet;


import java.io.IOException;

import java.io.PrintWriter;


import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


public class ServletScope1 extends HttpServlet{

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {


//서블릿컨피그 객체 얻어오기.

ServletConfig sc = getServletConfig();

String id = sc.getInitParameter("id");


resp.setContentType("text/html;charset=euc-kr");

PrintWriter pw = resp.getWriter();

pw.println("id:" + id);

pw.close();

}

}







6. TestServlet.java

package test.servlet;


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;


@WebServlet("/test.do")

public class TestServlet extends HttpServlet {

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {


ServletContext sc=getServletContext();

String url=(String)sc.getAttribute("url");


resp.setContentType("text/html;charset=euc-kr");

PrintWriter pw = resp.getWriter();

pw.println("서블릿컨텍스트에 담긴 url:" + url);

pw.close();

}

}