본문 바로가기

TIL

[TIL 2022-1-29] 스프링 웹 MVC 공부 + 정규식

스프링 웹 MVC 공부

클래스 단계의 @RequestMapping을 통해 중복 url을 통합해서 처리할 수 있다. 

 

@RequestParam을 통해 요청 파라미터 사용

 

String int 등의 단순 타입이고 파라미터 이름이 쿼리 파라미터 이름과 같아면 @RequestParam도 생략가능 하지만 명확하게 요청 파라미터에서 데이터를 읽는 다는 것을 명시하기 위해 @RequestParam은 생략하지 않는 것도 좋다는 견해도 있다. 

 

@RequestParam(required=false) 로 설정해주면 요청 파라미터가 없어도 동작한다. 하지만 이 떄 컨트롤러 메소드의 파라미터에 null을 넣어주기 때문에 타입이 primitive 형(int,long,double 등) 인 경우에는 500 에러를 발생시킨다. 이러한 경우에는 컨트롤러 메소드의 파라미터 타입을 null 을 받을 수 있는 객체 타입 Integer, Long, Double 등으로 바꿔 줘야 한다. 

 

url을 'localhost:8080/param=' 과 같이 요청파라미터의 value 만 비워주면 빈 문자열 "" 이 들어간다.

 

@RequestParam 의 defaultValue 옵션을 통해 요청 파라미터가 없을 때 기본 값을 설정해 줄 수 있다. 이때는 위 예시 처럼 빈 문자열 "" 이 들어와도  defaultValue 값으로 적용된다.

 

@RequestParam Map<String,Object> paramMap 과 같이 맵으로 파라미터들을 한번에 받을 수 있다. 만약 파라미터의 키당 값이 여러개라면 MultiValueMap을 사용할 수 있다.

 

MultiValueMap

 하나의 Key에 여러개의 Value값이 올 수있는 Map 타입. Value는 List로 관리된다. 구현체로는 LinkedMultiValueMap 가있다.

 

@ModelAttribute는 객체에서 setter 메소드를 찾아서 요청 파라미터 이름과 같은 객체 멤버명을 찾아 값을 입력(바인딩) 한다.(생략 가능)

 

정규식

https://blog.hexabrain.net/205

 

정규 표현식(Regex) 강좌 9편. 전후방탐색(lookaround)

1. 전방 탐색(lookahead) 전방 탐색(lookahead)이란 작성한 패턴에 일치하는 영역이 존재하여도 그 값이 제외되어서 나오는 패턴입니다. 전방 탐색 기호는 ?= 이며, = 다음에 오는 문자가 일치하는 영역

blog.hexabrain.net

String의 split()메소드를 통해 문자열을 자를 때 정규식의 전후방 탐색을 사용하면 구분자를 포함아여 문자열을 자를 수 있다. 이를 통해 문제를 풀긴했지만 아직 사용법이 명확하게 머리에 들어오지 않아서 날을 잡고 문자열 처리 문제들을 몰아서 풀면서 정규식 연습을 좀 해봐야겠다.