Springboot

게시판만들기

열곰탱 2022. 9. 6. 17:56

session에 users오브젝트(usersPS)를 저장하였다.

users로그인 할때 session의 키값 이름으로 principal로 했다.

 

 

만약  principal값이 비어 있다면 로그인이 안된걸로 보고

principal에 값이 있다면 로그인 된걸로 보겠다는 것이다.

header.jsp

 

세션의 값이 있는지 확인할려면

세션은 DI(dependency injection) 해야한다.

DI 생성자 주입

 

 

 

DI 는 IOC에 있는 것을 주입하는 것이다.

생성자를 주입하는 것이다.

HttpSession은 IOC 컨테이너에 저장이 되어있다.(spring이 해준다.)

final로 적는 이유는 lombok으로 생성자주입받기 편할려고 사용한다.

 

 

session의 값을 가지고 올때 다운캐스팅해서 가지고왔다.

그이유는 들어갈때 오브젝트로 들어갔기때문에

나올때 무슨타입으로 나올지 모르기때문에 오브젝트 타입으로 가지고온다.

 

로그인할때 redirect를 한이유는

loginForm으로 가는 메서드가 있기 때문이다.

 

세션에서 인증이 된 사용자라면 글쓰기 writeForm으로 이동, 아니라면 다시 로그인 폼으로 이동한다.

 

redirect:/loginForm은 다시 재요청하는 기술이다.(다시 통신이 일어난다는 것이다.)

boards/writeForm 은 파일을 찾아서 응답을 해주는 기술이다.(바로 view를 찾아서 응답한다.)

 

redirect는 쉽게 말해 새로고침과 같다. 입력했던 데이터 들을 모두 초기화 해 새로운 페이지를 다시 요청하는 것이다. 

boardsController

 

 

글쓰기 완료버튼을 누르면

title=11&content=22 형태로 데이터가 만들어져서 전송된다.

이런 형태를 x-www-form-urlencoded 라고한다.

 

아래의 형태를 json타입이다.

{

   "title" : 11,

   "content" " 22

}

form태그는  x-www-form-urlencoded 타입만 데이터를 보낼수 있다.

json을 보내고싶으면  java script를 사용해야한다

 

 

action = "주소"

 

 

Controller에서 데이터를 받아 넘길 부분 작성

새로운 Boards를 만들어 담아서 insert를 시켜준다.

(Boards를 전달하기 때문에 BoardDao의 Insert메서드는 Boards를 받아야한다.)

 

 

 

 

 

 

 

게시글 작성

데이터를 받았지만 view로 뿌려주는 코드는 아직 작성하지 않았기때문에

디비에서 확인을 해보면 잘들어갔는지 확인할수 있다.

 

 

 

게시글 목록 보기

1. 쿼리문 작성

 

번호, 게시글제목, 작성자 이름을 보여주는 쿼리문 작성

 

쿼리문 작성시 boards테이블의 id(번호), title(제목)을 보여주고

users테이블의 username(작성자 이름)을 보여준다.

boards.xml

쿼리문 작성 후 mapper에 맞는 view 데이터를 만들어준다.

 

 

 

 

2. 맵퍼에 맞게 뷰를 작성

 

- Dto는 클라이언트와의 통신이다.

- mapper는 spring(dao)과 db의 통신이다.

아래의 빨간박스는 뷰를 위한 데이터이다.

 

 

클라이언트와 Controller는 DTO로 통신을한다.

Dao와 DB가 통신을 할때는 1.엔티티로 통신을한다.

엔티티를 못받는 경우에는 VIEW로 받는다.

VIEW는 클라이언트에게 html 파일로 준다.

 

휴대폰인경우)

html로 응답해주지 않고 데이터로 응답해준다. 

 

3. Controller 작성

 

BoardsDao의 findAll 메서드로 모든 게시글들을 찾아 boardsList에 담아준다.

model을 사용하여 정보들을 가지고 boards.main으로 이동한다.

boardsController

 

return 타입을 List<MainView>로 바꾸어준다.

BoardsDao

 

4. jsp 작성

변수는 var를 사용하여 boards라고 지정해준다.

model에  들어간 데이터들은 request에 들어간다.

items는 request에 있는 데이터들을 꺼낼때 사용한다.

boardsList는 키값이다.

 

boardslist에 있는 데이터들을 꺼내서 boards 변수에  저장하여 /boards/${boards.id}로 뿌린다.

main.jsp

 

결과

주소가 자신의 primary key를 가지고왔다.