JSP로 작성하기전에 자바만으로도 서버에 직접 올려 웹페이지화면으로 볼수 있다. JSP보다는 번거롭지만 그래도 의외로?! 간단하다. 우선 개념부터 살펴본다.
<Servlet클래스 계층도>
ServletConfig 인터페이스
Servlet인터페이스 |-------------GenericServlet 클래스
|
HttpServlet클래스
|
|
상속받아 작성
서블릿의 생명주기(자동호출)
init()
- 서블릿이 생성될때 딱 한번만 호출된다.
- 서블릿 컨테이너가 서블릿 객체를 생성한 후 호출합니다.
- 서블릿이 작업하는데 필요한 자원을 준비시키는 코드를 여기서 작성한다.(초기화 작업)
service()
- 해당 서블릿에 대한 요청이 들어오면 그때마다 호출된다.
- 클라이언트가 요청한 작업을 처리하는 코드를 여기서 작성
doGet/doPost()
- 서블릿이 Get방식으로 호출되면 service()를 통해 호출됩니다. -doGet()
- 서블릿이 Post방식으로 호출되면 service()를 통해 호출된다. - doPost()
destory()
-서블릿이 기능을 수행하고 메모리에서 소멸될때 호출된다.
- 서블릿이 마무리작업을 주로 작성한다.
자바 servlet코드 이다.
import java.io.IOException;
import java.io.PrintWriter;
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("/second") //어노테이션
public class FirstServlet1 extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
public void init() throws ServletException {
System.out.println("init 메소드호출");
System.out.println("Servelet인터페이스에 정의되어 있다.");
System.out.println("서블릿요청시 지금 한번만 호출됩니다.");
System.out.println("초기화작업 실행전에 준비할 리소스등을 설정한다.");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("service()메서드 호출");
System.out.println("클라이언트의 서비스 요청이 있을떄마다 호출된다.");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet()메서드 호출");
System.out.println("클라이언트의 요청이올떄 service()를 통해 호출된다.");
System.out.println("실제로 클라이언트가 요청한 작업을 정의한다.");
//1~100합계 요청
int total=0;
for(int cnt=1; cnt<=100; cnt++) {
total += cnt;
}
//출력(클라이언트에게 보내기)
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<head><title>First1 Servlet</title></head>");
writer.println("<body bgcolor='orange'>");
writer.printf("<h3>1+2+3+4+,,,+100 = %d</h3>",total);
writer.println("</body>");
writer.println("</html>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost()메서드 호출");
System.out.println("클라이언트의 요청이올떄 service()를 통해 호출된다.");
System.out.println("실제로 클라이언트가 요청한 작업을 정의한다.");
}
@Override
public void destroy() {
System.out.println("destory()메서드 호출");
System.out.println("서블릿이 메모리에서 쇼멸될떄 호출");
System.out.println("서블릿의 마무리작업 수행");
}
}
1. Httpservlet 클래스를 상속받는다.
2. 상속받은 메소드를 재정의 한다.
3. doGet, doPost 메소드에 실제로 처리되는 요청한 작업을 정의하면된다.
4. 서브릿 매핑 방법은 두가지가 있다. 하나는 @webservlet 어노테이션으로 간단하게 매핑하는 방법이 있고,
다른 방법은 web.xml(배치 지시자)로 매핑하는 방식이있다. 아래코드를 보시라.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Ch02</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>aaa</servlet-name>
<servlet-class>myservlet.FirstServlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>aaa</servlet-name>
<url-pattern>/second</url-pattern>
</servlet-mapping>
</web-app>
5. web.xml매핑 방법은 display-name 태그에 프로젝트 폴더명을 작성하고 servlet-class태그에는
패키지명.자바파일명을 작성한후 url-pattern태그에 경로주소를 설정하면 된다.
이렇게 자바로 직접 서브릿매핑하는 방법이 있지만 더 간편하게 웹페이지화면을 볼수있는 방법이 있으니 그것이 JSP(JavaServePages)이다. JSP는 다음포스팅에 알아보도록하자..
'JAVA > JSP' 카테고리의 다른 글
Redirect와 Forward (0) | 2023.05.13 |
---|---|
JSP Enumeration 이용해서 입력받은 정보 한번에 출력하기 (2) | 2023.05.11 |
request, response 객체정리 (1) | 2023.05.11 |
HTML에서 입력받아 JSP에서 처리후 웹페이지로 출력하기 (0) | 2023.05.10 |
JSP(Java Server Pages) 기본 개념 (0) | 2023.05.10 |
댓글