본문 바로가기

기록

spring프로젝트_0914

회원/권한(회원의 아이디 pk를 권한 테이블의 fk로 참조) pk와 fk 관계간의 테이블 생성 및 조회

mysql 조인 (inner/ left/ right/ cross/ self)

[inner Join]
select 
	* 
from (tbl_1) a join (tbl_2) b
on a.id = b.id; // 조인하려고 하는 두테이블 안에서 공통되는 결합조건 컬럼

<procedure>

회원가입 
> 아이디 + 권한

enabled > 탈퇴회원 구분컬럼
권한 > 일반/ 펜션/ 어드민

업체승인신청
> 신청항목작성 후 post submit 
> 요청목록에서 펜션아이디로 데이터 목록 가져오기

업체회원승인
> 신청자 입력 데이터로 권한 가져오는 쿼리
> 권한이 ROLE_PENSION이면 승인항목에 완료로 뜸
> 권한이 ROLE_MEMBER이면 승인버튼 활성화
> 버튼 클릭 시 권한 변경되는 js
+ select 태그 필터 
+ pagination



-----------------------------------------------------------------------------------------------------------------------------------------------------------------

controller <-> view 데이터 송수신 

>> 컨트롤러 실행 결과를 modelAndView 로 한번에 리턴

	@RequestMapping("request")
	public ModelAndView requestAuth() {
		ModelAndView mav = new ModelAndView("member/request");
		
		mav.addObject("pid", service.mkPID());
		return mav;
	}

이미지 출처 https://jungdami-ing.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EB%8B%AC-%EA%B0%9D%EC%B2%B4

 

스프링 데이터 전달 객체

기본 서블릿에서는 사용자 요청을 받을 때 서블릿 컨테이너가 request, response 객체 두 개를 전달해주는 방식이다. 하지만 스프링에서는 컨트롤러에 정해진 형식이 없고, 어노테이션과 파라미터를

jungdami-ing.tistory.com

참고사이트  https://velog.io/@alicesykim95/Spring-%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%9D%90%EB%A6%84-Controller-View

 

Spring 데이터흐름: Controller ↔ View

📌 1. Conteroller to View 📎 개요 > MVC패턴에서 Controller와 View가 서로 데이터를 전송하는 방법이 여러가지가 있다. 이 포스팅에서 먼저 Controller에서 View로 데이터를 보내는 방법을 알아보고, 다음으

velog.io

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

DAO (Data Access Object) :: DB의 data에 접근하기 위한 객체 / DB연동 로직 + 비즈니스 로직을 분리하기 위함

DTO (Data Transfer Object) :: 계층간 데이터 교환을 하기 위한 객체 / 별도 로직 없는 순수 데이터 객체(getter/setter만 O)

>> 클라이언트 단의 사용자 입력값을 DTO 에 담고 DAO를 이용하여 데이터베이스에 반영시킴 

VO (Value Object) ::값을 위해 쓰이는 객체로  DTO와 유사하지만 getter 만 있고 setter는 없음 (read-Only)

** 커맨드 객체 스터디 참고

https://velog.io/@dnflrhkddyd/Spring-%EC%BB%A4%EB%A7%A8%EB%93%9C-%EA%B0%9D%EC%B2%B4

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

@RequestParam으로 타입별 필드 바인딩 시 오류 >> Required PensionVO parameter 'vo' is not present

>> radio 타입의 input 태그에서 체크 항목에 대한 value 값을 별도로 지정하지 않아 'on'이라는 문자열 데이터가 들어감

>> 데이터 타입이 맞지 않아서 객체 생성이 되지 않아 오류 발생

>> value 값을 숫자로 지정하여 int로 받을 수 있게 되니 정상 바인딩 됨

** 사용자 입력값에 대한 UTF-8 방식의 필터 적용 필요 (시큐리티 안쓰고 있어서 별도로 필터 만들 예정)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

@RequestParam으로 아래와 같이 object로 받으면 PensionVO 커맨드 객체가 생성되지 않음

> pensionVO에 @getter @setter 만 추가해주고 별도 생성자가 없었어서 @AllArgsConstructor 와 @NoArgsConstructor 를 따로 따로 추가해보며 테스트 해보았는데 동일하게 객체 생성 안됨

@RequestMapping(value = "/request", method = RequestMethod.POST)
	public ModelAndView requestAuth(@RequestParam PensionVO vo) throws Exception {
		ModelAndView mav = new ModelAndView("/member/permission");
		mav.addObject(vo);
		System.out.println(vo);
		System.out.println(vo.getCategory());
		System.out.println(vo.getName());
		System.out.println(vo.getInfo());
		System.out.println(mav);
		
		return mav;
}

> 확인중

컨트롤러 파라미터 타입 참고 https://stdbc.tistory.com/22

 

[Spring] Controller(Handler)

Controller(Handler) #Presentation Layer: 요청을 받고 응답하는 역할을 한다. #DispatcherServlet의 설정파일(#WebMvcContextConfiguration)에서 @ComponentScan을 통해 빈으로 등록되었다. Controller(Handler)..

stdbc.tistory.com

 

+ @RequestBody / @ResponseBody / RestAPI 기본 구조 스터디 참고

https://wildeveloperetrain.tistory.com/144

 

@RequestBody @ResponseBody 어노테이션 이해하고 사용하기

클라이언트와 서버의 통신(HTTP) @RequestBody, @ResponseBody Annotation을 이해하기에 앞서, 클라이언트와 서버 간 통신에 대해서 먼저 간단하게만 살펴보겠습니다. HTTP(HyperText Transfer Protocol) 통신이..

wildeveloperetrain.tistory.com

  

 

'기록' 카테고리의 다른 글

spring프로젝트_0916  (0) 2022.09.16
spring프로젝트_0915  (0) 2022.09.15
spring프로젝트_0912  (0) 2022.09.12
spring_프로젝트_0910  (0) 2022.09.10
spring_프로젝트_0909  (0) 2022.09.09