웹 개발 검색 결과

25건

2021-12-15웹 개발/스프링 프레임워크

[스프링MVC] MultipartFile말고 Part로 파일 업로드 - 주의사항 있음

이전 글: [스프링MVC] 파일 업로드 이야기 - multipart/form-data 요청 다루기 MultipartFile 말고 Part 써보기 서블릿 3.0 부터 javax.servlet.http.Part 를 통해 파일 업로드를 처리할 수 있게 되었습니다. 하지만 스프링 5.1.8을 사용하는 중에 이 친구가 제대로 동작하는 걸 보지 못 했는데요. 연관 이슈 MockPart in request is not recieved in RequestPart in controller · Issue #26501 · spring-projects/spring-framework Affects version: 5.3.3 Related to: #26261 I have a controller method that accepts..


2021-12-14웹 개발/스프링 프레임워크

[스프링 Web] RestTemplate이 쏘는 패킷을 보고싶다 - Fiddler4로 JVM 패킷 디버깅하기

Fiddler4 프록시 Fiddler4 프록시 소개 단말에서 송수신하는 HTTP(S) 패킷을 조회하는 데스크톱 응용입니다. 흔히 보는 브라우저 개발자 툴, 네트워크 분석 도구과 흡사합니다. 차이점은 해당 데스크탑을 포워드 프록시 서버로 만들어 준다는 점입니다. FIddler4를 켜면 기본적으로 8888번 포트로 프록시 서버가 실행됩니다. 내 스마트폰의 네트워크 설정에서 본인 데스크탑을 프록시로 지정하면, 폰을 오고가는 HTTP(S) 패킷을 디버깅 할 수 있습니다. 이것이 제가 FIddler4를 쓰는 주 사용처입니다. 한 편, 오고 가는 패킷을 인터셉트하여 커스터마이징 하는 기능도 제공하고 있습니다. 엄청 재밌는 기능이에요. 웹 페이지의 i18n을 테스트할 때 리퀘스트의 로케일을 ko-KR에서 ja-JP..


2021-12-14웹 개발/스프링 프레임워크

[스프링 Web] 웹 API 호출 이야기 - RestTemplate을 사용하는 서비스 구조와 구현

RestTemplate을 사용하는 서비스 레이어 구조 및 구현 요약 서비스가 비즈니스 객체를 다른 곳에서 획득해 오는 경우가 있다. 그 출처는 DB가 될 수도 있고, 다른 웹 서비스가 되기도 한다. DB와 퍼시스턴스 레이어를 거쳐 객체를 뽑아오든, 웹 API를 호출하여 객체를 얻어오든 두 방식을 구현하는 코드 패턴은 스프링에서 거의 유사하다. 3티어 아키텍쳐로 책임을 나누게 되며. 티어 간 객체 변환이 공통적으로 요구되는 사항이다. 3티어 아키텍처 비교 DB에서 객체를 얻을 때 서비스는 레포지토리 레이어를 통해 DB 데이터에 접근한다. 레포지토리 단은 JPA 구현체 Hibernate 기술 등을 채용하여 ORM(객체-관계형 매핑)을 제공한다. ResultSet에 담긴 관계형 데이터를 자바 엔터티 객체로 변..


2021-12-14웹 개발/스프링 프레임워크

[스프링MVC] 어노테이션 이야기 - REST와 @ResponseBody

REST와 @ResponseBody 어노테이션 스프링MVC에서 컨트롤러의 메서드는 "논리적인 뷰"를 반환하는 것으로 상정한다. 하지만 REST 서비스는 리소스를 반환해야하기 때문에 상성이 맞지 않다. 그럴 땐 컨트롤러 메서드에@ResponseBody 붙여준다. @ResponseBody를 붙인 메서드의 반환은, 뷰가 되는 것이 아니며 즉시 HTTP 응답 스트림으로 사용된다. 반환된 값은 디스패쳐 서블릿에 등록된 메시지 컨버터 빈을 거쳐 JSON 및 XML로 변환되고 HTTP 응답 스트림에 쓰인다. @Controller @ResquestMapping(value="/singer") public class SingerController { final Logger logger = LoggerFactory.getL..


2021-12-14웹 개발/스프링 프레임워크

[스프링] 다양한 작업 실행 전략 이야기 - 스케줄링 및 비동기 실행

1. 작업 스케줄링 특정 시간에 정기적으로 수행해야 하는 비즈니스 작업 작업 스케줄링의 구성요소 작업 스케줄링에 등장하는 3가지 요소가 있습니다. 작업, 트리거, 그리고 스케줄러입니다. 작업: 메서드 스케줄에 맞추어 실행되는 비즈니스 로직입니다. 스프링에서 작업은 메서드로 정의됩니다. 트리거: Trigger 인터페이스 작업은 일정한 시간 간격을 갖고 실행되어야 합니다. 작업의 실행 간격을 관장하는 정책이 트리거입니다. 아래 두 가지는 대표적인 트리거 유형입니다. 1)고정 간격을 지키며 실행 2)cron 표현식에 맞추어 실행 스프링은 Trigger 인터페이스 및 구현체 PeriodicTigger, CronTrigger 클래스를 제공합니다! 스케줄러: TaskScheduler 인터페이스 스케줄러는 작업을 트..


2021-12-14웹 개발/스프링 프레임워크

[스프링 Security] CSRF 토큰 이야기 - csrf() 켰더니 로그아웃이 안 되네?

이슈? csrf.disable() 하지 않을 시 logout 동작하지 않음 [재현 과정] 시큐리티 설정> http.csrf.disable() 하지 않음> 즉 csrf 지원 활성화 함. @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/*").permitAll() .and() .authorizeRequests().antMatchers("/singers/**").authen..


2021-12-14웹 개발/스프링 프레임워크

[스프링 Security] CSRF 토큰 이야기 - 그래서 개발자는 뭘 하면 되죠

CSRF 토큰을 통한 보호 이 글은 Synchronizer Token Pattern에 기반한 CSRF 활용의 빠른 지침이다. Q1. 클라이언트는 어떻게 CSRF 토큰을 얻나요 방법1. 서버가 HTML 렌더링 시 meta 태그에 토큰 집어 넣어 주기 방법2. 서버가 HTML 렌더링 시 form 태그에 hidden _csrf 필드 집어 넣어 주기 방법3. 서버의 API 호출하기 RESTful 서버는 뷰 렌더링을 하지 않으므로, CSRF 토큰을 획득할 수 있는 별도 API를 클라이언트에게 제공합니다. 사례: SAP Netweaver API 문서 요청: GET /mcm/json 헤더: X-CSRF-Token: fetch 앱은 CSRF 토큰을 획득하기 위해 헤더에 X-CSRF-Token: fetch를 포함하여야 ..