다가오는 다음을 향해
[Spring MVC] 기본동작 구현 본문
[ 개발환경 ]
MacBook Air M1 2020년형
eclipse [2021-3 var]
Java [zulu-8]
JSP
Tomcat [Apache Tomcat/9.0.58]
[ version ]
- springframework - 4.3.14
- aspectj - 1.8.9
- Test - 4.12
Maven repository
- mysql-connector-java 8.0.27
- spring-jdbc - 4.3.14
- spring-test - 4.3.14
mybatis - 3.4.4
mybatis-spring - 1.3.1
기본동작구현
✎ 예제 : Emp 테이블의 전체 사원수를 구하세요. (param 없음)
- 요청할 파라미터가 없어도 된다
- 반환타입은 int 이다.
실행 순서는 Controller->Service->DAO->mybatis 이지만
DAO는 mybatis를 호출
Service는 DAO 메소드를 호출하기 때문에
호출해야하는 순서의 반대로 work를 작성해야한다.
1. view
<a href="empcount">전체사원수 출력:</a>${cnt}
2. emp package 및 Contoller 작성
package kr.co.dong.emp;
public class EmpController {
}
3. empDAO, empService Interface 작성
▼ EmpDAO.java
package kr.co.dong.emp;
public interface EmpDAO {
public int empCount() throws Exception;
}
▼ EmpService.java
package kr.co.dong.emp;
public interface EmpService {
public int empCount() throws Exception;
}
4. empMapper.xml 에 sql 질의문 작성
▼ empMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kr.co.dong.empMapper">
<select id="cnt" resultType="int">
select count(*) from emp
</select>
</mapper>
* 주의점
처음엔 질의문을 한꺼번에 작성하지 말고 1개씩 작업하여 확인해야한다.
( mapper 오류 시 Server 동작하지 않기 때문에 오류 원인을 찾는데 시간소요)
5. contrller 구현
▼ EmpController.java
package kr.co.dong.emp;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import kr.co.dong.HomeController;
@Controller
public class EmpController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@Inject
private EmpService service; // 주입(new 생성) 관련된 interface호출
@RequestMapping(value="empcount", method=RequestMethod.GET)
public ModelAndView empCount() throws Exception {
logger.info("전체사원 수 조회로 이동");
// service 호출하며 결과값 저장
int cnt = service.empCount();
ModelAndView mav = new ModelAndView();
mav.addObject("cnt",cnt); // 결과값 주입
mav.setViewName("main"); // view로 보냄
return mav;
}
}
6. EmpDAOImpl 구현
1. @Repository ->클래스 위에 작성
2. mybatis 객체 생성 (SqlSession클래스)
3. mapper의 nameSpace를 지정
▼ EmpDAOImpl.java
package kr.co.dong.emp;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
@Repository
public class EmpDAOImpl implements EmpDAO {
@Inject // or @Autowired
private SqlSession sqlSession;
@Override
public int empCount() throws Exception {
return sqlSession.selectOne("kr.co.dong.empMapper.cnt"); // nameSpase.ID , paramType
}
}
7. EmpService 구현
1. @Repository ->클래스 위에 작성
2. @Inject로 EmpDAO 주입
▼ EmpServiceImpl.java
package kr.co.dong.emp;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
@Service
public class EmpServiceImpl implements EmpService {
@Inject
private EmpDAO dao; // 주입
@Override
public int empCount() throws Exception {
return dao.empCount();
}
}
결과 화면
[참고] sever 실행 시 404 에러 발생 시 확인 사항
1. consol 메세지 확인.
2. controller 확인.
3. DB. XML환경 깨졌는지 확인.
'국비학원 공부노트 > Spring MVC' 카테고리의 다른 글
[Spring MVC] 댓글 구현(게시판 구현 후 ) (0) | 2022.04.14 |
---|---|
[Spring MVC] 게시판 구현 (0) | 2022.04.13 |
[Spring MVC] DB 로그인, 로그아웃 구현 (0) | 2022.03.16 |
[Spring MVC] JSTL Templates 추가 (0) | 2022.03.10 |
[Spring MVC] Server Auto Reload 변경 (0) | 2022.03.10 |