Jsp&Servelet 연구 노트(1)
저자:Eve Cole
업데이트 시간:2009-07-02 17:15:10
1.1 서블릿 프로그램 작성
1.2 Jsp 프로그램 작성
1.3 서블릿 프로그램 컴파일
1.4 서블릿과 Jsps 프로그램 패키징
1.5 배포 설명자 작성
1.1 서블릿 프로그램 작성
문제 서블릿을 웹 애플리케이션으로 작성하려고 합니다. 해결 방법 javax.servlet.http.HttpServlet을 상속하는 Java 클래스를 작성합니다. 먼저 클래스 패키지 servlet.jar을 부어야 합니다. 이 서블릿 프로그램을 컴파일하려면 내부에 클래스 라이브러리가 필요합니다.
토론 서블릿 프로그램은 클라이언트가 네트워크를 통해 요청한 동적 콘텐츠에 응답하는 데 사용되는 Java 클래스입니다. (CGI) 프로그램에 익숙하다면 Java 기술 서블릿이 CGI 프로그램을 완전히 대체할 수 있습니다. 종종 웹 구성요소라고도 불리는 런타임 환경에서 실행되는 서블릿 프로그램은 Tomcat 및 Bea WebLogic과 같은 서블릿 컨테이너에 의해 제공됩니다.
참고: 웹 컨테이너는 다음과 같을 수 있습니다.
서블릿은 웹 애플리케이션의 일부로 웹 컨테이너에 설치됩니다. 이 애플리케이션에는 WEB 리소스가 포함됩니다. HTML 페이지, 이미지, 멀티미디어 클립, 서블릿, jsp, xml 구성 파일, Java 런타임 클래스 및 클래스 라이브러리와 마찬가지로 웹 애플리케이션이 웹 컨테이너에 배포되면 컨테이너는 Java 서블릿 클래스의 인스턴스를 생성하여 JVM에 로드합니다. . 서블릿에 대한 요청을 처리합니다.
모든 서블릿은 javax.servlet.Servlet 인터페이스를 상속합니다. 웹 애플리케이션을 개발하는 프로그래머는 특별한 서블릿을 작성합니다.
javax.servlet.http.HttpServlet에서 상속된 추상 클래스는 서블릿 인터페이스를 구현하고 HTTP 요청 처리를 위해 특별히 설계되었습니다.
웹 컨테이너가 서블릿 인스턴스를 생성할 때 기본 순서는 다음과 같습니다.
1. 서블릿 컨테이너는 먼저 서블릿이 사용할 리소스를 초기화하는 서블릿의 init() 메서드를 호출합니다. 로거로 등록되었습니다. 이 init() 메소드는 전체 서블릿 라이프사이클 동안 한 번만 호출됩니다.
2. init() 메소드는 java.servlet.ServletConfig 인터페이스를 상속하는 객체를 초기화합니다. 이 객체를 사용하면 서블릿이 배포 설명자에 선언된 매개변수를 초기화할 수 있습니다. ServletConfig는 또한 서블릿이 정보를 기록하고 다른 웹 구성 요소에 요청을 디스패치하며 동일한 애플리케이션에서 다른 웹 리소스를 사용하는 데 사용할 수 있는 javax.servlet.ServletContext 개체에 대한 액세스를 서블릿에 제공합니다.
3. 서블릿 컨테이너는 서블릿의 일부 요청에 응답하기 위해 이 서블릿의 service() 메서드를 호출합니다. HttpServlet을 기반으로 service()는 서블릿의 doGet() 또는 doPost() 메서드를 호출하여 요청을 처리하는 적절한 HTTP 메서드를 자동으로 호출합니다. 여러 예에서 사용자는 Post 요청을 보내고 서블릿은 doPost() 메서드를 실행하여 요청에 응답합니다.
4. 두 가지 주요 HttpServlet의 doPost() 및 doGet() 메소드를 호출하면 서블릿 컨테이너는 javax..servlet.http.HttpServletRequest 및 HttpServletResponse 객체를 생성하고 이를 요청 처리 메소드에 매개변수로 전달합니다.
http://www.downcodes.com/
5. 서블릿의 라이프사이클을 관리하거나 요청 요청 시 이 서블릿 인스턴스의 처리 시간과 JVM(Java Virtual Machine)에서의 존재 시간을 결정합니다. 서블릿 컨테이너가 서블릿을 제거하기 시작하면 서블릿의 destroy() 메소드가 호출되어 데이터베이스 연결과 같은 모든 자원을 해제할 수 있습니다.
예 일반적인 HttpServlet
패키지 com.mydev;
import java.io.IOException; import java.io.PrintWriter;
import java.util.Enumeration; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//HttpServlet 인터페이스를 상속받아야 함
공개 클래스 FirstServlet은 HttpServlet을 확장합니다...{
public void doGet(HttpServletRequest 요청, HttpServletResponse 응답)은 ServletException, java.io.IOException을 발생시킵니다...{
//응답의 MIME 유형 "text/html"을 설정합니다.
response.setContentType("text/html");
//PrintWriter를 사용하여 요청한 클라이언트에게 텍스트 데이터를 보냅니다.
//서블릿
java.io.PrintWriter out = response.getWriter( );
//HTML 콘텐츠 조합 시작 out.println("<html><head>");
out.println("<title>도움말 페이지</title></head><body>");
out.println("<h2>정보를 제출해주세요</h2>");
//서블릿 서비스 메소드가 메소드="post"인지 확인하세요.
//이 양식 submit에 대한 응답으로 doPost를 호출합니다.
out.println( "<form method="post" action ="" + request.getContextPath( ) + "/firstservlet" >");
out.println("<table border="0"><tr><td valign="top">");
out.println("이름: </td> <td valign="top">");
out.println("<input type="text" name="firstname" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("성: </td> <td valign="top">");
out.println("<input type="text" name="성" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("귀하의 이메일: </td> <td valign="top">");
out.println("<input type="text" name="email" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("<input type="submit" value="정보 제출"></td></tr>");
out.println("</table></form>"); out.println("</body></html>");
}
//doGet
public void doPost(HttpServletRequest 요청, HttpServletResponse 응답)은 ServletException, java.io.IOException을 발생시킵니다...{
//매개변수 이름과 값을 표시합니다.
열거형 paramNames = request.getParameterNames( );
문자열 parName;
//이것은 매개변수의 이름을 담을 것입니다.
부울 비어있는Enum = false;
if (!paramNames.hasMoreElements( ))
빈Enum = true;
//응답의 MIME 유형 "text/html"을 설정합니다.
response.setContentType("text/html");
//PrintWriter를 사용하여 텍스트 데이터를 클라이언트에 보냅니다.
java.io.PrintWriter out = response.getWriter( );
//HTML 콘텐츠 조립 시작
out.println("<html><헤드>");
out.println("<title>제출된 매개변수</title></head><body>");
if (emptyEnum) ...{
out.println( "<h2>죄송합니다. 요청에 매개변수가 포함되어 있지 않습니다</h2>");
} 또 다른 ...{
out.println( "<h2>제출된 매개변수 값은 다음과 같습니다</h2>");
}
while(paramNames.hasMoreElements( )) ...{
parName = (String) paramNames.nextElement( );
out.println( "<strong>" + parName + "</strong> : " + request.getParameter(parName));
out.println("<br />");
}//하는 동안
out.println("</body></html>");
}
//doPost
}
doGet()과 doPost()가 각각 ServletException과 IOException을 발생시키는 것을 볼 수 있습니다. 이는 response.getWriter()가 IO 예외를 발생시키기 때문입니다.
http://blog.csdn.net/bruceleey/archive/2007/02/07/1503843.aspx