태그

2019년 8월 31일 토요일

helloworld1,2 공부



#################### 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를 설정하게 됨

@Valid 와 @InitBinder
 : validate() 메소드를 직접 호출하지 않고 스프링프레임워크에서 호출하는 방법.
[ 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 참조 ]



7.  handlerMapping 안거치고 Url을 바로 뷰로 매핑하기.. 
  => 홈피에서 정적인 부분은 바로 뷰로 넘길때. UrlFilenameViewController가 처리해줌
  (단,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">
 <!-- 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 설정파일로 인식

게시물

DP 공부