내용 |
1. ICalcService 인터페이스를 작성합니다.
package kr.co.javaspecialist.calc.service;
public interface ICalcService {
int add(int a, int b);
int sub(int a, int b);
int mul(int a, int b);
int div(int a, int b);
}
2. CalcService 클래스를 구현합니다.(@Service 아노테이션 추가)
package kr.co.javaspecialist.calc.service.impl;
import org.springframework.stereotype.Service;
import kr.co.javaspecialist.calc.service.ICalcService;
@Service
public class CalcService implements ICalcService {
public int add(int a, int b) {
return a + b;
}
public int sub(int a, int b) {
return a - b;
}
public int mul(int a, int b) {
return a * b;
}
public int div(int a, int b) {
return a / b;
}
}
3. application-config.xml에 CalcService 클래스의 패키지를 <context:component-scan /> 설정
<context:component-scan base-package="kr.co.javaspecialist.calc.service" />
4. CalcController 클래스 작성(@Controller 아노테이션 추가)
package kr.co.javaspecialist.calc.web;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import kr.co.javaspecialist.calc.service.ICalcService;
@Controller
public class CalcController {
}
5. mvc-config.xml 에 CalcController 클래스 패키지 컴포넌트 스캔 설정
<context:component-scan base-package="kr.co.javaspecialist.calc.web" />
6. CalcController 클래스에 ICalcService 의존성 설정 추가
@Autowired
ICalcService calcService;
7. 컨트롤러 메서드 추가
@RequestMapping("/calc/add")
public String add(int a, int b, Model model) {
int result = calcService.add(a, b);
model.addAttribute("result", result);
return "calc/result";
}//http://localhost:8080/SpringWebMVC/calc/add?a=10&b=20
8. WEB-INF/view/result.jsp 파일 작성
${result}
9. PathVariable 사용
@RequestMapping("/calc/sub/{a}/{b}")
public String sub(@PathVariable int a, @PathVariable int b, Model model) {
int result = calcService.sub(a, b);
model.addAttribute("result", result);
return "calc/result";
}//http://localhost:8080/SpringWebMVC/calc/sub/30/20
10. WEB-INF/view/mulform.jsp 파일 작성
<%@ page contentType="text/html; charset=EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>곱샘하려는 두 숫자 값을 입력하세요</h1>
<form action="mul" method="post">
숫자 1 : <input type="number" name="a"><br>
숫자 2 : <input type="number" name="b"><br>
<input type="submit" value=" 곱셈하기 ">
</form>
</body>
</html>
11. mulform.jsp 페이지 요청
@RequestMapping(value="/calc/mul", method=RequestMethod.GET)
public String mul() {
return "calc/mulform";
}
12. mulform.jsp 페이지 처리
@RequestMapping(value="/calc/mul", method=RequestMethod.POST)
public String mul(int a, int b, Model model) {
int result = calcService.mul(a, b);
model.addAttribute("result", result);
return "calc/result";
}
13. View Controller를 이용한 폼 요청 설정
<mvc:view-controller path="/calc/divform" view-name="calc/divform" />
14. WEB-INF/view/calc/divform.jsp 작성
<%@ page contentType="text/html; charset=EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>나눗셈하려는 두 숫자 값을 입력하세요</h1>
<form action="div" method="post">
숫자 1 : <input type="number" name="a"><br>
숫자 2 : <input type="number" name="b"><br>
<input type="submit" value=" 나누기 ">
</form>
</body>
</html>
15. /calc/div 처리하는 컨트롤러 작성
@RequestMapping(value="/calc/div", method=RequestMethod.POST)
public String div(int a, int b, Model model) {
int result = calcService.div(a, b);
model.addAttribute("result", result);
return "calc/result";
} |