2022.10.25 Spring-5

차유빈·2022년 10월 25일
0

Java 세팅 - 1

  • Spring MVC는 xml 뿐만 아니라 Java 클래스로도 설정이 가능하다.
    web.xml 🡪 AbstractAnnotationConfigDispatcherServletInitializer상속 혹은 WebApplicationInitializer 인터페이스 구현
  • root-context.xml 🡪 상속없음
  • servlet-context.xml 🡪 WebMvcConfigurer 인터페이스 구현

SpringMVCjava 프로젝트 생성

SpringConfigClass.java
서버 시작과 함께 가장 먼저 실행됨(java에서의 web.xml 역할을 하는 것)

RootAppContext.java
상속 없음

ServletAppContext.java

HomeController.java
xml 때와 동일하게

결과

구조


Java 세팅 - 2

  • xml 파일을 상속 받기
  • web.xml 🡪 AbstractAnnotationConfigDispatcherServletInitializer 상속 혹은 WebApplicationInitializer 인터페이스 구현
  • 상속으로 만들어보기 (구현은 좀더 유연하게 코드를 수정하여 만들수 있지만 상속은 정해진 코드만 사용 가능)

SpringConfigClass.java

결과


URLMapping

  • 다운 받은 파일 복붙하면 됨
    메이븐 프로젝트 변환
    pom.xml , src 폴더안의 패키지 클래스 , WebContent 붙여넣기
    그룹id, 아티팩트id 수정하기
    메이븐 업데이트
    프로젝트 서버로 실행 결과 확인

index.jsp

test1.jsp

test2.jsp

TestController.java

결과


하위경로설정

  • url이 간단하지 않고 중간 경로가 있는 경우

index.jsp

Sub1Controller.java

test3.jsp (test4.jsp 동일)
views 폴더 안의 sub1에 있을 때

결과


하위경로통합(POST방식)

index.jsp

TestController.java

post1.jsp (post2.jsp 동일)

결과


하위경로통합(POST,GET 둘다 같은 경로로)

index.jsp

TestController.java

test5.jsp

결과
둘 중 어떤 것을 눌러도 같은 경로(test5 페이지)로 감


파라미터 추출하기

GetParameter 프로젝트 생성

index.jsp

result.jsp

TestController.java

  • 같은 이름의 파라메터의 경우 배열로 결과 출력하기

결과


PathVariable

index.jsp

TestController.java
@PathVariable int 는 자동으로 {data1}으로 전달된 문자열이 정수로 변환됨 이때 정수가 아니면 에러가 날수 있음

결과

RequestParam

index.jsp

TestController.java

결과

(required = false) => null값을 넣으면 data1이 없더라도 에러가 나지 않음


객체로 파라미터 주입받기(Map으로)

index.jsp

TestController.java

  • (@RequestParam Map<String(key값), String(value값)> map)
  • 동일명으로 전달되는 data3 파라미터가 2개 이상이므로 data3는 List로 주입받기

result.jsp

결과


객체로 파라미터 주입받기(ModelAtrribute으로)

DataBean.jaba 빈 클래스 만들기

TestController.java

  • @ModelAttribute 생략 가능

index.jsp

결과


ViewResolver

  • ViewResolver는 View Name을 이용해 알맞는 view객체에 data를 함께 보냄
  • View에 model을 rendering하여 View 인스턴스를 다시 DispatherServlet에 보냄
  • DispatcherServlet은 최종 결과를 클라이언트에 응답

TestController.java
기본적으로 Spring MVC 에서는 forward(request가 같이)로 view 페이지에 전달됨

index.jsp

test3.jsp

test4.jsp

결과


ModelAndView

  • model과 화면을 같이 전달
  • 보통은 model을 많이씀
  • Model 객체에 전달할 데이터를 입력하면 view 페이지에 request로 전달됨

TestController.java

  • model => addAttribute 로 전달
  • modelAndView => addObject 로 전달

index.jsp

test5.jsp, test6.jsp

결과

profile
chacha's 프로그래밍 공부

0개의 댓글