스프링 3주차 정리

선장원·2021년 12월 12일
1

Spring

목록 보기
16/16

3주차 정리 (12/06~12/10)

많이 없긴하지만 심심하니 해야지

사용한 기능 위주로 써야지

Spring

파일 올리기

jsp

파일을 넣으려면 form태그 안에 enctype속성을 넣고 “multipart/form-data”값을 넣어준다

input type은 file으로 하고 name값은 DTO랑 같게 설정을 해야한다

DTO

b_file이랑 b_filename를 두가지를 하는 이유는
b_file은 파일을 받아서 그 이름을 가져와서 스프링 프로젝트 안에 저장하는 용이고

b_filename는 파일의 이름만 가져와서 db에 파일이름을 저장하고 b_file에서 저장한 파일의 이름만 사용해서 파일의 경로에서 불러오는 용도이다

컨트롤러

컨트롤러와 서비스에서 예외처리를 해줘야한다

서비스

jsp에서 받아온 b_file을 MultipartFile클래스 변수에 담아서

스프링 변수 b_filename에 MultpartFile클래스의 매서드인 getOriginalFilename를 사용해서 파일의 이름을 담는다

b_fiename변수에 currentTimeMillis()를 사용해서 파일이름이 중복되지 않게한다

스트링 변수svaPath에 우리가 저장할 경로와 방금 만든 파일이름을 이용해서 저장을 한다

if문을 사용해서 (MultipartFile)b_file이 비어있지 않다면
savePath의 경로에 new File을 이용해서 파일을 만들고 그 파일을 transferTo메서드를 사용해서 (MultipartFile)b_file을 만든 파일에 넣는다.

그리고 boardDTO에 b_filename을 저장해서 DB쪽으로 보낸다

그리고 jsp에서 사용할 때는 저장한 파일의 이름을 사용해서 경로에 저장한 파일을 불러온다

맵퍼

insert는 같은데 파일이름을 추가한다

설정


경로 지정 할 폴더 만들기

resources를 만들고 그 안에 css와 upload폴더를 만들고 그 안에 저장한다

코드는 11일차에서 보자
https://velog.io/@captain1/스프링-11일차

댓글

jsp

작성자와 댓글 내용을 받는다
작성자는 로그인 id를 사용해서 자동으로 가져오게 만들자

script
ajax

ajax를 이용해서 b_number와 c_writer, c_contents를 보내주고
url을 /comment/save로 해서 컨트롤러를 하나 더 만들어서 설정 해보자

컨트롤러

save 메서드와 findAll 메서드를 따로 해서 두번 실행을 해야한다.
순서가 바뀌면 안보인다

서비스

save와 findAll을 나눠서 쓴다

인터페이스를 써서 @Override가 있다

오랜만에 쓰니까 기억이 안났다 자주 써주자 ㅠ

맵퍼

findAll에서 b_number을 넘겨서 해당글의 댓글만 가져오자

jsp에서 ajax로 가져온 내용 출력하기


detail에서 바로 댓글보기

detail에 들어가서 바로 댓글을 보려면 boardController에 CommentService를 추가하고
detail메서드에서 댓글의 findAll메서드를 실행해서 불러오고 모델에 담아서 보내면 된다.

코드는 11일차에서 보자
https://velog.io/@captain1/스프링-11일차

댓글 삭제도 ajax로 만들었는데 생각을 잘못했다 id를 가져오는게 아니라 매개변수를 사용해서 값을 보내줘야 하는건데 id를 사용했더니 맨위에 댓글만 지워서 안되는거였다

다음에는 매개변수로 사용해서 지워봐야겠다

c태그

html, jsp에서 사용하는 여러 가지 기능을 해준다

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

c:if


c:if문 안의 test부분이 true면 if문 안의 내용을 보여준다

choose

1번은 관리자가 들어오면

2번은 작성자가 들어오면

3번은 제3자가 들어오면

choose는 범위를 지정하고
when은 조건을 지정하고
when의 조건이 맞지않다면 다음 when으로 가고
otherwise는 마지막에 when의 조건이 모두 맞지 않다면 나오는 기능

c:set


c태그를 사용할 때 값을 담아서 사용 할 수 있다
value에 있는 값을 var에 담아서 사용한다

위치가 중요 사용할 c태그 위에 있어야함

varStatus

c태그 forEach태그 안에 varStatus=”status”를 넣어주면 순서대로 나온다

status.index로 하면 인덱스 숫자가 나온다
status.count는 1부터 숫자를 나타낸다

jquery

<script src="https://code.jquery.com/jquery-3.6.0.js"></script>

each


result의 인덱스에 i를 넣어서 foreach문 처럼 사용하게 해준다

리스트 같은 곳에서 쓰는 기능

fn함수

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>


fn함수 중에 contains는 문자열 안에서 원하는 문자가 있으면 true를 보내고 아니면 false을 보낸다

indexOf()


이건 위 fn:contains와 비슷하게 ()안에 문자가 들어가면 인덱스 번호를 보내고 없다면 -1을 보낸다

currentTimeMillis()

초를 천단위로 나눠서 기록한 시간을 1970년대부터 추가해서 나온 숫자를 구해준다

MultipartFile

file을 담아주는 클래스? 타입?

File

파일을 새로 생성해주는 클래스
하지만 사용법은 잘 모르겠다

new file(경로) : 경로에 새로운 파일을 만든다?

.isEmpty()

비어있으면 true값

.transferTo()

앞의 변수를 ()으로 변환 시킨다

b_file.transferTo(new File(경로));
만약 위와 같다면 경로의 폴더에 파일을 만들고 그 파일을 b_file으로 변환 시킨다
이런 느낌인가

내일부터는 프로젝트 만들어야함

profile
코딩도전기

0개의 댓글