>  기사  >  Java  >  Java 서블릿의 기본 지식에 대한 자세한 설명

Java 서블릿의 기본 지식에 대한 자세한 설명

黄舟
黄舟원래의
2017-07-26 15:11:202416검색

이 글은 주로 서블릿의 기본 정보를 자세하게 소개하며, 관심 있는 친구들은 참고할 수 있습니다.

서블릿은 Sun 사에서 특별히 사용하는 기술로 서블릿 인터페이스를 제공합니다. , 이 인터페이스를 직접 구현하지는 않지만 구현 클래스를 상속하는 것이 더 좋습니다) 따라서 좁은 의미의 서블릿은 이 인터페이스를 나타내고 넓은 의미의 서블릿은 이 서블릿 인터페이스의 모든 구현을 나타냅니다. . Servlet을 사용하여 동적 웹 리소스를 개발하는 것은 실제로 브라우저에 데이터를 출력하는 Java 프로그램을 개발하는 것입니다.

서블릿은 실제로 서버에서 실행되는 Java 프로그램입니다. 서블릿은 J2EE의 13가지 기술 중 하나이므로 J2SE의 API 문서를 읽을 수 없습니다. 서블릿. 서블릿에 대한 문서 소개를 살펴보겠습니다.

서블릿 인터페이스에 대한 이 소개에서 서블릿 인터페이스를 구현하려면 해당 메소드를 모두 구현해야 한다는 것을 알 수 있습니다. 웹 서버. 클라이언트로부터 요청을 수신하고 응답하는 데 사용됩니다. 물론 앞서 말했듯이 서블릿 인터페이스를 구현하는 클래스를 작성한다면 서블릿의 모든 메소드를 오버라이드해야 하지만 GenericServlet 클래스나 HttpServlet 클래스와 같은 구현 클래스를 상속받을 수 있으므로 재정의하려는 항목만 재정의하면 됩니다.

서블릿의 메소드에는 라이프사이클 메소드와 비라이프사이클 메소드가 포함됩니다. 서블릿의 라이프사이클 메소드에는 init(ServletConfig config), destroy(), service(ServletRequest req, ServletResponse res), 즉 서블릿 초기화, 요청에 대한 응답 서비스, 서블릿 파기 등이 있습니다.

서블릿의 라이프사이클 메소드 외에도 서블릿에 대한 일부 정보를 얻을 수 있는 getServletConfig() 및 getServletInfo() 메소드와 같은 비라이프사이클 메소드도 있습니다.

 서블릿 수명주기는 생성부터 클라이언트 요청에 대한 응답, 최종적으로 서블릿 인스턴스 소멸까지의 프로세스를 의미합니다. 구체적인 프로세스는 다음과 같습니다:

 1. 서버가 Servlet의 인스턴스를 생성합니다. 즉, init() 메소드를 호출합니다. 2. 클라이언트 요청(객체)이 서버에 도달합니다.

 3. 서버가 요청을 보냅니다.

 4. 서블릿은 요청에 대한 응답(객체)을 생성합니다.

 5. 서버는 요청 객체와 응답 객체를 매개변수로 전달하여 Servlet의 service() 메서드를 활성화합니다. ) 메소드는 요청 객체의 정보를 얻고 이를 처리합니다. 요청, 리소스에 액세스하고 필요한 정보를 얻습니다.

 7. Service() 메소드는 응답 객체 메소드를 사용하여 응답을 서버로 다시 전송하고 최종적으로 클라이언트에 도달합니다. . Service 메소드는 요청을 처리하기 위해 doGet() 또는 doPost() 메소드와 같은 다른 메소드를 활성화할 수도 있습니다.

 8. 더 많은 클라이언트 요청에 대해 서버는 새로운 요청 및 응답 객체를 생성하고 이 서비스 메소드를 계속 활성화합니다. 이 두 객체는 ​​매개변수로 전달되며 init() 메소드를 다시 호출할 필요가 없습니다. 일반적으로 서블릿은 한 번만 초기화됩니다. 서버에 더 이상 서블릿이 필요하지 않으면(일반적으로 서버가 종료됨) 서버는 서블릿의 destroy() 메소드를 호출하여 서블릿을 파기합니다.

위에서 보면 서블릿 생명주기의 세 가지 메소드가 서버에 의해 호출되는 것을 알 수 있는데, 서블릿

이 존재하는 과정에서 특정 순간에 반드시 실행된다고 할 수 있습니다. 해당 파기(이벤트가 트리거된 경우) 메서드를 수명 주기 메서드라고 합니다.

따라서 서블릿에서 가장 중요한 것은 service() 메소드입니다. 서버에서 클라이언트로 리소스를 전송하거나 클라이언트로 데이터를 전송하려는 경우 service() 메소드에서 수행됩니다.  service(ServletTequest req, ServletResponse res) 메소드로 보면 service() 메소드가 서버에 의해 호출되어 실행될 뿐만 아니라, 원하는 경우 ServletTequest 요청 객체와 ServletResponse 응답 객체도 제공됩니다. 클라이언트에 간단한 데이터를 쓰려면 service() 메소드에서 ServletResponse 응답 객체를 조작할 수 있습니다:

  우선, Servlet을 작성하기 위해 개발 도구 IDE를 사용할 필요는 없지만 먼저 수동으로 작성합니다. 이는 서블릿의 기본 원칙을 이해하는 데 도움이 될 것입니다. Tomcat의 [webapps] 디렉터리에 웹 애플리케이션을 생성합니다. 웹 애플리케이션이 위치한 디렉터리는 [myservlet]입니다. 먼저 [myservlet] 디렉터리에 [WEB-INF]를 생성한 다음, [WEB]에 [classes]를 생성합니다. -INF].] 디렉터리, [lib 디렉터리] 및 web.xml 파일, [classes] 디렉터리에서 내 Java 프로그램 FirstServlet.java

을 만듭니다.

우리가 작성하는 서블릿은 서버에서 호출되기 때문에 우리가 만드는 서블릿 구현 클래스는 공개되어야 합니다 서블릿의 모든 메소드를 구현할 필요는 없으므로 서비스만 복사하면 됩니다. () 메소드로 충분하므로 Servlet 구현 클래스를 상속한 다음 해당 객체 ServletResponse의 출력 스트림 ServletOutputStream을 획득하여 동시에 클라이언트에 데이터를 출력하면 됩니다. 출력은 바이트 스트림이므로 문자를 바이트 배열로 변환한 다음 사용자 정의 패키지 이름과 가져올 Java 패키지를 수동으로 작성해야 합니다.


package fjdingsd.web;
import java.io.*;
import javax.servlet.*;
public class FirstServlet extends GenericServlet{
  public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException
  {
   OutputStream out = res.getOutputStream();
   out.write("Hello Servlet".getBytes());
  }
}

이 Java 프로그램을 컴파일하려면 cmd를 사용하세요. "javac"은 기본적으로 가져오는 J2SE 패키지일 뿐이며 J2EE 패키지는 없습니다. 그렇다면 J2EE Servlet 패키지를 찾으려면 어디로 가야 할까요? 실제로 Tomcat은 Servlet을 지원하기 때문에 Tomcat의 [lib] 디렉토리에는 Servlet JAR 패키지가 포함되어 있습니다.

따라서 먼저 cmd에서 환경 변수를 설정해야 합니다. set classpath = %classpath% path/servlet- api.jar

그런 다음 바로 Java 프로그램을 컴파일할 수 있습니다. javac -d . 프로그램 이름.java

("-d"는 다음 명령을 위해 .class 파일이 저장되는 디렉터리를 나타내고, "."는 현재 디렉터리를 나타냅니다. )

컴파일이 성공한 후 웹 애플리케이션이 위치한 디렉토리에 이미 바이트코드 파일과 패키지 이름이 있음을 확인할 수 있습니다.

물론 이제 서블릿 프로그램이 있지만 브라우저는 이를 수행할 수 없습니다. 아직 액세스하지 마세요. 이 서블릿 프로그램이 아직 외부 액세스 경로를 설정하지 않았기 때문입니다. 그렇다면 방금 생성한 서블릿 바이트코드 파일을 브라우저가 액세스할 수 있는 경로로 어디에서 구성해야 할까요?

이 웹 애플리케이션의 web.xml 파일에 답이 있습니다. 이제 "Tomcat 세부 학습 방법(3)"에서 언급한 대로 "템플릿"에 Tomcat의 web.xml을 넣습니다. 700b5f17c4d842e4bd410f680f40946b은 일관성이 있어야 하며 46309ed845064fdb06e746051efff9e0의 66e1775cbd9d5002635ae3285442ba88 ;servlet-mapping>은 우리가 설정할 수 있는 것입니다. 이제 외부 액세스 경로를 사용할 수 있으며 경로를 사용자 정의할 수 있습니다. 이 경로의 설정은 작성할 필요가 없으며 그렇지 않으면 기본값이 됩니다. 그러면 브라우저의 입력 주소에는 웹 애플리케이션 이름만 있으면 되지만 기본값으로 설정하더라도 66e1775cbd9d5002635ae3285442ba88도 있어야 합니다. 슬래시("/")가 있어야 합니다.

이 때 Tomcat 서버를 열면 브라우저에서 방금 작성한 Servlet 프로그램에 액세스할 수 있습니다. 입력 형식은 호스트 이름: 포트(80은 필수 아님)/웹 애플리케이션 이름/외부 액세스 경로입니다.

서블릿 접근이라면 외부 접근 경로만 적으면 아래와 같이 접근이 불가능해집니다.

또 다른 문제가 있습니다. , 다중인 경우 xml 파일에서 각 서블릿의 외부 접근 경로가 동일하게 구성되면 아래와 같이 접근할 수 없게 됩니다.

따라서 사용자 정의에서 외부 접근 경로를 다르게 구성하십시오. 다른 서블릿에 대한 web.xml.

위 내용은 Java 서블릿의 기본 지식에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.