servlet(서블릿) : 자바 플랫폼에서 동적인 웹을 개발할 때 사용하는 기반 기술로 웹에서 JAVA 프로그래밍을 할 수 있다. 사용자에게 요청(request)을 받아 요청한대로 처리해주는 doGet() 또는 doPost() 일을 처리한 후 처리 결과를 사용자에게 응답(response) 해준다.
1. 클래스는 HttpServlet을 상속받는다.
서블릿의 기본이 되는 것은 javax.servlet.http 패키지에 준비되어 있는 HttpServlet 클래스이다. 서블릿은 이 클래스를 상속하여 만든다.
2. 기본은 'doGet'과 'doPost' 메소드
클래스에 거의 필수 항목으로 제공되는 것은 'doGet'과 'doPost'메소드이다. 이들은 각각 HTTP 메소드인 GET/POST에 액세스할 때 실행된다. 이 중에 하나(또는 양쪽)가 반드시 준비될 것이다. 어느 메소드도 IOException이 발생할 수 있으므로 throws IOException해 둔다.
3. HttpServletRequest에서 요청 정보를 관리
이러한 메소드는 두 가지 중요한 객체가 인수로 전달된다. 하나는 'HttpServletRequest'이다. 이것은 요청 정보(클라이언트가 서블릿에 액세스하여 왔을 때 정보)를 관리하는 객체이다. 요청에 대한 다양한 정보는 이 객체의 메소드를 호출하여 얻을 수 있다.
4. HttpServletResponse에서 응답을 관리
또 다른 객체가 "HttpServletResponse"이다. 이것은 응답 정보(서블릿에서 클라이언트에 반환하는 정보)를 관리하는 객체이다. 클라이언트에 출력 등도 이 HttpServletResponse에서 PrintWriter를 꺼내어 써서 내보낸다.
servletTest.java
package com.gu.common;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// HttpServlet을 상속받는 ServletTest이다.
public class ServletTest extends HttpServlet {
@Override // Get 방식으로
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// super.doGet(request, response);
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY); //시
int minute = calendar.get(Calendar.MINUTE); //분
int second = calendar.get(Calendar.SECOND); //초
String time = hour + "시" + minute + "분" + second + "초";
PrintWriter out = response.getWriter();
out.write("<!DOCTYPE html>");
out.write("<html>");
out.write("<head>");
out.write("<title>");
out.write("제목");
out.write("</title>");
out.write("</head>");
out.write("<body>");
out.write("<h1>" + time + "</h1>");
out.write("</body>");
out.write("</html>");
}
}
web.xml
<servlet>
<servlet-name>ServletTest</servlet-name> //서블릿 이름
<servlet-class>com.gu.common.ServletTest</servlet-class> //서블릿 클래스 위치
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name> //서블릿 이름
<url-pattern>/test</url-pattern> // 공개하는 주소
</servlet-mapping>
이때 ServletTest.java에 서블릿의 기능이 없고 단지 HttpServlet을 상속 받는 클래스이기 때문에
서블릿의 기능을 사용하기 위해서는 web.xml에 서블릿 설정을 하여 서블릿 기능을 수행하게 한다.
ServletTest2.java
package com.gu.common;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
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("/test2") //자체적으로 서블릿 주소 설정
public class ServletTest2 extends HttpServlet {
private static final long serialVersionUID = 1L;
public ServletTest2() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// super.doGet(request, response);
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY); //시
int minute = calendar.get(Calendar.MINUTE); //분
int second = calendar.get(Calendar.SECOND); //초
String time = hour + "시" + minute + "분" + second + "초";
PrintWriter out = response.getWriter();
out.write("<!DOCTYPE html>");
out.write("<html>");
out.write("<head>");
out.write("<title>");
out.write("제목");
out.write("</title>");
out.write("</head>");
out.write("<body>");
out.write("<h1>" + time + "</h1>");
out.write("</body>");
out.write("</html>");
}
}
'JSP' 카테고리의 다른 글
MVC 패턴(Model 2) (0) | 2023.09.12 |
---|---|
servlet(서블릿) 정리 예제 2 (1) | 2023.09.12 |
EL 정리 예제 2 (0) | 2023.09.12 |
EL 정리 예제 1 (0) | 2023.09.11 |
JSTL 정리 예제 (0) | 2023.09.11 |
댓글