본문 바로가기

Web

전자정부프레임워크 회원가입 기능 개발 순서도 + 코드 예제

반응형

✅ 프로젝트 구조 (회원가입 + 게시판 기능 반영)

 

Project
├── src/main/java
│   └── com/example/project
│       ├── web
│       │   ├── MemberController1.java       ← 회원가입 관련 요청 처리
│       │   ├── BoardController1.java        ← 게시판 관련 요청 처리
│       ├── service
│       │   ├── MemberService.java
│       │   ├── BoardService.java
│       │   ├── MemberVo.java
│       │   ├── BoardVo.java
│       │   └── impl
│       │       ├── MemberDao.java
│       │       ├── MemberServiceImpl.java
│       │       ├── BoardDao.java
│       │       ├── BoardServiceImpl.java
│       │       └── package-info.java
│       └── package-info.java
├── src/main/resources
│   ├── spring/
│   ├── config/
│   └── project/
│       ├── Member/
│       │   └── member0000sql.xml
│       └── Board/
│           └── board0000sql.xml
Project_HTTP
├── css/
└── js/
    └── project/
        ├── member00/
        │   └── member0000.js
        └── board00/
            └── board0000.js


📦 URL, JS, SQL 대응 예시

기능요청 URL컨트롤러 클래스JS 파일SQL XML 파일
회원가입 /member00/register.do MemberController1.java member0000.js member0000sql.xml
게시판 목록 /board00/list.do BoardController1.java board0000.js board0000sql.xml
 

✅ 전체 요청-응답 흐름 (도식)

 
  • [사용자 브라우저]
         │
         ▼ 1. 페이지 이벤트 발생 (ex. 회원가입 버튼 클릭)
    [JavaScript 호출]
        └── Project_HTTP/js/project/member00/member0000.js
                             │
                             ▼ 2. AJAX/form 요청 전송 (ex. /member00/register.do)
    [Controller 계층]
        └── web/MemberController1.java
                             │
                             ▼ 3. 서비스 호출
    [Service 계층]
        └── service/MemberService.java
            └── impl/MemberServiceImpl.java
                             │
                             ▼ 4. DAO 호출
    [DAO 계층]
        └── impl/MemberDao.java
                             │
                             ▼ 5. SQL 실행
    [MyBatis Mapper XML]
        └── resources/project/Member/member0000sql.xml
                             │
                             ▼
    [Database]
                             ▲
                             │ 6. 결과 반환
                             ▼
    [Service → Controller → JavaScript 응답 → 화면 갱신]

 

📌 게시판도 동일한 흐름으로:

  • JS → BoardController1 → BoardService → BoardDao → board0000sql.xml → DB

 

💡 정리

계층폴더 위치설명
View(JS) Project_HTTP/js/... 이벤트 발생 및 요청 전송
Controller web/*.java 요청 매핑, 서비스 호출
Service service/*.java, impl/*.java 비즈니스 로직 처리
DAO impl/*.java DB 접근
SQL 매퍼 resources/project/Member/*.xml 실제 SQL 정의
DB 데이터 저장소

 

 

✅ 예제 구성

📁 구조 기준:

- JS → member0000.js
- Controller → MemberController1.java
- Service → MemberService / MemberServiceImpl
- DAO → MemberDao
- VO → MemberVo
- SQL → member0000sql.xml

1. 💻 JavaScript (member0000.js)

function fn_register() {
    var formData = {
        name: $("#name").val(),
        email: $("#email").val()
    };

    $.ajax({
        url: "/member00/register.do",
        type: "POST",
        contentType: "application/json",
        data: JSON.stringify(formData),
        success: function(result) {
            alert("회원가입 완료!");
        },
        error: function() {
            alert("에러 발생");
        }
    });
}

 


2. 🎮 Controller (MemberController1.java)

 
 
@Controller
@RequestMapping("/member00")
public class MemberController1 {

    @Resource(name = "memberService")
    private MemberService memberService;

    @RequestMapping(value = "/register.do", method = RequestMethod.POST)
    public @ResponseBody String register(@RequestBody MemberVo vo) throws Exception {
        memberService.register(vo);
        return "SUCCESS";
    }
}

3. 🔧 Service 인터페이스 (MemberService.java)

public interface MemberService {
    void register(MemberVo vo) throws Exception;
}

4. 🔨 Service 구현체 (MemberServiceImpl.java)

@Service("memberService")
public class MemberServiceImpl implements MemberService {

    @Resource(name = "memberDao")
    private MemberDao memberDao;

    @Override
    public void register(MemberVo vo) throws Exception {
        memberDao.insertMember(vo);
    }
}

5. 🗂 DAO (MemberDao.java)

@Repository("memberDao")
public class MemberDao extends EgovAbstractMapper {
    
    public void insertMember(MemberVo vo) throws Exception {
        insert("Member.insertMember", vo);
    }
}

6. 📄 SQL XML (member0000sql.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="Member">

    <insert id="insertMember" parameterType="com.example.project.service.MemberVo">
        INSERT INTO member (
            name, email
        ) VALUES (
            #{name}, #{email}
        )
    </insert>

</mapper>

7. 📦 VO (MemberVo.java)

public class MemberVo {
    private String name;
    private String email;

    // getter/setter
}

📌 applicationContext.xml 또는 context-datasource.xml 설정 확인 필요

<!-- Mapper 설정 -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath:/project/Member/*.xml"/>
</bean>

✅ 요청 흐름 요약 (회원가입)

[JS] fn_register()
 → /member00/register.do
 → [Controller] MemberController1
 → [Service] MemberServiceImpl
 → [DAO] MemberDao
 → [XML SQL] member0000sql.xml
 → [DB] INSERT
 → SUCCESS 응답
 → JS에서 알림 처리

 

반응형

'Web' 카테고리의 다른 글

JSP 설명 및 요약  (0) 2025.06.11
Java 웹 프로젝트 전체 구성 정리(공부용)  (0) 2025.06.10