메인페이지 index.jsp
header와 footer파일을 나눠 모든 각각의 페이지에 삽입시켜줬다
헤더는 상단 버튼들 <login> <signup> <board>
퓨터는 기본 저작권 내용 ~~뭐 약관 등등~~ + <hr> 태그
index에는 정말 welcome to my first website 내용만 있다고 보면됨..
DB는 Mybatis로 오라클에 연결했고,
회원과 관련된 member mapper/ 게시판 글과 관련된 board mapper를 만들었다.
SqlSession으로 Dao가 Db 접근을 할 수 있게했다.
MyBatis란?
1. MyBatis 는 모든 쿼리문(SQL)을 Mapper 에 저장한다.
2. Mapper 에 접근해서 쿼리문을 실행하는 역할을 SqlSession 클래스가 담당한다.
3. SqlSession 클래스를 사용하려면 다음 과정을 거친다.
1) SqlSessionFactoryBuilder 를 통해서 SqlSessionFactory 를 만든다.
2) SqlSessionFactory 를 통해서 SqlSession 을 만든다.
4. DBService 클래스는 SqlSessionFactory 를 만들어서 리턴하는 역할이다.
mybatis.config package
1. sqlmapper-config.xml
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- Connection Pool 관리 -->
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@오라글계정주소" />
<property name="username" value="계정" />
<property name="password" value="비밀번호" />
</dataSource>
</environment>
</environments>
<!-- 어떤 mapper 들을 사용할 것인가? -->
<mappers>
<mapper resource="mybatis/mapper/member.xml"/>
<mapper resource="mybatis/mapper/board.xml"/>
</mappers>
</configuration>
2. DB연결하는 클라스 생성 DBService.java
:외부에서는 다음 과정으로 factory 를 가져다 사용한다.
1. DBService 객체를 생성한다.
DBService.getInstance()
2. DBService 객체를 이용해 getFactory() 를 호출한다.
DBService.getInstance().getFactory()
public class DBService {
// SqlSessionFactory 는 singleton pattern 으로 생성해야 한다.
// 필드
private SqlSessionFactory factory;
// 생성자 (factory 만드는 역할)
private DBService() {
try {
String resource = "mybatis/config/sqlmap-config.xml"; // 패키지 경로와 파일명에 따라서 작성해야 한다.
InputStream inputStream = Resources.getResourceAsStream(resource);
factory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (Exception e) {
// TODO: handle exception
}
}
// 생성자가 private 이므로 여기서 DBService() 를 new 해야 한다.
private static DBService service = new DBService();
// new DBService() 가 호출되면 SqlSessionFactory factory 가 생성된다.
// 생성된 factory 를 호출할 수 있는 DBService service 객체를 리턴할 수 있는 getter 를 만든다.
public static DBService getInstance() {
return service;
}
// private SqlSessionFactory factory 를 외부에 리턴하는 getter 를 만든다.
public SqlSessionFactory getFactory() {
return factory;
}
}
mybatis.mapper package
위에 언급했듯이 sql 쿼리문들을 처리할 mapper.xml 는 아래와같이 member/ board 나눠서 작성하였다.
이렇게 아이디를 나눠 한 기능당 하나씩 아이디를 달아서 쿼리문 작성
예) selectBymIdmPw 는 로그인 기능/ memberInsert는 회원가입기능
그에 따라 Dao와 Command를 구성했다.
예)
1. Dao 페이지 중 selectBymIdmPw 부분
public MemberDto selectBymIdmPw(MemberDto mDto) {
SqlSession ss = factory.openSession();
MemberDto resultDto = ss.selectOne("mybatis.mapper.member.selectBymIdmPw",mDto);
ss.close();
return resultDto;
}
2. LoginCommand
public class LoginCommand implements MemberCommand {
@Override
public ViewForward execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setCharacterEncoding("utf-8");
String mId = request.getParameter("mId");
String mPw = request.getParameter("mPw");
MemberDto mDto = new MemberDto();
mDto.setmId(mId);
mDto.setmPw(mPw);
//login user
MemberDto loginUser = MemberDao.getInstance().selectBymIdmPw(mDto);
HttpSession session = request.getSession();
if (loginUser != null) {
session.setAttribute("loginUser", loginUser);
}
ViewForward vf = new ViewForward();
vf.setPath("index.jsp");
vf.setRedirect(true);
return vf;
}
}
보드도 위 방법과 다를 것 없이 진행
보드다오, 보드커맨드 패키지 만들어 각각 연결, 컨트롤러를 이용해 뷰로 결과를 전송해줬다.
이렇게 로그인 페이지 완성!
'Project > 2. My First Website <Mybatis>' 카테고리의 다른 글
project 2.5 My first website/ 회원정보 변경 페이지 (0) | 2020.09.12 |
---|---|
project 2.4 My first website/ 회원탈퇴 페이지 (0) | 2020.09.08 |
project 2.3 My first website/ 회원가입 페이지 (0) | 2020.09.07 |
project 2. 2 My first website/ 아이디, 비밀번호 찾기 페이지 (0) | 2020.09.06 |
project 2. My first website (0) | 2020.09.01 |