반응형
전자정부프레임워크의 공통 컴포넌트 활용
전자정부프레임워크에서 제공하는 **공통 컴포넌트(Common Component)**를 이해하고 활용하는 방법을 배웁니다. 공통 컴포넌트는 전자정부프레임워크의 주요 장점 중 하나로, 인증, 권한 관리, 메일 발송 등 자주 사용되는 기능을 손쉽게 구현할 수 있습니다.
이번 글에서는 로그인 기능을 공통 컴포넌트를 활용하여 구현하는 과정을 설명하겠습니다.
1. 공통 컴포넌트 개요
1-1. 공통 컴포넌트란?
공통 컴포넌트는 전자정부프레임워크에서 제공하는 재사용 가능한 모듈로, 다양한 애플리케이션에서 필요한 기본 기능들을 제공합니다. 주요 컴포넌트는 다음과 같습니다:
- 사용자 인증 및 권한 관리
- 게시판 관리
- 공지사항
- 메일 발송
- 로그 관리
1-2. 공통 컴포넌트 설치
- 전자정부프레임워크 개발 환경 패키지에 포함된 공통 컴포넌트 ZIP 파일을 다운로드하여 프로젝트에 추가합니다.
- 필요한 SQL 파일을 실행하여 데이터베이스에 테이블을 생성합니다.
2. 공통 컴포넌트를 활용한 로그인 기능 구현
2-1. 사용자 테이블 생성
로그인 기능에 필요한 USER 테이블을 생성합니다.
src/main/resources/sql/user.sql:
CREATE TABLE USERS (
USER_ID VARCHAR(50) PRIMARY KEY,
PASSWORD VARCHAR(100) NOT NULL,
USER_NAME VARCHAR(100) NOT NULL,
ROLE VARCHAR(20) NOT NULL
);
INSERT INTO USERS (USER_ID, PASSWORD, USER_NAME, ROLE)
VALUES ('admin', 'password123', 'Administrator', 'ADMIN');
2-2. 로그인 Mapper 작성
SampleMapper.xml에 로그인 관련 SQL을 추가합니다.
<select id="selectUser" parameterType="map" resultType="map">
SELECT USER_ID, PASSWORD, USER_NAME, ROLE
FROM USERS
WHERE USER_ID = #{userId} AND PASSWORD = #{password}
</select>
3. 로그인 Service 및 DAO 작성
3-1. DAO 작성
LoginDAO.java:
@Repository("loginDAO")
public class LoginDAO {
@Autowired
private SqlSession sqlSession;
public Map<String, Object> selectUser(Map<String, Object> params) throws Exception {
return sqlSession.selectOne("egovframework.example.sample.service.impl.SampleMapper.selectUser", params);
}
}
3-2. Service 작성
LoginService.java:
public interface LoginService {
Map<String, Object> login(Map<String, Object> params) throws Exception;
}
LoginServiceImpl.java:
@Service("loginService")
public class LoginServiceImpl implements LoginService {
@Resource(name = "loginDAO")
private LoginDAO loginDAO;
@Override
public Map<String, Object> login(Map<String, Object> params) throws Exception {
return loginDAO.selectUser(params);
}
}
4. 로그인 Controller 작성
LoginController.java:
@Controller
public class LoginController {
@Resource(name = "loginService")
private LoginService loginService;
@RequestMapping(value = "/login.do", method = RequestMethod.GET)
public String loginPage() {
return "login/login";
}
@RequestMapping(value = "/login.do", method = RequestMethod.POST)
public String loginProcess(@RequestParam Map<String, Object> params, Model model, HttpSession session) throws Exception {
Map<String, Object> user = loginService.login(params);
if (user != null) {
session.setAttribute("USER", user);
return "redirect:/main.do";
} else {
model.addAttribute("errorMessage", "Invalid username or password.");
return "login/login";
}
}
@RequestMapping("/logout.do")
public String logout(HttpSession session) {
session.invalidate();
return "redirect:/login.do";
}
}
5. 로그인 JSP 작성
5-1. 로그인 페이지
/webapp/WEB-INF/views/login/login.jsp:
<form action="login.do" method="post">
<div>
<label for="userId">User ID:</label>
<input type="text" name="userId" id="userId" required />
</div>
<div>
<label for="password">Password:</label>
<input type="password" name="password" id="password" required />
</div>
<div>
<button type="submit">Login</button>
</div>
<c:if test="${not empty errorMessage}">
<div style="color: red;">${errorMessage}</div>
</c:if>
</form>
5-2. 메인 페이지
/webapp/WEB-INF/views/main.jsp:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="true" %>
Welcome, ${sessionScope.USER.USER_NAME}!
Logout
6. 테스트 및 실행
- 서버를 시작하고 웹 브라우저에서 로그인 페이지(http://localhost:8080/login.do)에 접속합니다.
- 다음 계정 정보를 입력합니다:
- User ID: admin
- Password: password123
- 로그인 성공 시 메인 페이지로 이동하고 사용자 이름이 표시됩니다.
- 로그아웃 버튼을 클릭하면 세션이 종료되고 로그인 페이지로 돌아옵니다.
마무리
전자정부프레임워크의 공통 컴포넌트를 활용하여 로그인 기능을 구현했습니다. 이러한 공통 컴포넌트를 사용하면 반복적인 기능을 효율적으로 개발할 수 있습니다.
다음 글에서는 전자정부프레임워크에서 게시판 관리 구현에 대해 다룰 예정입니다.
반응형
'개발 > 전자정부프레임워크' 카테고리의 다른 글
전자정부프레임워크에서 트랜잭션 처리하기 (0) | 2024.12.24 |
---|---|
전자정부프레임워크의 MyBatis 활용 기본 (0) | 2024.12.23 |
전자정부프레임워크 데이터베이스 연동 설정 (1) | 2024.12.23 |
전자정부프레임워크 프로젝트 디렉토리 구조 이해 (0) | 2024.12.23 |
전자정부프레임워크 개발 환경 구축 (0) | 2024.12.23 |