안녕하세요.
#yeoneeblog 여니입니다:)
* 자주 사용하는 것은 상단에 변수로 선언하여 사용하기
* 자주 사용하는 것은 클래스 만들어서 사용하기
* 코드를 줄이고 가독성을 높이자
* 인터페이스는 구현해놓은 메소드를 가져다 공유해서 쓸 수 있게 하되, Impl은 나만 볼 수 있게 제외
* Service에 주석 달아주는 것이 정석(그러면 자바코드에서 주석을 확인할 수 있음)
* 작업하다 보면 여러번 고치고 수정할 수 있는 것, 두려워말기~~
* 작업하다 고쳐지지 않는 부분 수정하기 why? 이제는 이 프로젝트를 내가 핸들링하고 있기 때문이다!
[코드]
// new Feed 작성
@PostMapping("/MyFeedModify")
public ResponseEntity<ApiRes> feedEnroll(FeedReq req) {
String code = "S";
req.setMember(super.getLoginUser());
FeedRes result = fService.insertFeedEnroll(req);
if(result.getResult() < 2) {
code = "E";
}
return super.setResponse(result.getFeed(), code);
}
[코드 분석]
ApiRes클래스를 생성하여 제네릭 사용
ApiRes클래스의 객체 생성하여 code 사용. 성공시 code = "S" 출력
FeedReq req클래스를 생성하여 Feed생성시 들어가는 요소들 객체 생성
자주 사용되는 loginUser은 상수 LOGIN_USER로 만들어 사용
LOGIN_USER 속성을 Session에 담고 Request에 담아서 값을 반환함
FeedReq req를 매개변수로 주고, req에 loginUser을 담아줌
insertFeedEnroll메소드에 req를 매개변수로 주어 fService에 넘겨준 뒤 결과 값을 result에 담아줌
결과가 반환되는 결과 경우의 수가 1(feed생성시)과 2(feedImg생성시)인데,
두 경우의 수가 만족시 조건문을 실행하려면 2보다 작을 경우 error가 나는 조건문을 만들어 에러시에는 code = "E"출력
우리는 Feed의 결과값을 볼거니까 FeedRes의 객체로 준 result에 Feed결과와 code를 넣어준 것을 반환함
[코드]
@PostMapping("/feedEdit")
public ResponseEntity<Feed> feedEdit(HttpSession session, Feed feed, String hashTag,
MultipartFile feedImg1,
MultipartFile feedImg2,
MultipartFile feedImg3,
MultipartFile feedImg4,
MultipartFile feedImg5,
int fno,
String deleteList
) {
Member loginUser = super.getLoginUser();
feed.setFeedHashtag(hashTag);
feed.setFeedWriter(loginUser.getUserNo());
feed.setFeedNo(fno);
String webPath = "resources/images";
String severFolderPath = application.getRealPath(webPath+"/");
List<MultipartFile> upfiles = new ArrayList();
upfiles.add(feedImg1);
upfiles.add(feedImg2);
upfiles.add(feedImg3);
upfiles.add(feedImg4);
upfiles.add(feedImg5);
int result = fService.updateFeed(feed, upfiles, severFolderPath, webPath, deleteList);
Feed f = new Feed();
f.setFeedHashtag(hashTag);
f.setFeedWriter(loginUser.getUserNo());
f.setFeedNo(fno);
f.setUpfiles(upfiles);
if(result > 0) {
session.setAttribute("alertMsg","게시물 수정 성공!");
return new ResponseEntity<>(f, HttpStatus.OK);
}else {
session.setAttribute("alertMsg","게시물 수정 실패!");
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
[코드분석]
* super는 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는 데 사용되는 참조 변수입니다. 멤버 변수와 지역변수의 이름이 같을 때 this를 붙여서 구별했듯이 상속받은 멤버와 자신의 멤버와 이름이 같을 때는 super를 붙여서 구별할 수 있습니다.
BaseController에서 상속받아 온 loginUser값을 사용함
feedHashtag를 hashTag로, feedWriter를 loginUser로, feedNo를 fno로 feed에 값들을 담아줌
String 타입의 webPath에 resources/images 경로로 변수를 선언해줌
String 타입의 severFolderPath에 webPath+"/"한 값을 RealPath로 가져오고 그 값을 application에 담아주며 이를 변수로 선언함
스프링에서 제공하는 MultipartFile 이라는 인터페이스를 제네릭으로 이용해서, HTTP multipart 요청을 처리할 것임
feedImg1~5를 upfiles리스트에 담아줌. feed, upfiles, severFolderPath, webPath, deleteList를 updateFeed에 담아주고 그 결과 값을 fService에게 주어 DB에서 불러온 값을 result로 지정해줌. Feed타입의 객체 f를 생성하여 거기에 feedHashtag를 hashTag로, feedWriter를 loginUser로, feedNo를 fno로, upfiles를 upfiles로 f에 결과값들을 담아줌
이 결과값이 발생하면 result는 1이 될 것이며, 이 조건을 이용하여 if조건문을 만들어 1일 경우 게시물 수정이 성공하고 해당 f값을 반환할 것임. 결과값이 발생하지 않았다면 result는 0이 되며 게시물 수정은 실패하고 error창을 반환할 것임.
'。*:・゚☆・゚schedule・゚*:・゚★・:*:・☆ *:・゚★ > 활용해본 코드 적용 예시 (◍•ᴗ•◍)❤' 카테고리의 다른 글
[Linux 증적] 231117 리눅스 아파치 & 톰캣 & DB 연동 클러스터링 증적 (0) | 2023.11.24 |
---|---|
[JAVA] 배열(Arrangement) (0) | 2023.10.17 |
[JAVA] 조건문, 반복문(Control_Statement) (0) | 2023.10.16 |
[JAVA] 연산자(Operater) (0) | 2023.10.15 |
[JAVA] 자료형 (DataType) (0) | 2023.10.13 |