Web.xml의 개요, 기능, 활용

1. Web.xml 개요

1.1 Web.xml이란?

  • Web Application의 Deployment Descriptor(환경파일 : 배포서술자, DD파일)로서 XML 형식의 파일
  • 모든 Web application은 반드시 하나의 web.xm l파일을 가져야 함
  • 위치 : WEB-INF 폴더 아래
  • web.xml 파일의 설정들은 Web Application 시작시 메모리에 로딩됨. (수정을 할 경우 web application을 재시작 해야함.)

1.2 Web.xml에 작성되는 내용

  • ServletContext의 초기 파라미터
  • Session의 유효시간 설정
  • Servlet/JSP에 대한 정의
  • Servlet/JSP 매핑
  • Mime Type 매핑
  • Welcome File list
  • Error Pages 처리
  • 리스너/필터 설정
  • 보안

1.3 xml 작성시 주의점

  • 대소문자를 구분 해줘야 한다.
  • attribute 값은 반드시 " " 또는 ' '으로 감싸야 한다.
  • 태그는 반드시 닫아야 한다. ※ content가 없는 태그의 경우 → ex) <br/>

1.4 서블릿 설정

  • servlet-name : 아래 servlet-mapping에 기술주기 위한 식별자
  • servlet-class : 실제 서블릿 클래스, 패키지까지 정확하게 기술
    <servlet> : 서블릿 객체 설정
    
    <servlet-name> : 객체의 이름    </servlet-name>
    
    <servlet-class> : 객체를 생성할 클래스    </servlet-class>
    
    </servlet>
    
  • servlet-name : 위에 servlet에 명시한 이름
  • url-pattern : 어떠한 URL경로로 접근할 수 있는지를 명시
<servlet-mapping>

<servlet-name> 이름 </servlet-name> 일할 서블릿 객체의 이름

<url-pattern>패턴</url-pattern> 클라이언트가 요청할 url 패턴

</servlet-mapping>
  • 기타요소
    <!-- 세션 기간 설정 -->
        <session-config>
          <session-timeout>
            30
          </session-timeout>
        </session-config>
    
        <!-- mime 매핑 -->
        <mime-mapping>
          <extension>txt</extension>
          <mime-type>text/plain</mime-type>
        </mime-mapping>
    
        <!-- 시작페이지 설정 -->
        <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
          <welcome-file>index.html</welcome-file>
        </welcome-file-list>
    
        <!-- 존재하지 않는 페이지, 404에러시 처리 페이지 설정 -->
        <error-page>
          <error-code>404</error-code>
          <location>/error.jsp</location>
        </error-page>
    
        <!-- 태그 라이브러리 설정 -->
        <taglib>
          <taglib-uri>taglibs</taglib-uri>
          <taglib-location>/WEB-INF/taglibs-cache.tld</taglib-location>
        </taglib>
    
        <!-- resource 설정 -->
        <resource-ref>
          <res-ref-name>jdbc/jack1972</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
        </resource-ref>
    

문서정보


블로그 이미지

왕왕왕왕

,

실행


주소 형식


http://도메인명/프로젝트명(폴더명)/서블릿


http://localhost:8080/ServletTest/test


f5키를 눌러서 새로고침하면 매번 시간이 바뀌는 것을 확인

블로그 이미지

왕왕왕왕

,


WEB.XML


<servlet>

<servlet-name>ServletTest</servlet-name>

<servlet-class>ServletTest</servlet-class>

</servlet>


<servlet-mapping>

<servlet-name>ServletTest</servlet-name>

<url-pattern>/test</url-pattern>

</servlet-mapping>






web.xml에 추가



<?xml version="1.0" encoding="ISO-8859-1"?>

<!--

 Licensed to the Apache Software Foundation (ASF) under one or more

  contributor license agreements.  See the NOTICE file distributed with

  this work for additional information regarding copyright ownership.

  The ASF licenses this file to You under the Apache License, Version 2.0

  (the "License"); you may not use this file except in compliance with

  the License.  You may obtain a copy of the License at


      http://www.apache.org/licenses/LICENSE-2.0


  Unless required by applicable law or agreed to in writing, software

  distributed under the License is distributed on an "AS IS" BASIS,

  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

  See the License for the specific language governing permissions and

  limitations under the License.

-->


<web-app xmlns="http://java.sun.com/xml/ns/javaee"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

  version="3.0"

  metadata-complete="true">


  <display-name>Welcome to Tomcat</display-name>

  <description>

     Welcome to Tomcat

  </description>


<servlet>

<servlet-name>ServletTest</servlet-name>

<servlet-class>ServletTest</servlet-class>

</servlet>


<servlet-mapping>

<servlet-name>ServletTest</servlet-name>

<url-pattern>/test</url-pattern>

</servlet-mapping>


</web-app>



저장하고 톰캣 재시작



블로그 이미지

왕왕왕왕

,

web.xml파일 작성


웹 컨테이너에게 사용자가 지금 접근한 주소가 어떤 서블릿 이고 그 서블릿 클래스의 위치는 어떻다고 알려주기 위해 필요한 정보들이 적혀잇는 파일


웹 애플리케이션을 구동 시키는데 있어 가장 중요한 설정 파일


C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\ROOT\WEB-INF 들어가서 web.xml파일 복사


ServletTest 폴더 안에 WEB-INF폴더에 붙여넣기


파일 수정

블로그 이미지

왕왕왕왕

,

ServletTest.java 저장(메모장으로)


도스창에서 C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\servletTest\WEB-INF\src

폴더로 이동


"javac -d ../classes *.java 명령어로 컴파일


아무메시지가 없으면 정상적 수행 




ServletTest.java


import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.Calendar;



public class ServletTest extends HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException{

response.setContentType("text/html");

response.setCharacterEncoding("euc-kr");

Calendar c = Calendar.getInstance();

int hour=c.get(Calendar.HOUR_OF_DAY);

int minute=c.get(Calendar.MINUTE);

int second=c.get(Calendar.SECOND);

PrintWriter out= response.getWriter();

out.write("<HTML><HEAD><TITLE>ServletTest</TITLE></HEAD>");

out.write("<BODY><h1>");

out.write("현재시각은");

out.write(Integer.toString(hour));

out.write("시 ");

out.write(Integer.toString(minute));

out.write("분 ");

out.write(Integer.toString(second));

out.write("초입니다. ");

out.write("</h1></body></html>");

out.close();


}

}



블로그 이미지

왕왕왕왕

,

톰캣 기본 폴더 이동 


C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps


Webapps 폴더 안에 ServletTest폴더 생성


ServletTest폴더안에 WEB-INF 폴더 생성


WEB-INF 안에 3개의 폴더생성

src: 서블릿 클래스로 컴파일 하기 위한 소스 파일들을 넣어 놓은 폴더

classes: 실제로 서비스 될 서블릿 클래스가 들어가는곳

lib:서블릿 클래스들이 구동되는데 필요한 추가 라이브러리 파일들을 넣는곳


서블릿 소스구현(메모장)

블로그 이미지

왕왕왕왕

,

j2ee 환경 설정


서블릿 구현환경


1.아파치기 설치된 경로아래 lib 폴더로 들어간다


2.sevlet-api.jar파일 복사


3.복사한 파일 jdk폴더에 lib폴더 붙여넣기


4.시스템변수에 CLASSPATH에 편집


5.   .;%JAVA_HOME%\lib\servlet-api.jar

블로그 이미지

왕왕왕왕

,