2022.06.19
이전 작업에 프로젝트 로그인 페이지를 걸어두고 호출하는데 까지 성공하였다.
오늘 작업은 오라클 연동 DB작동 확인까지 할 계획
1. 인덱스 페이지 다시만들기
어제 만들어 둔 index.jsp는 login페이지 로 바꿔주고 새롭게 index 페이지를 생성 하였다.
홈이동, 로그인, 로그아웃 정보수정 태그가 담긴 header.jsp 도 만들어서 붙여주었다.
로그인 된 회원만 각 페이지 링크가 보이고
로그인이 안되었으면 로그인 창만 띄어줄 생각으로 아직 구현은 안한 상태.
2. 회원가입 부분
id, pw, name, 연락처를 받는 양식
java script로 체크함수 만들어 null 값이나 길이 제한을 두었다.
function joinCheck() {
if(document.reg_frm.mid.value.length == 0) {
alert("아이디를 입력해주세요.");
reg_frm.mid.focus();
return;
}
if(document.reg_frm.mid.value.length < 4) {
alert("아이디는 4글자 이상이어야 합니다.");
reg_frm.mid.focus();
return;
}
if(document.reg_frm.mpw.value != document.reg_frm.mpw_check.value) {
alert("비밀번호가 일치하지 않습니다. 비밀번호를 확인해주세요.");
reg_frm.mpw.focus();
return;
}
document.reg_frm.submit();
}
만들어진 js를 jsp에서 불러준다.
<script type="text/javascript" src="${pageContext.request.contextPath }/resources/js/join.js"></script>
Dao
joinDao 회원가입에 변수를 받아 입력하는데 사용
chekIdDao 아이디를 받아 존재하는지 확인
chekPwDao 아이디와 패스워드를 받아 일치하는지 확인
public interface IDao {
//memberDao
public void joinDao(String mid, String mpw, String mname, String mphone);
public int checkIdDao(String mid);
public int checkPwDao(String mid, String mpw);
}
mapper
Dao와 mapping 하고 sql문을 작성
<?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.uragil.LMS.dao.IDao">
<insert id="joinDao">
INSERT INTO b_member (mid, mpw, mname, mphone)VALUES(#{param1},#{param2},#{param3},#{param4})
</insert>
<select id="checkIdDao" resultType="int">
SELECT COUNT(*) FROM b_member WHERE mid = #{param1}
</select>
<select id="checkPwDao" resultType="int">
SELECT COUNT(*) FROM b_member WHERE mid = #{param1} AND mpw = #{param2}
</select>
</mapper>
build gradle에서 sqlsessiong 사용을 위해
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
application.porperties 에서 mybatis를 설정해준다
mybatis.mapper-locations=mybatis-mapper/**/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
logging.level.com.uragil.LMS.dao=TRACE
controller
join 과 joinOk 부분 추가
joinOk 가입정보를 Post방식으로 가져온 정보를 request.getParameter로 받는다.
겹치는 id 있는지 확인후 정보를 업데이트
@Controller
public class WebController {
@Autowired
private SqlSession sqlSession; //sqlsession 사용을 위해 autowired 해준다
@RequestMapping(value="/join")
public String join() {
return "join";
}
@RequestMapping(value ="/joinOk", method=RequestMethod.POST)
public String joinOk(HttpServletRequest request, Model model) {
String mid = request.getParameter("mid");
String mpw = request.getParameter("mpw");
String mname = request.getParameter("mname");
String mphone = request.getParameter("mphone");
IDao dao = sqlSession.getMapper(IDao.class);
int checkId = dao.checkIdDao(mid);
if (checkId != 1) {
dao.joinDao(mid, mpw, mname, mphone);
HttpSession session = request.getSession();
session.setAttribute("id", mid);
session.setAttribute("name", mname);
model.addAttribute("mname", mname);
model.addAttribute("mid", mid);
}
model.addAttribute("checkId", checkId);
return "joinOk";
}
이제 회원가입 버튼을 누르면 위 스크립트의 함수를 거쳐 가입정보가 insert 되어진다.
여기까지 3시간 정도 소요
에러나서 줘패버리고 싶었던 부분
1. 회원가입 버튼을 아무리 눌러도 작동을 안한다
<script type="text/javascript" src="${pageContext.request.contextPath }/resources/js/join.js"></script>
만들어둔 스크립트를 불러오는 것이 빠져있었다.
2. 서버 실행시 에러 발생
Caused by: java.lang.IllegalStateException: Failed to introspect Class [Controller] from ClassLoader
Controller 부분에 에러라고 생각해서 컨트롤러만 들여다 보는데 해결이 안됨
하나하나 뒷걸음질 치며 찾아보다가 mapper에서 대소문자 오타 발견 기쁘면서 허무함
<mapper namespace="IDao.java의 path>
여기까지
DB연결 작동까지 확인완료
블로그 작성에 걸리는 시간이 프로젝트 작업시간 못지 않게 걸리는거 시롸임?
'STUDY > Spring boot' 카테고리의 다른 글
Spring Boot로 만드는 도서관리시스템웹 프로젝트_05 (0) | 2022.06.29 |
---|---|
Spring Boot로 만드는 도서관리시스템웹 프로젝트_04 (6) | 2022.06.27 |
Spring Boot로 만드는 도서관리시스템웹 프로젝트_03 (0) | 2022.06.22 |
Spring Boot로 만드는 도서관리시스템웹 프로젝트_01 (0) | 2022.06.18 |
Spring Boot 홈페이지 제작 에러노트 (0) | 2022.06.15 |