개인간 렌탈 거래 플랫폼
- 22.09.12 ~ 22.09.30 (3주)
- 팀프로젝트(박찬호,장정훈,강전혁,이대곤)
- Java 11
- Spring, Spring Security
- Gradle
- AWS EC2, AWS RDS , Putty, FileZilla
- Oracle
- Jsp
- Tomcat
- Html, Css, Javascript, Jquery
이 서비스의 핵심 기능은 개인간 결제 및 채팅입니다.
사용자는 원하는 지역의 상품을 구매할 수 있고, 판매자와 채팅을 통해 원만한 거래를 할 수 있습니다.
또한 여러 카카오API를 통한 이용과 보안서비스를 통해 사용자의 편의 및 신뢰를 추구하였습니다.
핵심 기능 설명 펼치기
- 접속한 IP를 확인하여 회원가입 당시 등록된 IP와 다를 시 휴대폰 번호 인증을 통한 로그인을 하도록 하였습니다.
- Spring Security를 활용하여 BCryptPasswordEncoder 라는 암호화를 사용하여 비밀번호를 암호화 저장하였습니다.
-
Twilio API 와 Naver Mail API를 활용하여 인증 체계를 구성하였습니다.
- 카카오맵 API를 통한 사용자 편의 검색 기능 제공을 하였습니다.
- Json 과 Ajax를 통한 채팅을 제공하여 판매자와 구매자 사이의 편의성과 신뢰성을 주었습니다.
- 카카오 결제 API 를 통한 사용자 편의 시스템을 사용하였습니다.
- 카카오톡 API 를 활용해 상담사와 빠른 상담을 할 수 있는 사용자 편의 시스템을 사용하였습니다.
-
모든 프로젝트를 마무리하고 로컬에서의 테스트를 문제없이 진행하고 AWS에 배포를 하여 테스트를 하는데
배포할 때만 발생하는 문제를 발견하게 됐습니다. -
AWS의 EC2의 Unbuntu Lang은 UTF-8 형식을 사용하여 프로젝트에서 사용하는 ko_KR 형식과 달라 날짜 형식을 읽지 못하여 발생하는 문제였습니다.
-
이를 해결하기 위해 EC2에 맞는 형식으로 프로젝트의 sql문을 수정하였습니다.
기존 코드
<select id="GetAllReservationOnlyDates" resultType="reservation.model.ReservationBean">
select start_date,end_date
from reservation
where product_no = #{pno}
</select>
<br>
<insert id="InsertReservation">
insert into reservation values(reservation_seq.nextval,#{product_no},#{buyer_no},#{start_date},#{end_date},0,sysdate,'1',#{amount},null)
</insert>
개선된 코드
<select id="GetAllReservationOnlyDates" resultType="reservation.model.ReservationBean">
select TO_CHAR(start_date, 'YYYY-MM-DD') as start_date, TO_CHAR(end_date, 'YYYY-MM-DD') as end_date
from reservation
where product_no = #{pno}
</select>
<insert id="InsertReservation">
insert into reservation values(reservation_seq.nextval,#{product_no},#{buyer_no},to_date(#{start_date},'YY-MM-DD'),to_date(#{end_date},'YY-MM-DD'),0,sysdate,'1',#{amount},null)
</insert>
git push/pull 시 한글 깨짐
- Spring 설정에 UTF-8 설정이 안되어 있어서 한글이 깨지는 현상
- [ 해결 방법 ]
Github 사용 시 문제
AWS 재배포 시 이미지 삭제 문제
- 이미 업로드한 이미지들이 배포를 다시 하게 되면은 사라지는 현상이 발생
- [ 해결 방법 ]
MyBatis sql 부등호 인식 문제
- XML 파일에 sql 문을 작성하게 되는데 < 부등호를 TAG로 인식하기 때문에
"The content of elements must consist of well-formed character data or markup." 라는 에러가 발생 - [ 해결 방법 ]
Controller에서 RequestParam 사용시 주의할 점
-
Controller에서 RequestParam을 사용하여 변수를 받을 때 받아오는 변수가 존재하지 않으면 에러 발생
-
받아오는 변수가 없을 때도 Controller가 작동되게 해야하기 때문에 아래와 같은 코드를 입력해주면 됩니다.
required = false
Redirect 에 변수를 보낼 시 한글 깨짐 현상
-
Controller에서 다음 Controller로 변수를 담아 Redirect 를 하게 되면 한글이 깨지는 현상 발생
-
UTF-8 형식으로 Encoder 한 다음에 보내주면 됩니다.
keyword = URLEncoder.encode(keyword, "UTF-8");
프로젝트 개발 회고 :
- 이 프로젝트를 진행하면서 배포를 하게 됐었는데 배포를 마지막 구현을 다 한 뒤에 하루를 남긴 상태에서 진행하게 되느라 급하게 진행되어 여러 방법을 사용하지 못했던 게 아쉽습니다.
- Spring 버전이 낮아 WebSoket을 활용한 채팅을 활용하지 못한 점이 아쉬워 다음 프로젝트에서는 WebSoket 을 활용하여 채팅을 진행하게 되었습니다.
- 구현 전에 모든 방법과 상황을 파악하고 할 수 있는 기능, 기술 등을 계획을 정확하게 짠 후 진행하는 것이 프로젝트 진행하기에 문제가 없을 것 같다고 깨달았습니다.
- 팀 프로젝트를 진행하면서 모든 이가 하나라도 더 얻어갈 수 있도록 서로 돕고 지원하였습니다.
- 또한 팀프로젝트가 원할하게 진행될 수 있었던건 활기찬 분위기와 서로간의 의사소통이 중요하다고 생각합니다.