Spring
자바 기반 웹 프로그래밍에서 많이 활용되는 프레임웍 (프로그램의 기본 뼈대와 api를 구축해놓은 미들웨어)
Spring boot
spring 을 경량으로 최적화한 프레임웍
spring 보다 훨씬 간편하고 서버를 stand alone 으로 사용한다. 하나의 서버에 하나의 어플리케이션만 돌아간다.
즉, 프로젝트 하나만 돌아가기 때문에 (stand alone) 경로에 프로젝트 이름을 작성할 필요가 없다.
application.properties
# port
server.port=8081
# JSP view //앞뒤에 붙는 prefix, subfix 지정
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
# oracle set
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=hr
spring.datasource.password=hr
#encoding
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
//설정과 관련된 다양한 내용을 해당 파일에 추가한다.
Maven
의존성 기반으로
Gradle
intelliJ 가 Gradle 기반
get 방식 요청 url 등록 (HelloController)
위 url로 요청이 오면 밑 return에 있는 메소드를 호출해서 자동 실행
//방식 지정 없이 url 등록
@RequestMapping("/hello/test2")
public String test2() {
}
//get 방식 요청 url 등록
@GetMapping("/hello/test1")
public String test1() {
return "hello/test1";
}
Spring boot project 구성 요소
pom.xml
라이브러리 의존성 등록. (dependency)
기능을 추가하려면 pom.xml에 의존성 추가
pom.xml에 dependency 등록하여 jar 파일을 다운받음
src/main/resources
프로젝트 자원 파일들을 저장
- static 폴더
html, css, javascript 와 같은 정적 웹 페이지를 저장하는 폴더
- templates
뷰 템플릿 파일들을 저장
- application.properties 파일:
이 프로젝트 설정 작성 파일.
서버 포트, db 설정, 인코딩, jpa, 멀티파트 …
src/main/java
자바 파일 저장.
기본 패키지 밑에 클래스를 만들어야 자동으로 스캐닝하여 객체를 생성하고 생명주기를 관리해줌.
자동으로 생성되야 하는 클래스에는 dao,service,controller 등이 있음
- webapp 폴더:
뷰 페이지 저장. jsp 페이지 저장
<spring mvc>
모든 요청은 dispatcherservlet이 받음
⇒ 받은 요청 url이 controller에 등록된 것인지 확인
⇒ 없는 url이면 404 / 있으면 맵핑된 메서드 실행
⇒ 맵핑된 메서드 실행 후 뷰 페이지 경로 반환
⇒ dispatcherservlet이 view Resolver 에게 뷰 페이지 경로를 전달하여 뷰 페이지를 생성하고 실행하도록 함
VO, DAO, Service, Controller 만 만들면 된다. 나머지는 다 자동으로 처리
1. controller 클래스
url별로 실행될 메서드를 등록 및 구현 클래스
일반 클래스로 만들고 @Controller annotation 붙여야 함
각 url별 실행할 코드 작성. 이동할 뷰 페이지 경로를 반환
url 을 맵핑하는 방법 :
@RequestMapping("url") :url 지정
@GetMapping("url") : get 방식 url 지정
@PostMapping("url") : Post 방식 url 지정
@PutMapping("url") : Put 방식 url 지정
…
url 맵핑된 메서드의 반환 타입이…
String이면
⇒ return 뷰 페이지 경로
void이면
⇒ 맵핑된 url 과 동일한 경로로 뷰 페이지 지정
커맨드 객체
url 맵핑된 메서드의 파라메터로 vo 객체를 작성하면 폼 양식에 입력한 값을 담아온다.
vo의 멤버변수 이름과 입력양식의 이름이 같아야 한다
파람없는 생성자로 vo 객체를 자동으로 생성하고 입력양식의 이름으로 setter를 호출하여 값을 vo에 담는다.
커맨드 객체는 자동으로 뷰 페이지로 전달됨. 뷰 페이지에서 소문자 클래명으로 사용
커맨드 객체를 뷰 페이지에서 부를 이름 설정:@ModelAttribute("이름")
이렇게 지정하면 뷰 페이지에서 설정한 이름으로 부를 수 있다.
⇒ ${이름.멤버변수}
@RequestParam("tel") String tel
⇒ String tel = request.getParameter("tel");
폼 양식 값을 읽어서 변수에 담는 어노테이션
defaultValue 기본적 값을 줌.
@ModelAndView(값과 뷰 페이지)
이동할 뷰 페이지 경로 지정 및 뷰 페이지에 전달할 값을 담는 객체
뷰 페이지 경로는 생성자에서 지정할 수도 있고, setViewName(뷰경로)로 지정할 수도 있다.
뷰 페이지로 전달할 값은 mav.addObject("키",값);
//생성자에서 뷰 경로를 지정할 수도 있고
ModelAndView mav = new ModelAndView("member/paramtest");
//setViewName(뷰경로)로 뷰 경로를 지정할 수도 있다.
//케이스에 따라 경로를 지정할 때
ModelAndView mav = new ModelAndView
mav.setViewName("member/paramtest");