728x90

웹과 상관이 있냐 없냐에 따라서 설정파일을 잡는게 다르다

지금만든 프로젝트 기준으로는 웹과 상관이 있으면 dispatcher 서블릿.xml로 된다


다이나믹~ 으로 프로젝트 만들고
jar파일넣고
스프링으로 바꾸고

web.xml에 서블릿 등록
컨트롤러 역활하는 자바 클래스만들고
@Controller 선언해서 이 클래스가 컨트롤러인지 알수있게 표시
@RequestMapping을 선언해서
처음 시작 페이지의 주소?를 입력해주고
기본값인get을 입력

@RequestMapping은 http request로 들어오는 url을 특정 controller 클래스나 메소드로 연결시키는 역할을 한다.

https://blog.naver.com/gmlwo308/222190960392

https://joont92.github.io/spring/@RequestMapping/

그리고 ModelAndView를 생성
 
xml생성
sumController??
InternalResourceViewResolver치면 자동완성 됨

확장자.jsp를 붙여주기 위해선 InternalResourceViewResolver가 필요하다

viewResolver는 string 으로 return 되는 view 의 이름을 spring 이 찾아서 클라이언트에 던져주는 역활

https://blog.naver.com/kimdongy1000/221958837601
prefix 는 앞에 붙는 접두사고
suffix 는 접미사이다
sum이라는 폴더에서 input.jsp를 찾는다

아래 사진처럼
서블릿xml에서 /sum/을 붙여주는 prefix을 주석걸고
핸들러에서 직접 주소를 적어줘도 된다.
sum폴더 만들고 그안에 input내용 입력
result.jsp도 만들어주고 실행하면
결과가 잘 나온다

포워딩으로 사용하겠다는설정은 
서블릿 이름이 Dispatcher로 받아와서 그렇다
   
  ModelAndView는 오로지 어느 jsp로 가라는말만 하고 있어서 쓸모가없다
그래서 이렇게 바꿔도 에러가 나지 않는다.

리턴되는 타입이 String이면 단순 문자열이 아니라 뷰의 이름으로 인식한다

String은 리턴타입으로 단어를 보내면 .jsp를 붙인 뷰 이름으로 인식한다.
뷰이름이 아니라 실제 문자열로 리턴하고 싶을 때는 @ResponseBody를 붙인다.


이렇게 글자로 나온다.
   

지금까지 컨트롤러가 값을 안받고 그냥 jsp가 바로 값을 받았는데
컨트롤러가 값을 받게 만들어보자

SumController에서
@Request로 값을 받고
result.jsp로 값을 보내준다.
 
 
 

 


 

404는 서버

500은 프로그램 잘못짠거

400은 파라메터에 값을 안넣어서 나오는 에러다.

 


 

 

값이 안들어간다면 (required=false)
기본값으로 0을 넣어주고 (defaultValue = "0")
0을 int가 아니라 Stringf 타입으로 해줘라.(String x,)

사진처럼 써주면  
값을 넣지 않아도 400에러가 나오지 않는다
x,y 둘다 해주면
에러 안난고 사진처럼 된다.
근데 사진을 보면 숫자가 합해진게 아니라 문자로 나와서 그냥 나열된다....

문자열로 받아지는 x,y값을 int로 변환시킨다

그럼 잘 나온다.

이걸 자주 쓰는곳은 게시판에서 무조건 1페이지로 가게 만들때 사용한다.
기본값으로 1을 해주면 무조건 1페이지로 가니깐

 

 


그리고 데이터를 여러개 한번에 받는 방법이 있다.

받는 데이터가 많아지면 RequestParam을 갯수대로 써줘야 하는데 Map을 쓰면 한번에 받을 수 있다.


Map은 데이터를 받는부분,
ModelMap은 데이터를 내보내는 부분

ModelMap???

주소를 타고 오는 방식은 전부 스트링으로 잡아줘야 한다.

이렇게 해도 결과는 잘 나온다.

 


 

DTO로 받기

DTO만들고 @Data해주기
사진처럼 해주면
DTO를 이용해서 값을 사용할 수 있다.
사진처럼 DTO객체를 보내줘도 되는데
그럼 result.jsp에서 하나씩 get~ 으로 받아줘야 한다.

 

결과를 String, ModelAndView, ? 등 여러가지 방법으로 받을 수 있다.

 


스프링 설정 파일을 폴더 이동하거나 이름을 바꿀때

디폴트값은 /WEB-INF/dispatcher.xml 이지만

난 이름을 dispatcher 말고 contextConfigLocation로 바꾸고
이 파일의 위치는 사진과 같은곳에 있게 만들었다.
 
그리고 기존에 사용했던 dispatcher-servelt의 내용을
mvc-context로 옮긴다

(기존의  dispatcher-servelt은이제지워도된다)
 그리고 실행하면 잘된다


web.xml에 
새롭게 xml파일을 적어놨기 때문에
실행하면 더이상 2번을 찾아가지 않고 1번을 찾아간다.

viewResolver

xml파일에서 viewResolver을 통해 접두사 접미사를 미리 적은 덕분에

 

컨트롤러에서 리턴값에 풀 주소를 안적어줘도 된다.
만약 viewResolver를 안해줬다면
return "/view/sungJuk/result.jsp";
이렇게 항상 길게 적어야 한다.

InternalResourceViewResolver

https://m.blog.naver.com/PostView.nhn?blogId=kbh3983&logNo=220778740252&proxyReferer=https:%2F%2Fwww.google.com%2F

 

23. 스프링 뷰 리졸버 : View Resolver 개념

스프링 뷰 리졸버 : View Resolver 개념 뷰 포스팅에서...- DispatcherServlet에게 뷰 정보를 전달하는...

blog.naver.com

 

 

view이름을 찾는 방법은 ViewResolver 에서 관리 된다
이 ViewResolver 가 핸들러의 타입이 String , ModeAndView 일때만 작동을 한다
그 외
다른 방법에서는 viewResolver 이 null 로 세팅이 되기 때문에 이름으로 jsp 파일을 찾을 수 없다

https://blog.naver.com/kimdongy1000/222102351660

 

[spring - mvc] model , modelAndView

사실 이 둘은 크게 차이가 없다 modelAndView 는 model 에서 그저 String view 를 객체 안에 넣는것이 ...

blog.naver.com


Model, ModelMap vs ModelAndView

model,modelMap은 데이터만 저장을 하고
modelAndMap은 데이터와 이동하고자 하는 View page를 같이 저장한다

https://blog.naver.com/youhr21/221868885031

 

[JAVA] ModelAndView와 ModelMap, Model 차이

● Model, ModelMap Vs ModelAndView 차이점 : 데이터만 저장한다 vs 데이터와 이동하고자 하는 Vi...

blog.naver.com

 


@ModelAttribute

1번페이지에서 파라미터로 넘길값이 많을때

이 부분에 파라미터를 5개~10개 이렇게 쓰기엔 너무 효율성이 떨어지고 힘들다
그래서 DTO클래스를 많이 이용하는데
DTO클래스의 이름마저도 길다면 그것또한 힘들다
그래서 @ModelAttribute 어노테이션을 이용해 쉽게 사용할 수 있다.

첫번째 페이지에서 이름, 국어, 영어, 수학 총 4개의 정보를 넘겨줘야 한다.
그래서 SungJukDTO라는 클래스를 만들었다
파라미터를 넣어주는 부분에 @ModelAttribute 를 사용하고
SungJukDTO 타입의 sungJukDTO를 넣어저줬다.

여기서 ("내용") 이 부분은 복잡한 이름을 대신할 별명을 넣어주면 된다.
안쓰면 그냥 sungJukDTO를 사용하게 된다.

만약 사진처럼 간단하면?
사용안하면 된다 
   

 

728x90

'Spring' 카테고리의 다른 글

web, WEB-INF 차이점  (0) 2021.08.24
(추가 필요@RequestBody )@ResponseBody, @RequestMapping, @RequestParam, @ModelAttribute  (0) 2021.01.09
1/06 스프링 chapter06  (0) 2021.01.06
12/30  (0) 2020.12.30
12/28-29 수업내용, 스프링 DB  (0) 2020.12.28

+ Recent posts