본문 바로가기

TIL

[2022-1-19] Sevlet, HttpServletRequest 공부

Sevlet, HttpServletRequest 기능 알게된 것

  • Sevlet, HttpServletRequest

서블릿 객체자체는 싱글톤으로 서블릿 컨테이너에 등록되고, 객체마다 매핑된 url로 요청이 들어오면, 서블릿 컨테이너는 요청 하나하나마다 개발자에 의해 구현된 아래의 메소드를 실행시킨다.

protected void service(HttpServletRequest request, HttpServletResponse response){
	//비지니스 로직 구현
}

HttpServletRequest 객체에는 서블릿에 의해 파싱된 HTTP 요청 메세지 데이터가 들어있다. 이 객체를 통해 개발자는 요청 메세지를 이용하여 비지니스 로직을 구현한다.

 

이외에도 HTTP 요청의 생성과 종료시까지 유지되는 임시 저장소의 기능도 한다.(setAttribute,getAttribute)

 

또한 세션 관리 기능 또한 제공한다.

 

 

  • 톰캣은 서블릿 컨테이너이다.
아파치 톰캣(Apache Tomcat)은 오래된 오픈소스 자바 서블릿 컨테이너이고, 자바 서블릿(Java Servlet), 자바서버 페이지(JavaServer Pages, JSP), 웹소켓 API 등 핵심적인 자바 엔터프라이즈 규격을 구현한다. 

참고 - https://www.oss.kr/info_techtip/show/22c3ca04-a799-4bfa-bff3-6c23dba6d52a

 

최초의 자바 서블릿 컨테이너 '아파치 톰캣'을 아십니까? - 공개SW 포털

12월 25일 ⓒ CIO Matthew Tyson | InfoWorld 아파치 톰캣(Apache Tomcat)은 오래된 오픈소스 자바 서블릿 컨테이너이고, 자바 서블릿(Java S...

www.oss.kr

톰캣 = 그냥 서버 엔진 정도의 생각만 갖고 있었는데, 자바 서블릿 컨테이너로 개발되었다는 것을 알게 되었다.

 

 

프로그래머스 코딩테스트 연습문제 - 문자열 내마음대로 정렬하기

https://programmers.co.kr/learn/courses/30/lessons/12915

 

코딩테스트 연습 - 문자열 내 마음대로 정렬하기

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱

programmers.co.kr

이 문제도 Stream을 쓸수 있을 것 같아서 풀었는데, sort하는 비교과정이 너무 복잡해서 괜히 썼나 싶은 생각이 들었다.

import java.util.*;

class Solution {
    public String[] solution(String[] strings, int n) {
        return Arrays.stream(strings)
                .sorted((s1,s2)->{
                            if(s1.charAt(n) > s2.charAt(n))return 1;
                            else if(s1.charAt(n) < s2.charAt(n)) return -1;
                            else{
                                if(s1.compareTo(s2) > 0) return 1;
                                else if(s1.compareTo(s2) < 0) return -1;
                                else return 0;
                            }
                        })
                .toArray(String[]::new);
    }
}

어떻게하면 효율적으로 줄일 수 있을까 생각 하던 중 아래와 같이 짤게 줄인 코드를 보게 되었다.

import java.util.Arrays;
import java.util.Comparator;

class Solution {
    public String[] solution(String[] strings, int n) {
        Arrays.sort(strings);
        Arrays.sort(strings,Comparator.comparing(s-> s.charAt(n)));
        return strings;
    }
}

두번 정렬을 해주기는 하지만 그래도 엄청나게 Arrays.sort() 와 람다를 통해 엄청나게 간단하게 정렬을 해줄 수 있는 것을 확인할 수 있다.

 

내일 서블릿이랑 HTTP 공부 끝내고 시간 남으면 Arrays.sort 정리와 Comparator, Comparable 정리를 같이 꼭 해봐야겠다.