English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Servlet 패키지

WEB 관련-INF 서브 디렉토리의 Web 애플리케이션 구조는 모든 Java 웹 애플리케이션의 표준이며, Servlet API 규격에 의해 지정됩니다. 최상위 디렉토리 이름이 myapp인 경우, 디렉토리 구조는 다음과 같습니다:

/myapp
    /images
    /WEB-INF
        /classes
        /lib

WEB-INF 서브 디렉토리에는 web.xml이라는 이름의 애플리케이션 배포 설명자가 포함되어 있습니다. 모든 HTML 파일은 최상위 디렉토리에 위치합니다 myapp 아래에 있습니다. admin 사용자의 경우, ROOT 디렉토리가 myApp의 상위 디렉토리임을 발견할 수 있습니다.

패키지 내의 Servlet 생성

WEB-INF/classes 디렉토리는 모든 Servlet 클래스와 다른 클래스 파일을 포함하고 있으며, 클래스 파일의 디렉토리 구조는 패키지 이름과 일치합니다. 예를 들어, 완전히 규정된 클래스 이름이 com.myorg.MyServlet라면 이 Servlet 클래스는 다음 디렉토리에 위치해야 합니다:

/myapp/WEB-INF/classes/com/myorg/MyServlet.class

아래의 예제는 패키지 이름이 com.myorg MyServlet 클래스.

// 패키지 이름 지정
package com.myorg;  
// 필요한 java 라이브러리를 가져오기
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
@WebServlet("/MyServlet)
public class MyServlet extends HttpServlet {
 
  private String message;
 
  public void init() throws ServletException
  {
      // 실행이 필요한 초기화
      message = "Hello World";
  }
 
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html;charset=UTF-8")/html;charset=UTF-8-8");
 
      // 实际的逻辑是在这里
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1});
  }
  
  public void destroy()
  {
      // 什么也不做
  }
}

编译包中的 Servlet

编译包中的类与编译其他的类没有什么大的不同。最简单的方法是让您的 java 文件保留完全限定路径,如上面提到的类,将被保留在 com.myorg 中。您还需要在 CLASSPATH 中添加该目录。

假设您的环境已正确设置,进入 <Tomcat-installation-디렉토리>/webapps/ROOT/WEB-INF/classes 目录,并编译 MyServlet.java,如下所示:

$ javac MyServlet.java

如果 Servlet 依赖于其他库,那么您必须在 CLASSPATH 中也要引用那些 JAR 文件。这里我只引用了 servlet-api.jar JAR 文件,因为我在 Hello World 程序中并没有使用任何其他库。

该命令行使用内置的 javac 编译器,它是 Sun Microsystems Java 软件开发工具包(JDK,全称 Java Software Development Kit)附带的。 Microsystems的Java软件开发工具包(JDK)。为了让该命令正常工作,必须包括您在 PATH 环境变量中所使用的 Java SDK 的位置。

如果一切顺利,上述编译会在同一目录下生成 MyServlet.class 文件。下一节将解释如何把一个已编译的 Servlet 部署到生产中。

Servlet 打包部署

默认情况下,Servlet 应用程序位于路径 <Tomcat-installation-디렉토리>/webapps/ROOT 下,且类文件放在 <Tomcat-installation-디렉토리>/webapps/ROOT/WEB-INF/classes 中。

如果您有一个完全合格的类名称 com.myorg.MyServlet에 이 Servlet 클래스가 위치해야 합니다.-INF/classes/com/myorg/MyServlet.class에서, Tomcat 내에 위치한 <Tomcat-installation-디렉토리>/webapps/ROOT/WEB-INF/ 의 web.xml 파일에 다음 항목을 생성하세요:

    <servlet
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>com.myorg.MyServlet</servlet-class>
    </servlet>
 
    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/MyServlet</url-pattern>
    </servlet-mapping>

위의 항목은 web.xml 파일의 <web-app>.../web-app> 태그 내에서 사용해 보겠습니다. 이 파일에는 여러 가지 사용 가능한 항목이 있을 수 있지만, 그것에 대해 신경 쓰지 마세요.

여기까지 왔습니다. 지금은 <Tomcat-installation-디렉토리>\bin\startup.bat(윈도우에서) 또는 <Tomcat-installation-디렉토리>/bin/startup.sh(리눅스에서)/Solaris 등에서 Tomcat 서버를 시작하고, 마지막으로 브라우저의 주소 탐색기에 입력하세요 http://localhost:8080/MyServlet만약 모든 것이 잘 갔다면, 아래의 결과를 볼 수 있습니다:

Hello World