웹개발
자바 서블릿
nyeongha
2023. 12. 26. 21:51
서블릿은 일반 자바 클래스와 보기에 큰 차이는 없다고 생각할수도있지만,
http요청과 응답을 처리하기 위한 api가 필요하기 때문에 HttpServelet클래스를 상속받는다.
그래서 모든 서블릿 객체에는 HttpServelet클래스가 포함되어있다.
서블릿은 생명주기 메서드를 가진다.
init(),service(),destroy() 모두 servelet인터페이스에 포함되어있다.
각각을 소개하자면,
- -init()은 객체를 생성할때 초기화를 위해 한번만 호출한다.
- service()는 클라이언트 측에서 서블릿을 요청할때 서블릿 객체가 메모리에 있는지 확인을 하고 있다면 service()를 호출한다.이때 request객체와 response객체를 전달 받는데 전송방식에 따라 doGet(),doPost()를 호출한다.요청할때마다 반복호출이 가능하다.
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { }
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
HttpServlet에 대해 더 알고싶다면 아래 url에 들어가서 확인하면 좋을것같다.
https://jakarta.ee/specifications/platform/9/apidocs/
Overview (Jakarta EE Platform API)
jakarta.ee
- destroy()는 컨테이너가 서블릿을 삭제할떄 객체가 소멸되기 직전에 호출된다.주로 사용했던 자원을 반환하는 코드로 구현한다.
request는 요청 파라미터를 추출하는 메서드를 여러개 가지고있다.
- String getParameter(String name):이름을 검색하여 반환
String id = request.getParameter("id");
- Map<String,Stringn[]> getParameterMap():파라미터 모두를 검색하여 맵으로 반환
Map<String, String[]> map = request.getParameterMap();
Iterator<String> it = map.keySet().iterator();
while (it.hasNext()) {
String name = it.next();
String[] values = map.get(name);
if (values.length == 1) {
String value = values[0];
out.print(name + ":" + value + "<br>");
} else {
for(int i=0;i<values.length;i++){
out.print(name + ":" + values[i] + "<br>");
}
}
}
- Enumeration getParameterNames():request객체에 저장된 모든 파라미터의 이름을 검색하여 Enumeration으로 반환
Enumeration e = request.getParameterNames();
while (e.hasMoreElements()) {
String name = (String) e.nextElement();
String value = request.getParameter(name);
out.print(name + ":" + value + "<br>");
}
- String[] getParameterValue(String name):여러개의 value를 가진경우(체크박스)의 파라미터값을 읽어 String[]으로 반환
String[] usernames=request.getParameterValues("username");
for (String name : usernames) {
System.out.println("name = " + name);
}