2023.07.13 - [백/전자정부프레임워크] - 전자정부 프레임워크 소개 및 설치, 사용
프로젝트 생성 및 테스트
톰캣에서 아까 프로젝트(egov_01)빼고 이것만 추가
<%@ 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>
</head>
<body>
<form action="deptWriteSave.do" method="post">
<table>
<tr>
<th>부서번호</th>
<td><input type="text" name="deptno"></td>
</tr>
<tr>
<th>부서이름</th>
<td><input type="text" name="dname"></td>
</tr>
<tr>
<th>부서위치</th>
<td><input type="text" name="loc"></td>
</tr>
<tr align="center">
<td colspan="2">
<button type="submit">저장</button>
</td>
</tr>
</table>
</form>
</body>
</html>
이제 컨트롤러 만들러- 이름은 DeptController
컨트롤러 어노테이션 달아주고, sl4j는.. 없다!
=>pom.xml에 추가해줘야함
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
package egovframework.example.sample.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import lombok.extern.slf4j.Slf4j;
@Controller
@Slf4j
public class DeptController {
@RequestMapping(value = "/deptWrite.do")
public String deptWrite() {
return "dept/deptWrite";
}
@ResponseBody
@RequestMapping(value = "/deptWriteSave.do")
public String deptWriteSave(String deptno, String dname) {
log.info("부서번호 : "+deptno);
log.info("부서이름 : "+dname);
return "writeSave";
}
}
이제 vo를 추가해보자(service패키지에 추가하면됨)
package egovframework.example.sample.service;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class DeptVO {
private int deptno;
private String dname;
private String loc;
}
이제 객체가 생겼으니 객체에 담아서 사용하자
db연결
lib에
ojdbc 추가
pom.xml
<!-- 오라클 설정 start -->
<repository>
<id>codelds</id>
<url>https://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
<!-- 오라클 설정 end -->
</repositories>
<dependencies>
<!-- 오라클 설정 start -->
<dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
<version>6-11</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ojdbc6.jar</systemPath>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- 오라클 설정 end -->
repository와 dependencies 사이에 넣어줌
테스트 실행용 hsql지우고 밑에 주석처리 된 오라클 복사해와서 name, password, url 끝 xe로 바꾸기
dao만들자
serviceimpl 패키지에 만들면된다
boot는 dao를 mapper어노테이션으로 썼지만 전자정부는 repository로 씀
EgovAbstractDAO=> 전자정부가 제공하는 것, 그대로 extend해서 사용하면됨
저렇게 sample을 옆에 띄워놓고 형식 보면서 만들면됨
package egovframework.example.sample.service.impl;
import org.springframework.stereotype.Repository;
import egovframework.example.sample.service.DeptVO;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
//@Repository("deptDAO"): 스프링 컨테이너가 관리하는 빈(스프링이 관리하는 객체)
@Repository("deptDAO")
public class DeptDAO extends EgovAbstractDAO {
public String inserDept(DeptVO vo) throws Exception {
return (String) insert("deptDAO.insertDept", vo);
}
}
이제 XML만들기
전자정부는 MYBATIS 이전 IBATIS사용
그럼 저 경로에 xml이 있겟지
이제 컨피그 설정파일에
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<!-- <sqlMap namespace="Sample"> -->
<!-- 고유한 이름, 안에서 사용하진 않는다 -->
<sqlMap namespace="Dept">
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<!-- type="" : 리턴타입 alias="deptVO" 로 받아서 처리 -->
<typeAlias alias="deptVO" type="egovframework.example.sample.service.DeptVO"/>
<!-- deptDAO.insertDept : dao에서 호출되는 이름과 매칭 -->
<insert id="deptDAO.insertDept">
<!-- ##: dao에서 넘어오는 vo -->
<!-- "deptDAO.insertDept", vo -->
<![CDATA[
INSERT INTO dept
(deptno
,dname
,loc )
VALUES (
#deptno#
,#dname#
,#loc# )
]]>
</insert>
</sqlMap>
Dept_SQL 일단 바꾼 부분만 적음
앨리아스 중복되지않게 주의! sample그대로쓰면 중복되서 오류남
이제 서비스쪽가서
아까처럼
package egovframework.example.sample.service;
public interface DeptService {
// 접근 지정자 없으므로 default임
String insertDept(DeptVO vo) throws Exception;
}
impl도 똑같은 방식으로,
EgovAbstractServiceImpl extends 해야함
package egovframework.example.sample.service.impl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import egovframework.example.sample.service.DeptService;
import egovframework.example.sample.service.DeptVO;
import egovframework.example.sample.service.EgovSampleService;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
//@Service("deptService"): 컨트롤러에서 deptService로 연결
@Service("deptService")
public class DeptServiceImpl extends EgovAbstractServiceImpl implements DeptService {
// @Resource(name = "deptDAO") : deptDAO 이름으로 dao 사용(ibatis방식, mybatis는 매퍼)
@Resource(name = "deptDAO")
private DeptDAO deptDAO;
@Override
public String insertDept(DeptVO vo) throws Exception {
return deptDAO.inserDept(vo);
}
}
이제 컨트롤러로 고고
package egovframework.example.sample.web;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import egovframework.example.sample.service.DeptService;
import egovframework.example.sample.service.DeptVO;
import egovframework.example.sample.service.EgovSampleService;
import lombok.extern.slf4j.Slf4j;
@Controller
@Slf4j
public class DeptController {
// @Resource(name = "deptService") : DeptServiceImpl에 @Service로 연결
@Resource(name = "deptService")
private DeptService deptService;
@RequestMapping(value = "/deptWrite.do")
public String deptWrite() {
return "dept/deptWrite";
}
@RequestMapping(value = "/deptWriteSave.do")
// public String deptWriteSave(String deptno, String dname, String loc) {
public String deptWriteSave(DeptVO vo) throws Exception {
// log.info("부서번호 : "+deptno);
// log.info("부서이름 : "+dname);
log.info("부서번호 : "+vo.getDeptno());
log.info("부서이름 : "+vo.getDname());
log.info("부서위치 : "+vo.getLoc());
String result = deptService.insertDept(vo);
log.info("@# result ===>"+ result);
return "";
}
}
이대로 실행하면 dbcp2 이런 버그가 난다 => 전자정부프레임워크 고유 버그
context-datasource.xml에 가서
이제 잘 들어감
'백 > 전자정부프레임워크' 카테고리의 다른 글
전자정부 프레임워크 5- 코드관리 (0) | 2023.07.18 |
---|---|
전자정부 프레임워크4- update (0) | 2023.07.17 |
전자정부 프레임워크3- select, delete (0) | 2023.07.14 |
전자정부 프레임워크, ibatis에 대해 궁금한 점 gpt에게 묻기 (0) | 2023.07.14 |
전자정부 프레임워크 소개 및 설치, 사용 (0) | 2023.07.13 |