#Spring 이용해서 구구단 출력하기(@Service 까지)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript"
src ="resources/jquery/jquery-1.12.4.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#sendBtn").on("click",function(){
if($.trim($("#wdan").val())==""){//트림 필수요소 필터링
alert("값좀 넣어라");
$("#wdan").focus();
} else{
$("#sendDan").submit(); //action 실행
}
});
});
</script>
</head>
<body>
몇 단을 출력할지 선택하시오.
<form action="practice4" method="post" id="sendDan">
<input type="text" name="dan" id="wdan">
<input type="button" value="send" id="sendBtn">
</form>
</body>
</html>
이전 방식과 크게 다르지 않다. 한가지 달라진 점은 스크립트 문에 if else문이 들어간 점이다. 값이 들어가 있는지 아닌지를 확인하는 작업이다.
@RequestMapping(value="practice3")
public ModelAndView practice3(ModelAndView mav) {
mav.setViewName("practice/practice3");
return mav;
}
@RequestMapping(value="practice4")
public ModelAndView practice4(ModelAndView mav,
@RequestParam int dan) {
String gugu = iPracticeService.gugu(dan);
mav.addObject("gugu",gugu);
mav.setViewName("practice/practice4");
return mav;
}
컨트롤러에서는 우리가 몇단을 입력할 것인지 웹브라우져에서 받아온 숫자를 int 타입으로 받아 매개변수로 이용한다.
그리고 @Service를 통해 계산을 하고 그 값을 다시 반환시킨다.
package com.test.spring.practice.service;
import org.springframework.stereotype.Service;
@Service
public class PracticeService implements IPracticeService{
@Override
public String gugu(int dan) {
String gugu="";
for(int i=1; i<10; i++) {
gugu += dan + "*" + i +"=" +(dan*i)+"<br>";
}
return gugu;
}
}
String 타입으로 반환하는게 나중에 어떤 식으로던 써먹기 유용하기 때문에 반환값 부터 String 으로 받아준다. 위의 컨트롤에서도 한번더 String 타입으로 받는데 그 이유는 받아오는 값을 사용하기 전에 String타입으로 받는게 jsp파일 안에서도 사용하기 편하기 때문이다.
인터페이스의 개념이 나오는데 여기서 인터페이스를 통해서 의존성을 주입한다. 간단히 이야기하면 Service.java와 Controller.java 사이의 관계를 약하게 만드는데 필요한게 인터페이스인 것이다.(부품 하나에 의존적이지 않고 크게 중요하지 않은 부품이 고장났을때는 그 부품의 기능을 무시하고도 하나의 객체가 정상적으로 작동할 수 있게 만들어주는 행위이다.)
복습을 하는 시간을 가졌지만 확실히 이해하는데는 쉽지 않다. 어느 정도 더 많은 시간을 투자해야하는게 당여하기 때문에 너무 조급해하지는 않으려한다.