LANGUAGE/SPRING

SPRING#11-1 Controller 여러개 생성(Board)

옐옐루 2022. 7. 14. 17:00

ㅇ 프로젝트에서 사용할 기술이 많이 나오기 때문에 집중해서 공부하기 



Controller

#프로젝트 생성해주기 

 

#프로젝트 준비단계

1. pom.xml 에 lombok 처리  와 web.xml 에 한글처리 

 

#CSS 생성해놓기 (언제해도 상관 NO)

1. webapp 아래에 css 폴더 생성 후 그 안에 style.css 파일 만들고

2. webapp / WEB-INF / spring / appServlet / servlet-contexxt.xml 에서 resources 설정해주기

(<resuorces mapping="/css/**" location="/css/" />)

 

#DTO 만들기 (com.lec.ch07.dto 패키지)에 Member 만들기 

1. 매개변수 있는 생성자함수, 매개변수 없는 생성자 함수 , tostring, getter, setter 전부 어노테이션 만들 것 

 

dto

**만약 tostring 만들고 싶지 않으면 화면단에 tostring을 한번 더 오버라이드 해주면 됨(toString 먼저 만들어 준 후 data 어노테이션 쓰면 내가 만든 toString의 형식이 적용되고 @Data에는 기본 toString이 안들어가게됨)

tostring 분리

 

 

#컨트롤러 만들기 (메인)

MyController

1. main Controller 만들어 주기, 클래스로 생성 후에 어노테이션으로 컨트롤러 써줘야함

2. @RequestMapping("/") - 슬래쉬가 들어오면 다음과 같은 함수를 수행하여라 

3. public String home () 매개변수값을 전달해주고 싶으면 Model 데이터 형의 변수를 써줘야함

public String home(Model model) 

4. model.addAtribute 를 통해 내가 전달하고 싶은 내용 쓰기

5. return 뷰(jsp) 써주기 

#메인페이지 만들기 (뷰단 생성하기) 

* 메인에서 member~하면 member 컨트롤러로 , board~하면 board 컨트롤러로 가게 만들기 

1. MyController에서 model.addAttribute 로 생성해준 greeting 을  jsp ${greeting}으로 불러와주기  

2. board 관련된 요청사항 밑에 넣어주기(a태그사용) 

a태그 href 쓰기 전 요청사항

  -- jsp 에서는 이렇게 써주면 controller로 향함 (Controller 하나에 board, member 다 있었음) 

jsp에서는 이런식으로 썼었음

  -- 하지만 우리는 controller 를 board/member 나눠놨기 때문에 앞에 /board/써줘야함 

Spring에서의 연결방법 1

 

 

3. member 관련된 요청사항 밑에 넣어주기 (button사용)

 -- button onclick 시 넘어갈 수 있도록 해주되 board 랑 다른 방식으로 써주기 ( method 방식으로 넘겨주기)

Spring에서의 연결방법2

 

 


Board 작업하기

 

#컨트롤러만들기①(board-write) - 반드시 com.lec.ch07.controller 아래에 만들어줘야해

BoardController(Board)  [write , content, list, reply]/ MController(Member) /

ㅇ board/write 먼저 만들기 

1. @Controller class 위에 써주기

2. @RequestMapping("board/write") - 얘가 들어오면 다음과 같은 함수를 수행하여라

    하지만 다른 아이들 mapping 할때도 board/content, board/list, board/reply 써줘야함 즉 board가 공통경로      이기 때문에 얘를 클래스 위로 빼줌

    @RequestMapping("board") -- 공통요청 경로 (class 밖)

    @RequestMapping("write")   --  개별요청경로 (class 안)  [value="write" 써줘도 됨]

    = 조합된 요청경로 board/write가 됨 

메소드 쓰기 전까지 해놓아야 하는 과정

 

3. public String write() 매개변수값을 전달해주고 싶으면 Model 데이터 형의 변수를 써줘야함 없으면 안써도 됨 메소드 안에 return 하고 내가 갈 view 를 써주면 됨 (나중에 view 도 조합해줘야함)

model.addAtribute 는 내가 뷰단에 전달할 내용이있을때 (매개변수에 Model을 써주고 아래에 생성해주기 여기서는 전달해줄 내용이 없기때문에 안 쓰는 것 )

뷰단이 있어야 하는 곳 쓰기

 

 

#board 컨트롤러에서 요청받은 board/write 뷰단 생성하러 가기 

ㅇ views 아래에 board 폴더 생성 후 안에 write.jsp 만들어주기 

write.jsp

 

#컨트롤러만들기②(board-content) - 반드시 com.lec.ch07.controller 아래에 만들어줘야해

ㅇboard/content 만들기 

1. @RequestMapping("content") 만들기 value만 쓸거면 value 생략 가능하지만 method 받는 방식을 지정해주고 싶을땐 value 써줘야함 [board/content가 get방식으로 들어오면 다음과 같은 함수를 수행하여라 

2. 화면단에서 클릭해서 넘어갈 것이기 때문에 무조건 get 방식응로 method 받아줘야함 

get으로 받을때

 

2. 메소드 써주기 이번엔 Model형의 매개변수를 받을 것   model에 id랑 pw 넘겨줄것이기 때문에 

** model에 addAttribute 할수 있는 애들은 기본데이터형 뿐만 아니라 객체도 가능함

** 매개변수에 HttpServeletRequest request를 써줘서 request에 setAttibute 를 해도 되지만 우린 model을 이용할 것이기 때문에 매개변수에 Model형만 넣어주고, model addAttribute 해준다 

** 뷰단으로 return 해주기 

content Controller

 

#board 컨트롤러에서 요청받은 board/content 뷰단 생성하러 가기 

** 첫번째 박스는 내가 model.addAttribute 에 직접 넣은 아이 

** 두번째 박스는 member 객체 자체를 model.addAttribute 했기 때문에 그 안에 들어있는 id 와 pw 뽑아오는 아이

content.jsp

 

 

#컨트롤러만들기③(board-list) - 반드시 com.lec.ch07.controller 아래에 만들어줘야해

ㅇboard/list 만들기

1. @RequestMapping(value="list", method=RequestMethod.GET) 만들기 value만 쓸거면 value 생략 가능하지만 method 받는 방식을 지정해주고 싶을땐 value 써줘야함 [board/list]가 get방식으로 들어오면 다음과 같은 함수를 수행하여라

2. 화면단에서 클릭해서 넘어갈 것이기 때문에 무조건 get 방식응로 method 받아줘야함  이번엔 ModelAndView 로 만들기 (매개변수 없는 애로 만들거기 때문에 new 해서 만들어줘야해)

* model은 model.add밖에 못함 String 으로 받기 때문에 메소드에 String 써줘야함 

*modelAndView는 model 안에 view도 같이 들어가 있음 

* ModelAndView 객체 생성하고, Member객체 생성하기, ArrayList로 list 객체도 같이 생성해준 뒤에

list에 member 객체 넣고, ModelAndView의 변수인 mav에 그 list 추가하기 

* mav.addObject 에 list 셋팅 해주고, setViewName 은 그 뷰단 이름을 세팅해준것 

* mav를 return 하기 

* String 리턴을 제일 많이 사용함  

**** addObject는 mav에 넣고 싶은 아이를 넣어준거고, setViewName은 return할때 뷰를 찾아가야 하기 때문

      에 내가 넘어가야하는 view 이름을 써주는 것 

list Controller

 

#board 컨트롤러에서 요청받은 board/list 뷰단 생성하러 가기 

** list가 0일때와 아닐때의 뷰단이 달라야 하기때문에 <c:if>태그 써줘서 구분해주기

** list 가 0 이 아닐땐 리스트에 사람이 들어 있다는 뜻이므로 foreach문 돌려서 뽑아주기 

** ${conPath}뒤에 /만 붙여줘도 /요청경로가 있기 때문에 main페이지로 넘어가게됨(MyController에 만들어놨

   음)

llistt.jsp

 

 

 

#컨트롤러만들기④(board-reply) - 반드시 com.lec.ch07.controller 아래에 만들어줘야해

1. @RequestMapping(value="list", method=RequestMethod.GET) 만들기 value만 쓸거면 value 생략 가능하지만 method 받는 방식을 지정해주고 싶을땐 value 써줘야함 [board/list]가 get방식으로 들어오면 다음과 같은 함수를 수행하여라

2. 화면단에서 클릭해서 넘어갈 것이기 때문에 무조건 get 방식응로 method 받아줘야함  이번엔 ModelAndView 로 만들기  - 단 이번엔 modelAndView 안에 매개변수 넣어줄 것 , 매개변수로 받아올 거기 때문에 new ModelAndView 안해주고 매개변수 불러오면 됨

reply&nbsp; Controller

#board 컨트롤러에서 요청받은 board/reply 뷰단 생성하러 가기

reply.jsp

 


 ㅇ 제일 많이 쓰는 건 2번(board/content) 방식 

 ㅇ ModelAndView 를 써야 할땐 그 중에서도 매개변수 사용하는 아이를 많이 씀 


이어서 member Controller 및 jsp 생성하는 부분 보기

SPRING#11-2 Controller 여러개 생성(Member) (tistory.com)

 

SPRING#11-2 Controller 여러개 생성(Member)

Member #MemberContoller 생성하기 ㅇ @Controller 클래스 위에 만들어주기 ㅇ @RequestMapping("member") 로 공통요청경로 빼주기 #컨트롤러 만들기 ①(member/join) 1. @RequestMapping 안에 메소드로 넘겨줬으..

tjqud531531.tistory.com

 

반응형