BackEnd/spring 19

Spring Webocket을 이용한 실시간 채팅 구현(+ JWT 인증)

GitHub - yangwoohyeon/OAuth2_9oormthonUNIVContribute to yangwoohyeon/OAuth2_9oormthonUNIV development by creating an account on GitHub.github.com WebSocket이란?서버와 클라이언트 간에 Socket Connection을 유지해서 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술로써, sns, 화상 채팅, 증권 거래 등에서 널리 사용되고 있다. 왜 WebSocket을 사용하는가? HTTP를 사용하여 실시간 양방향 통신을 구현하기 위해서는 다음과 같은 방법을 사용할 수 있다. 백엔드에서 변경 사항이 생길 때마다 프론트엔드에게 응답을 보내주는 방식 : Server-Sent-Eve..

BackEnd/spring 2025.05.14

@Controller와 @RestController의 차이점

스프링 MVC에서 빠질 수 없는 애노테이션이 바로 @Controller이다. @Controller는 주로 HTML과 같은 뷰를 렌더링 할때 사용된다. @Controllerpublic class MyController { @RequestMapping("/greeting") public String greeting(Model model) { model.addAttribute("message", "Hello, World!"); return "greeting"; // greeting.jsp 또는 greeting.html과 같이 뷰를 찾아 렌더링 } }  하지만 뷰를 렌더링하는것 이 아닌 Data(또는 객체)를 반환해야 하는 경우도 존재한다. 이럴때는 @Respons..

BackEnd/spring 2025.02.23

SpringBean

스프링 빈이란 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트이다.즉, 스프링 컨테이너가 관리하는 자바 객체를 뜻하며, 하나 이상의 빈(Bean)을 관리한다.  스프링 빈(Bean)의 필요성 스프링빈을 사용하는 이유는 크게 객체 관리의 효율성, 의존성 주입(DI), 객체의 생명주기 관리, 애플리케이션의 유지보수성 향상 때문이다. 1. 객체 생성을 자동으로 관리해준다. 스프링을 사용하지 않은 경우public class Main { public static void main(String[] args) { MyService myService = new MyService(); System.out.println(myService.getMessage()); }}..

BackEnd/spring 2025.02.11

회원가입 로그인 구현

우선 맴버를 정의 해준다( 로그인 아이디, 패스워드를 가짐)package hello.login.domain.member;import lombok.Data;import javax.validation.constraints.NotEmpty;@Datapublic class Member { private Long id; @NotEmpty private String loginId; //로그인 아이디 @NotEmpty private String name; @NotEmpty private String password;}@NotEmpty를 넣어 줌으로써 아이디 비밀번호의 공백을 방지해준다.  @Controller@RequiredArg..

BackEnd/spring 2024.08.19

BeanValidation-Form 전송 객체 분리

검증시 등록할때의 객체와 수정할때의 객체가 다르면 groups를 이용하여 데이터를 검증하기가 어려워진다. 간단한 프로젝트를 통해 이해할 수 있었다. 프로젝트 요구사항Item 등록시 1) 상품이름 = NULL(X)2) 가격 = 1000이상, 1000000이하, NULL(X)3) 상품 수량 = 최대 9999 Item 수정시1) 상품id = NULL(X)2) 상품이름 = NULL(X)3) 가격 = 1000이상, 1000000이하, NULL(X)4) 상품수량 = 수정할때는 수량의 제한이 없음  이러한 제한사항을 구현하기 위해 Form 전송 객체를 분리 하였다.  - 상품 등록 시 사용package hello.itemservice.web.validation.form;import lombok.Data;import ..

BackEnd/spring 2024.08.05

검증 - 개선

지금까지 개발한것은 필드오류가 발생하면 입력값이 남아있지 않고 지워진다.하지만 FieldError부분을 약간만 손봐주면 오류 발생시 입력값을 남아있도록 해줄 수 있다. @PostMapping("/add") public String addItemV2(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //검증 로직 if(!StringUtils.hasText(item.getItemName())){// errors.put("itemName","상품 이름은 필수입니다."); bindingResult...

BackEnd/spring 2024.07.26

검증 - BindingResult

BindingResult이란 ==> 스프링이 제공하는 검증 오류를 보관하는 객체이다. 앞선 실습에서는 검증 오류를 HashMap에 보관했지만 이번에는 BindingResult를 이용해 보았다.  @PostMapping("/add") public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) {// //검증 오류 결과를 보관// Map errors = new HashMap(); //검증 로직 if(!StringUtils.hasText(item.getItemName())){// ..

BackEnd/spring 2024.07.26

검증(직접 처리)

웹어플리케이션의 검증 기능을 직접 처리 해보는 시간을 가져봤다. 검증 요구사항1) 가격, 수량에 문자가 들어가면 검증 오류 처리 2) 상품명: 필수, 공백X    가격: 1000원 이상, 1백만원 이하    수량: 최대 9999 3) 가격 * 수량의 합은 10,000원 이상  이러한 요구 사항을 만족 시키지 못한다면 어떤 오류가 발생했는지 고객에게 알려주고 다시 '상품 등록 폼'을 띄워서 다시 값을 입력 하도록 한다. @PostMapping("/add")public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과를 보관 Map errors = new H..

BackEnd/spring 2024.07.25