2022. 3. 10. 16:43ㆍ[Spring]_/[Spring]_포트폴리오 페이지 만들기
이전까지 db 연결 및 생태계를 이해하였으니 직접 데이터를 view 단에서 넣어보도록 하겠습니다.
Mybatis 의 fullconnection 기능을 사용하니 DAO는 사용하지 않고
주고받을 객체는 VO로 만들겠습니다.
view 단에서 데이터를 전달할 함수는 Fetch 함수를 사용하겠습니다.
디렉토리 ]
1] VO 선언입니다.
package com.yoon.model;
public class MemberVO {
private String memberId;
@Override
public String toString() {
return "MemberVO{" +
"memberId='" + memberId + '\'' +
", memberPw='" + memberPw + '\'' +
'}';
}
private String memberPw;
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getMemberPw() {
return memberPw;
}
public void setMemberPw(String memberPw) {
this.memberPw = memberPw;
}
}
DTO 처럼 getter 와 Setter가 있습니다.
2] Controller 부분
@Controller
public class menuController {
@Autowired
private MemberService memberservice;
@RequestMapping(value="/test/testlogin.do", method= RequestMethod.POST)
@ResponseBody
public String loginAuth(@RequestBody Map<String,String> map) throws Exception{
String ID = map.get("ID");
String PW = map.get("PW");
MemberVO member = new MemberVO();
member.setMemberId(ID); //회원 id
member.setMemberPw(PW); //회원 비밀번호
System.out.println("jsonElement\n = " + map);
memberservice.memberJoin(member);
return "";
}
}
view 단에서 url 요청시 응답할 Controller 부분입니다.
RequestMapping을 통해 해당 url 이 요청시 실행될 것이며, 요청방식은 POST로 받습니다.
받아온 값을 -> fetch로 전달한 JSON 형식의 데이터
를 키값을 기준으로 map 에 저장합니다.
그리고 전달받은 값에 ID 라는 key에 저장된 String 값을 ID 에 저장하고
마찬가지로 전달받은 값의 PW 라는 key에 할당된 String 값을 PW에 저장합니다.
그리고 VO에서 선언한 객체를 생성자를 통해 하나 만들고
setter의 메소드를 불러와서 각각 지정해줍니다.
그리고 상단의 Memberservice memberservice 이 부분이 서비스에 연결되는 부분입니다.
3-1 ] Service Interface
package com.yoon.service;
import com.yoon.model.MemberVO;
import java.util.List;
public interface MemberService {
public void memberJoin(MemberVO member) throws Exception;
public List<MemberVO> memberFind(MemberVO member) throws Exception;
}
MemberService 는 interface 로 생성합니다.
해당하는 메소드를 선언하고 이를 상속받을 MemberServiceImpl.java 파일을 만듭니다.
3-2 ] Service Implements
import com.yoon.mapper.MemberMapper;
import com.yoon.model.MemberVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class MemberServiceImpl implements MemberService{
@Autowired
MemberMapper membermapper;
@Override
public void memberJoin(MemberVO member) throws Exception {
membermapper.memberJoin(member);
}
@Override
public List<MemberVO> memberFind(MemberVO member) throws Exception {
return membermapper.memberFind(member);
}
}
interface에 지정한 메소드를 override 받고 MemberMapper membermapper; 부분으로 xml 의 쿼리를 불러옵니다.
이전에 설정한 RootContext.xml에서
<mybatis-spring:scan base-package="com.yoon.mapper"/>
해당 pakage 안의 mapper xml을 찾아 매칭시켜 줍니다.
만약 mapping이 안된다면 여러가지 이유가 있습니다.
1. xml 파일 내부에 오타
2. id , namespace 불일치
3. 저의 경우입니다. 이걸로 한참 해맸는데요. resources 파일 아래에 해당 com.yoon.mapper을 만들때 한번에 생성하였습니다. 하지만 이럴 경우 spring에서 경로를 찾지 못하는 일이 일어날 수 있습니다.
directory 생성시 하나하나씩만들었더니 정상작동하였습니다.
4 ] MemberMapper.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="com.yoon.mapper.MemberMapper">
<insert id="memberJoin">
insert into book_member values(#{memberId}, #{memberPw} )
</insert>
<insert id="memberFind">
select * from book_member where MEMBERID = #{memberId} AND MEMBERPW = #{memberPw}
</insert>
</mapper>
id, namespace 오타를 조심해야 합니다.
해당 insert 안에는 쿼리를 써줍니다.
쿼리는 db에 전달되어 실행되고 값을 반환하게 됩니다.
지금 사용한 쿼리는 단순 입력입니다.
5] view 단 만들기 => JSP
fetch 를 사용하였고
첫번째 인자로 url을
두번째로 data를 보냅니다.
data는 json 객체로 전달이 되며,
fetch의 경우 method,headers,body는 필수입니다.
idtext , pwtext는 각각의 textfield영역이고 그 입력된 value를 가져온다는 의미입니다.
실행결과 -WEB ]
실행결과 -DB ]
정상적으로 추가된 모습을 확인할 수 있습니다.
'[Spring]_ > [Spring]_포트폴리오 페이지 만들기' 카테고리의 다른 글
[포트폴리오 페이지]_9단계_CRUD 게시판 구현_(feat.목록 조회기능 구현) (0) | 2022.04.03 |
---|---|
[포트폴리오 페이지]_7단계_회원가입 구현(feat.oracle) (0) | 2022.03.31 |
[포트폴리오 페이지]_4단계 Spring 생태계 이해 (0) | 2022.03.10 |
[포트폴리오 페이지]_3단계 DB연결 (feat. oracle) (0) | 2022.03.10 |
[포트폴리오 페이지]_2단계 TAB구성_ feat(Spring) (0) | 2022.03.02 |