SPRING#11-1 Controller 여러개 생성(Board)
ㅇ 프로젝트에서 사용할 기술이 많이 나오기 때문에 집중해서 공부하기
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 전부 어노테이션 만들 것
**만약 tostring 만들고 싶지 않으면 화면단에 tostring을 한번 더 오버라이드 해주면 됨(toString 먼저 만들어 준 후 data 어노테이션 쓰면 내가 만든 toString의 형식이 적용되고 @Data에는 기본 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태그사용)
-- jsp 에서는 이렇게 써주면 controller로 향함 (Controller 하나에 board, member 다 있었음)
-- 하지만 우리는 controller 를 board/member 나눠놨기 때문에 앞에 /board/써줘야함
3. member 관련된 요청사항 밑에 넣어주기 (button사용)
-- button onclick 시 넘어갈 수 있도록 해주되 board 랑 다른 방식으로 써주기 ( method 방식으로 넘겨주기)
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 만들어주기
#컨트롤러만들기②(board-content) - 반드시 com.lec.ch07.controller 아래에 만들어줘야해
ㅇboard/content 만들기
1. @RequestMapping("content") 만들기 value만 쓸거면 value 생략 가능하지만 method 받는 방식을 지정해주고 싶을땐 value 써줘야함 [board/content가 get방식으로 들어오면 다음과 같은 함수를 수행하여라
2. 화면단에서 클릭해서 넘어갈 것이기 때문에 무조건 get 방식응로 method 받아줘야함
2. 메소드 써주기 이번엔 Model형의 매개변수를 받을 것 model에 id랑 pw 넘겨줄것이기 때문에
** model에 addAttribute 할수 있는 애들은 기본데이터형 뿐만 아니라 객체도 가능함
** 매개변수에 HttpServeletRequest request를 써줘서 request에 setAttibute 를 해도 되지만 우린 model을 이용할 것이기 때문에 매개변수에 Model형만 넣어주고, model addAttribute 해준다
** 뷰단으로 return 해주기
#board 컨트롤러에서 요청받은 board/content 뷰단 생성하러 가기
** 첫번째 박스는 내가 model.addAttribute 에 직접 넣은 아이
** 두번째 박스는 member 객체 자체를 model.addAttribute 했기 때문에 그 안에 들어있는 id 와 pw 뽑아오는 아이
#컨트롤러만들기③(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 이름을 써주는 것
#board 컨트롤러에서 요청받은 board/list 뷰단 생성하러 가기
** list가 0일때와 아닐때의 뷰단이 달라야 하기때문에 <c:if>태그 써줘서 구분해주기
** list 가 0 이 아닐땐 리스트에 사람이 들어 있다는 뜻이므로 foreach문 돌려서 뽑아주기
** ${conPath}뒤에 /만 붙여줘도 /요청경로가 있기 때문에 main페이지로 넘어가게됨(MyController에 만들어놨
음)
#컨트롤러만들기④(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 안해주고 매개변수 불러오면 됨
#board 컨트롤러에서 요청받은 board/reply 뷰단 생성하러 가기
ㅇ 제일 많이 쓰는 건 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