#################### helloworld1 공부
1. @RequestParam
ex)
@RequestParam(value="query",required=false) String query
@RequestParam(value="page",defaultValue="1") int page
/board/search?query=zzz&page=4 와 같이
HTTP요청 파라미터를 메서드의 파라미터로 전달받을 때 사용
[ SearchController.java 참조 ]
2. 뷰 이름 자동 지정
메소드의 리턴타입이 Model이나 Map,void 인 경우
뷰 이름이 URL이 됨.
리턴된 model이나 map은 request scope에 담겨서 해당되는 뷰에 전달된다.
3. @ModelAttribute()
1>커맨드객체앞에 붙으면 객체의 이름을 바꾸는것이고
2>일반 메서드 이것이 붙으면 메서드의 리턴값을 모델에 넣어주겠다라는뜻
리턴하는것을 모델에 추가해줌. -> 리턴값이 Board 클레스(사용자 정의클래스) or List<ABC> 등등...이면 @ModelAttribute()가 (메소드 위에)붙는다고 생각..
말그대로 Model을 다루네!
@ModelAttribute() 메서드에서 초기화 해줄 수 도 있다.
예) 처음 요청했을 때, get방식인데 <input type="text"의 > 초기값을 채우고 싶다.
제일 처음 요청들어갔을때 초기화로 값세팅을 하는방법임 -> boardInit() 메소드 참고!
@ModelAttribute() 는 같은 파일에 있는 다른 메서드가 이를 request로 담아간다.
즉. @ModelAttribute() 는 항상 호출된다.
그리고 다른 메서드에 모델로써 전달된다.
>> 즉, XXXXController가 처리하는 모든 URL(~메소드)에 모델을 넣어주겠다.
사용가능 ${}로써
4. @Initbinder vs @Valid
@Initbinder: 스프링은 @InitBinder 어노테이션이 적용된 메서드를 이용해서 폼과 커맨드 객체 사이의 매핑을 처리해주는 WebDataBinder를 초기화할 수 있도록 하고 있다. 이 메서드에서 WebDataBinder.setValidator() 메서드를 이용해서 커맨드 객체의 유효성 여부를 검사할 때 사용할 Validator를 설정하게 됨
[ JSP's form과 커맨드 객체의 관계 ]
https://snoopy81.tistory.com/324
[회원가입 폼 예제]
https://bbiyakbbiyak.tistory.com/4?category=718247
https://bbiyakbbiyak.tistory.com/3?category=718247
5. //redirect:라서 url 요청이 되므로, jsp로 넘어가는게 아니다. 메핑되는 메서드로 넘어간다.
return "redirect:/board/write";
//이때 전달되는 모델 개수는 1개 : keywords
// submit메소드 참조
6. 메소드의 리턴타입이 ModelAndView인 경우.... setViewName()을 이용해서 view를 정할 수 있다.
-> view가 보여질 경로 설정 가능.( 리턴타입이 일반적인 String 같네..? -> 그럼 String과 ModelAndView의 차이점은 model을 담을수 있냐
유무인데.. 헌데 String리턴타입 메소드는 어떻게 모델을 담드냐? -> 매개변수 쪽에 Model을 받아서 처리~!)
VS 리턴타입이 Map, Model, void 인 경우 - > Requestmapping URL이 뷰이름됨.
[ HelloController.java 참조 ]
1. @RequestParam
ex)
@RequestParam(value="query",required=false) String query
@RequestParam(value="page",defaultValue="1") int page
/board/search?query=zzz&page=4 와 같이
HTTP요청 파라미터를 메서드의 파라미터로 전달받을 때 사용
[ SearchController.java 참조 ]
2. 뷰 이름 자동 지정
메소드의 리턴타입이 Model이나 Map,void 인 경우
뷰 이름이 URL이 됨.
리턴된 model이나 map은 request scope에 담겨서 해당되는 뷰에 전달된다.
3. @ModelAttribute()
1>커맨드객체앞에 붙으면 객체의 이름을 바꾸는것이고
2>일반 메서드 이것이 붙으면 메서드의 리턴값을 모델에 넣어주겠다라는뜻
리턴하는것을 모델에 추가해줌. -> 리턴값이 Board 클레스(사용자 정의클래스) or List<ABC> 등등...이면 @ModelAttribute()가 (메소드 위에)붙는다고 생각..
말그대로 Model을 다루네!
@ModelAttribute() 메서드에서 초기화 해줄 수 도 있다.
예) 처음 요청했을 때, get방식인데 <input type="text"의 > 초기값을 채우고 싶다.
제일 처음 요청들어갔을때 초기화로 값세팅을 하는방법임 -> boardInit() 메소드 참고!
@ModelAttribute() 는 같은 파일에 있는 다른 메서드가 이를 request로 담아간다.
즉. @ModelAttribute() 는 항상 호출된다.
그리고 다른 메서드에 모델로써 전달된다.
>> 즉, XXXXController가 처리하는 모든 URL(~메소드)에 모델을 넣어주겠다.
사용가능 ${}로써
4. @Initbinder vs @Valid
@Initbinder: 스프링은 @InitBinder 어노테이션이 적용된 메서드를 이용해서 폼과 커맨드 객체 사이의 매핑을 처리해주는 WebDataBinder를 초기화할 수 있도록 하고 있다. 이 메서드에서 WebDataBinder.setValidator() 메서드를 이용해서 커맨드 객체의 유효성 여부를 검사할 때 사용할 Validator를 설정하게 됨
@Valid 와 @InitBinder
: validate() 메소드를 직접 호출하지 않고 스프링프레임워크에서 호출하는 방법.
https://snoopy81.tistory.com/324
[회원가입 폼 예제]
https://bbiyakbbiyak.tistory.com/4?category=718247
https://bbiyakbbiyak.tistory.com/3?category=718247
5. //redirect:라서 url 요청이 되므로, jsp로 넘어가는게 아니다. 메핑되는 메서드로 넘어간다.
return "redirect:/board/write";
//이때 전달되는 모델 개수는 1개 : keywords
// submit메소드 참조
6. 메소드의 리턴타입이 ModelAndView인 경우.... setViewName()을 이용해서 view를 정할 수 있다.
-> view가 보여질 경로 설정 가능.( 리턴타입이 일반적인 String 같네..? -> 그럼 String과 ModelAndView의 차이점은 model을 담을수 있냐
유무인데.. 헌데 String리턴타입 메소드는 어떻게 모델을 담드냐? -> 매개변수 쪽에 Model을 받아서 처리~!)
VS 리턴타입이 Map, Model, void 인 경우 - > Requestmapping URL이 뷰이름됨.
[ HelloController.java 참조 ]
7. handlerMapping 안거치고 Url을 바로 뷰로 매핑하기..
=> 홈피에서 정적인 부분은 바로 뷰로 넘길때. UrlFilenameViewController가 처리해줌
(단,xml에서 세팅해줘야함)
(단,xml에서 세팅해줘야함)
#################### helloworld2 공부
1. hibernate 유효성 검사 vs Validator 유효성 검사
- hibernate를 활용하면 어노테이션만으로도 유효성체크가 가능해진다.
2. 서버와 클라이언트(기존 폼 태그)
3. form 태그( form:form )
spring버전 2.0부터 데이터바인딩과 관련된 광범위한 태그를 제공
기본 형식은 아래와 같은 형태로 입력하며, 입력값이 없을시 method는 'post'로, action값은 '현재 요청URL'값이 설정된다.
<form:form> </form:form>
예) <form:form path="userId">
이렇게 변환된다! <input id="userId" name="userId" type="text" value="">
4. @RequestMapping(value="/login",method=RequestMethod.GET)
public String logForm(Login login) {
return "login";
}
//get방식에서도 모델객체 사용.
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
사용하면 내부적으로 자바코드가 돌기 때문에 모델객체가 있어야함!
따라서 폼페이지에서 내부적으로 getter,setter 사용가능.
// 변경사항 : jsp에서 commandName이 아닌 modelAttribute로 변경하여 사용할 것!!
// ex) <form:form modelAttribute="login">
#################### helloworld3 공부
https://m.blog.naver.com/scw0531/220986622908
1. @Servcie()의 선언 위치 그리고 컨트롤러에서 서비스 생성할때 @Autowired와의 관계는? =>
# 해당 클래스가 service라는것을 알리기위해 @Service 붙임.
# 인터페이스로 구성시 확장성과 유연성이 좋아진다. 인터페이스를 구현할 클래스에
@Service붙이는것..
# xml의 beans에 등록해주어야지 싱글톤(=인스턴스 재사용)과 @Autowired가 가능함.
# 즉,순서가...... @Service를 붙이면 자동으로 검색해서 빈으로 등록함. 그 이후에야 컨트롤러 단 같은 부분에서 @Autowired 선언이 가능한것.
# 컨트롤러 단에서 서비스를 호출하기 위해서 우선 서비스 정보를 가지고 있는 클래스를
선언한다. 클래스는 Impl파일들을 의미하게 되고 new로 객체생성 없이 하기 위해서
@Autowired를 써준다. Autowired같이 자동적으로 객체를 만들어주고 사용할 수 있게
해주는 것을 스프링에서는 DI 라고 한다.
# 해당 클래스가 DAO라는것을 알리기위해서 @Repository를 붙여준다.
# 최초 @Controller시작 -> @Service -> @Repository 까지 이어짐.
그 과정에서 @Autowired로 이루어진다는 점!
#servlet-context와 root-context의 차이점 + form을 이용한 화면이동 부분
https://m.blog.naver.com/scw0531/220988401816
https://m.blog.naver.com/scw0531/220984890046
2. JSTL이란 html에서 제어로직을 추가하여 데이터를 조작하는 가능하게 하는 기술
ex) <c:forEach>
3. 스프링부트란?
http://bitly.kr/RgkvLI
스프링부트 이용시, myBatis의 기존방법인 XML 설정파일에 상응하는 놈을 자바파일로 만들어서 세팅해준다. https://m.blog.naver.com/scw0531/221067648218
이를 위해서는 @Configuration 을 사용. 이 @를 통해 스프링부트에서는 XML 설정파일로 인식
<form:form> </form:form>
예) <form:form path="userId">
<!-- path는 Member.java에 있는 property(변수)와 연결 -->
<!-- web으로 실행 후 소스보기를 통해 비교해 볼 것 -->
이렇게 변환된다! <input id="userId" name="userId" type="text" value="">
4. @RequestMapping(value="/login",method=RequestMethod.GET)
public String logForm(Login login) {
return "login";
}
//get방식에서도 모델객체 사용.
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
사용하면 내부적으로 자바코드가 돌기 때문에 모델객체가 있어야함!
따라서 폼페이지에서 내부적으로 getter,setter 사용가능.
// 변경사항 : jsp에서 commandName이 아닌 modelAttribute로 변경하여 사용할 것!!
// ex) <form:form modelAttribute="login">
#################### helloworld3 공부
https://m.blog.naver.com/scw0531/220986622908
1. @Servcie()의 선언 위치 그리고 컨트롤러에서 서비스 생성할때 @Autowired와의 관계는? =>
# 해당 클래스가 service라는것을 알리기위해 @Service 붙임.
# 인터페이스로 구성시 확장성과 유연성이 좋아진다. 인터페이스를 구현할 클래스에
@Service붙이는것..
# xml의 beans에 등록해주어야지 싱글톤(=인스턴스 재사용)과 @Autowired가 가능함.
# 즉,순서가...... @Service를 붙이면 자동으로 검색해서 빈으로 등록함. 그 이후에야 컨트롤러 단 같은 부분에서 @Autowired 선언이 가능한것.
# 컨트롤러 단에서 서비스를 호출하기 위해서 우선 서비스 정보를 가지고 있는 클래스를
선언한다. 클래스는 Impl파일들을 의미하게 되고 new로 객체생성 없이 하기 위해서
@Autowired를 써준다. Autowired같이 자동적으로 객체를 만들어주고 사용할 수 있게
해주는 것을 스프링에서는 DI 라고 한다.
# 해당 클래스가 DAO라는것을 알리기위해서 @Repository를 붙여준다.
# 최초 @Controller시작 -> @Service -> @Repository 까지 이어짐.
그 과정에서 @Autowired로 이루어진다는 점!
#servlet-context와 root-context의 차이점 + form을 이용한 화면이동 부분
https://m.blog.naver.com/scw0531/220988401816
https://m.blog.naver.com/scw0531/220984890046
2. JSTL이란 html에서 제어로직을 추가하여 데이터를 조작하는 가능하게 하는 기술
ex) <c:forEach>
3. 스프링부트란?
http://bitly.kr/RgkvLI
스프링부트 이용시, myBatis의 기존방법인 XML 설정파일에 상응하는 놈을 자바파일로 만들어서 세팅해준다. https://m.blog.naver.com/scw0531/221067648218
이를 위해서는 @Configuration 을 사용. 이 @를 통해 스프링부트에서는 XML 설정파일로 인식