문제)
성적을 입력하는 양식과
입력하고 제출버튼을 누르면 총점 및 평균을 보여주는 페이지를
제작해보겠습니다.
조건 : 모든 페이지의 접속주소는 /score 입니다
1.성적 입력 폼 같은 경우 get방식 접근만 허용
scoreForm.jsp
2.성적 결과 페이지는 post방식 접근만 허용합니다.
scoreResult.jsp
3. 폼에서는 수학, 영어, 언어, 사탐, 컴퓨터 과목의 성적을
각각 입력받도록 5개의 입력란이 있으며
name속성은 알아서 지정해주세요.
4.목적지 페이지에서는 해당 5개과목의 성적을 받아서
total변수에 총점을 저장한 다음 바인딩
avg변수에 평균을 double로 저장한 다음 바인딩
전달받은 5개 과목도 전부 바인딩해서
5.결과페이지에 과목별성적, 총점, 평균점수를 띄워줍니다.
실행하면
/score
성적확인 버튼을 누르면
잘 나오는걸 확인 가능
컨트롤러에 인자를 전달하기 위해 가장 중요한 것은 어떤 인자를 전달받을지 입니다. 스프링에서의 인자 전달은 대체로 이름이 일치하는 것을 대체로 이름이 일치하는 것을 전달하는 것으로 설정되어 있습니다.
먼저 컨트롤러의 인자 전달의 보편적인 방법은 @RequestParam("전달받은 파라미터명") 을 메서드 선언부에 작성하는 것입니다.
@RequestParam()의 경우는 전달받은 파라미터와 실제 파라미터명이 일치하지 않을때 사용하면 좋습니다.
computer로 보내고 있는데 com으로 받고싶을때
@ReauestParam{"computer"} int com
이렇게 처리 합니다.
@RequestMapping을 사용할 때 url에 파라미터값을 직접 전달하는 것이 아니라 url의 일부를 아예 숫자로 처리하고 싶은 경우도 있을 것입니다.
그럴 때 사용할 수 있는것이 @PathVariable 어노테이션 입니다.
사용법은 파라미터 선언부의 적용하고 싶은 변수에 @PathVariable 어노테이션을 사용해주시고, @RequestMapping 부분에는 {변수명} 으로 처리를 해 주면 됩니다.
문제)
주소는 /page로 하겠습니다.
get방식 접속만 허용합니다.
메서드명은 임의로 만들어주세요.
page.jsp로 연결됩니다.
views / 우클릭 new / JSPfile / pgae 생성
해당 페이지는 int pageNum을 받아서 바인딩합니다.
page.jsp 본문에 현재 ${page} 페이지를 보고계십니다. 나오게 해줍니다.
pgae
/page?pageNum=13 실행하면
숫자를 넣은 페이지로 보여지는걸 확인 가능
@PathVariable 을 사용해 보겠습니다.
이렇게 하면 ?를 안하고/ 를 쓰고 숫자만 넣으면 실행 할 수 있다.
@PathVariable 는 2개 이상도 사용 가능합니다.
권수도 넣어 보면
/page/78/1205
78권 1205페이지로 가는걸 확인 할 수 있습니다.
문제)
환율 계산기를 만들어보겠습니다.
단, 원화금액은 @PathVariable을 이용해 입력받습니다.
주소는 /rate입니다.
get방식으로 처리해주세요.
원화를 입력받으면 rate.jsp에서 결과로 환전금액을 보여줍니다.
ㄴ> final 상수 처리
final double NTD_RATE
/rate
/rate/454 실행 하면
확인 할 수 있다.
포워딩 잘 되는지 확인
getList.jsp를 만들어 줍니다.
array로 들어간 자료가 없기 때문에 빈 가로만 나옵니다.
배열자료를 받을때는 무조건 @RequestParam을 강제로 써야 합니다.
/getList?array=가&array=나&array=마 실행해보면
가 나 마 가 나옵니다.
/getList
위 array를 c:forEach를 이용해 하나하나 나열해보겠습니다 .
먼저 제일 상단의 c태그라이브러리를 uri 를 작성해줍니다.
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix='c' %>
/getList?array=가가가&array=나나나&array=다다다 를 실행하면
가가가 나나나 다다다 가 나옵니다.
void타입은 url로 명시한 주소와 일치하는 뷰로 연결됩니다.
리턴구문을 생략 할 수 있다는 장점이 있지만 반면에 복잡한 로직을 짜는것은 무리가 있습니다. 보편적으로는 String을 더 많이 사용합니다.
(리턴구문을 생략할수 있음)
views / 우클릭 new / JSPfile / test 생성
컨트롤러는 자바에 존재하는 모든 자료형을 받을 수 있습니다.
ArrayList와 같은 배열에서부터 VO 객체 등까지 온갖 자료형을 다 받을 수 있습니다. 몇 가지 규칙을 알아야 확실하게 이해할 수 있기 때문에 몇 가지 규칙에 대해서 설명드리겠습니다.
com.ict.controller - 우클릭 new - package - com.ict.controllervo 생성
com.ict.controllervo - 우클릭 new - class - UserVO 생성
UserVO
가상의 "회원 관리용 VO"
유저 테이블 컬럼 5개에 대응하는 VO
lombok @Data는 해당 VO의 setter, getter, 생성자, toString을 자동생성해줍니다. 단, lombok을 사용하기 위해서는
1. lombok설치 -> 2.pom.xml에 lombok관련 세팅을 해야합니다.
https://mvnrepository.com 접속
lombok 검색
버전에 맞는거 눌러서 코드 복사 한 후 pom.xml에 태그 안에 붙여 줍니다.
그리고 다시
UserVO 로 돌아와 임포트 해주면 연두색 세모가 생기면 완료
한번에 getter, setter, toString가 생겨진걸 확인할 수 있따.
문제)
VO를 활용해 회원 데이터를 받는 컨트롤러를 만들어보겠습니다.
userInfo가 주소입니다.
views / 우클릭 new / JSPfile / user.jsp 생성
/userInfo?userNum=300&userId=가나다라 실행하면
userNum = 300
userId = 가나다라 가 나오는걸 확인 할 수 있다.
userInFo 페이지를 만들어서 폼을 만들어
상단의 userInfo로 보내게 해주세요.
userInfo로직은 post방식만 허용하게 해주시고
폼 페이지는 get 방식만 허용합니다.
usaerForm
실행하면
제출 버튼을 눌르면
확인 할 수 있다.