✅ 프로젝트 구조 (회원가입 + 게시판 기능 반영)
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 대응 예시
회원가입 | /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 | — | 데이터 저장소 |
✅ 예제 구성
📁 구조 기준:
- Controller → MemberController1.java
- Service → MemberService / MemberServiceImpl
- DAO → MemberDao
- VO → MemberVo
- SQL → member0000sql.xml
1. 💻 JavaScript (member0000.js)
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)
@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)
void register(MemberVo vo) throws Exception;
}
4. 🔨 Service 구현체 (MemberServiceImpl.java)
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)
public class MemberDao extends EgovAbstractMapper {
public void insertMember(MemberVo vo) throws Exception {
insert("Member.insertMember", vo);
}
}
6. 📄 SQL XML (member0000sql.xml)
<!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)
private String name;
private String email;
// getter/setter
}
📌 applicationContext.xml 또는 context-datasource.xml 설정 확인 필요
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:/project/Member/*.xml"/>
</bean>
✅ 요청 흐름 요약 (회원가입)
→ /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 |