쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/sangyongSpring에 올려두었습니다.
Framework
- 자주 사용될 기능을 미리 구현해 놓은 것( 생산성 향상 )
- 배포는 .jar로 수행
- 제공되는 기능을 사용자에 상황에 맞게 수정하여 사용하고, 생명주기의 관리를
개발자가 하지 않는다.
- 반 조립 형태
- 최소한의 품질 보장을 받기 위해 프레임워크를 도입한다.
- Spring, MyBatis, any framework...
Library
- 자주 사용될 기능을 미리 구현해 놓은 것( 생산성 향상 )
- 배포는 .jar로 수행
- 제공되는 기능을 그대로 사용하고, 생명 주기를 개발자가 관리한다.
Spring
- spring.io에서 무료 제공한다.
- Spring IoC(Inversion of Control)에서 Spring framework으로 변환
- Spring DI, AOP, ORM, Web, MVC, JDBC 등 다양한 기능을 제공
Spring MVC
- MVC Pattern을 미리 구현해서 제공하는 Spring의 기능
- 설정 파일 없이 annotation을 사용하여 간단하게 업무를 처리할 수 있다.
- DispatherServlet(눈에 보이지 않음)을 Main Controller로 사용한다.
* DispatherServlet : 진입점, JSP로 이동, Web.xml에 등록이 되어야한다.
* HandlerMapper : 웹의 요청이 들어오면 요청을 처리할 수 있는 Controller를 찾아서 반환하는 일
* Controller : 웹의 요청을 처리하는 일
* ViewResolver : 응답을 수행하는 JSP가 존재하는 지 추적하는 일
* JSP : 화면을 제작하여 보여주는 일
* Controller 작성법
// 1. 클래스 위에 @Controller annotation을 선언한다.
// Handler Mapper가 Component-Scan을 수행
@Controller
public class Test{
// 2. method를 사용하여 web의 요청 하나를 처리한다.
// method위에 @RequestMapping annotation을 사용
// 요청 방식에 따라 RequestMethod.GET나 RequestMethod.POST 추가
// 매개변수는 Web parameter를 받기 위해 정의
@RequestMapping( value="/요청url", method=요청방식)
public String method명( 매개변수, ... ){
return "view페이지명";
}
* POJO(Plain Old Java Object) 지원
- 특정 외부 기술을 포함하지 않고 자바에서 제공하는 데이터 형(기능)만
사용하여 제작하는 클래스. (실행 및 테스트 용이성)
- 프로젝트 시 servlet-context.xml에서 base-package를 그에 맞는 패키지로 바꿔줘야 한다.
<context:annotation-config />
<context:component-scan base-package="kr.co.sist" />
<context:component-scan base-package="kr.co.sist.*" />
Spring MVC의 Controller(클래스)는 하나의 작업으로 묶여질 수 있는 세부 작업을 정의
* 예) 로그인 처리
public class LoginController{
public String loginForm(){
//실행될 코드
return "view페이지";
}
public String loginProcess(LoginVO lv){
//실행될 코드
return "view페이지";
}
}
Controller에서 method 요청
- Web client가 web server로 데이터를 보내기 위한 방식 설정
- @RequestMapping : method 위에 설정, URL( URI )로 요청이 발생했을 때
method가 호출되어 실행 된다.
* GET 방식
@RequestMapping(value="/URI", method=RequestMethod.GET )
@GetMapping("URI")// spring 5.x이상에서는 간단하게 사용 가능
public String method(){
//작성 코드
return "view페이지";
}
* POST방식
@RequestMapping(value="/URI", method=RequestMethod.POST )
@PostMapping("URI")// spring 5.x이상에서만 가능
public String method(){
//작성 코드
return "view페이지";
}
* GET | POST방식 : 배열의 문법을 사용
// { }기호를 사용하면 여러 다른 이름의 요청을 하나의
// method에서 사용할 수 있다.
@RequestMapping(value="/URI", method={RequestMethod.GET, RequestMethod.POST })
public String method(){
//작성 코드
return "view페이지";
}
* 응답 페이지는 요청에 의해 호출되는 method가 return 값을 받아 ViewResolver 객체가
응답페이지를 찾아 실행한다.
- return 되는 값은 ViewResolver가 앞에 (prefix) /WEB-INF/views/ 를 붙이고
뒤 ( suffix )에 .jsp를 붙여서 JSP를 찾는다.
- 예시
public String method명(){
return "view명";
}
- 예시 "test"가 return 되는 경우
/WEB-INF/views/test.jsp를 찾는다.( prefix/return 되는 이름/suffix )
Controller의 method는 요청 URL 하나(업무 하나)를 처리하기 때문에
Controller의 이름은 업무를 아우를수 있는 이름 설정
* Controller 안의 처리 메서드 매개 변수
- 매개변수 : web parameter를 받기 위해 존재
- 값이 하나 : 단일형
- 값이 여러 개 : VO
- 파일 업로드 : HttpServletRequest
- View로 데이터 전달 : Model
- 세션 받기 : HttpSession
- 쿠키 심기 : HttpServletResponse
- 반환형 : String
- 예외가 발생할 것 같은 반환형 : ModelAndView
* 교육센터소개에 대한 Spring 흐름
* 로그인에 대한 Controller, Service, DAO
'성장 일기 > 쌍용교육센터' 카테고리의 다른 글
0509/Controller에서 View로 데이터 전송 (0) | 2023.05.09 |
---|---|
0508/Spring MVC (0) | 2023.05.08 |
0502/MVC 패턴 (0) | 2023.05.02 |
0501/MVC 패턴 (0) | 2023.05.02 |
0429/MVC 패턴 (0) | 2023.05.02 |