실습(MVC)
- [Web_JSP] 10 이어서
1.MemberDAO.java
package com.member.domain.dao;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.member.domain.vo.MemberVO;
import com.mybatis.config.MyBatisConfig;
public class MemberDAO {
SqlSessionFactory sqlSessionFactory = MyBatisConfig.getSqlSessionFactory();
SqlSession sqlSession;
public MemberDAO() {
sqlSession = sqlSessionFactory.openSession(true);
}
//회원가입
public void join(MemberVO memberVO) {
sqlSession.insert("Member.join", memberVO);
}
//아이디 중복검사
public boolean checkId(String memberId) {
return (Integer)sqlSession.selectOne("Member.checkId", memberId) == 1;
}
//회원 전체 목록
public List<MemberVO> selectMembers(){
return sqlSession.selectList("Member.selectMembers");
}
//로그인
public Integer login(HashMap<String, String> memberMap) {
return sqlSession.selectOne("Member.login", memberMap);
}
}
2. 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="Member">
<!-- 회원가입 -->
<insert id="join" parameterType="memberVO">
insert into tbl_member
(member_id, member_name, member_pw, member_gender, member_address, member_address_detail)
values(#{memberId}, #{memberName}, #{memberPw}, #{memberGender}, #{memberAddress}, #{memberAddressDetail})
</insert>
<!-- 아이디 중복검사 -->
<!-- 기본 자료형은 앞에 _를 붙이고, 클래스 자료형은 앞글자를 소문자로만 바꿔준다. -->
<select id="checkId" parameterType="string" resultType="int">
select count(member_id) from tbl_member where member_id = #{memberId}
</select>
<!-- 회원목록 -->
<select id="selectMembers" resultType="memberVO">
select member_number, member_id, member_name, member_pw, member_gender, member_address, member_address_detail
from tbl_member order by member_name desc
</select>
<!-- 로그인 -->
<select id="login" parameterType="map" resultType="_int">
select member_number from tbl_member
where member_id = #{memberId} and member_pw = #{memberPw}
</select>
</mapper>
3. MemberJoinOk.java
package com.member;
import java.io.IOException;
import java.util.Base64;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.member.action.Action;
import com.member.action.ActionInfo;
import com.member.domain.dao.MemberDAO;
import com.member.domain.vo.MemberVO;
public class MemberJoinOk implements Action{
@Override
public ActionInfo execute(HttpServletRequest req, HttpServletResponse resp) throws IOException{
req.setCharacterEncoding("UTF-8");
ActionInfo actionInfo = new ActionInfo();
MemberVO memberVO = new MemberVO();
MemberDAO memberDAO = new MemberDAO();
memberVO.setMemberId(req.getParameter("memberId"));
memberVO.setMemberName(req.getParameter("memberName"));
memberVO.setMemberPw(new String(Base64.getEncoder().encode(req.getParameter("memberPw").getBytes())));
memberVO.setMemberGender(req.getParameter("memberGender"));
memberVO.setMemberAddress(req.getParameter("memberAddress"));
memberVO.setMemberAddressDetail(req.getParameter("memberAddressDetail"));
memberDAO.join(memberVO);
// req.setAttribute("memberName", memberVO.getMemberName());
req.setAttribute("memberList", memberDAO.selectMembers());
System.out.println(memberDAO.selectMembers().get(0).getMemberName());
actionInfo.setRedirect(false);
actionInfo.setPath("/joinSuccess.jsp");
return actionInfo;
}
}
4. MemberLoginOk.java
package com.member;
import java.io.IOException;
import java.util.Base64;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.member.action.Action;
import com.member.action.ActionInfo;
import com.member.domain.dao.MemberDAO;
public class MemberLoginOk implements Action {
@Override
public ActionInfo execute(HttpServletRequest req, HttpServletResponse resp) throws IOException {
req.setCharacterEncoding("UTF-8");
ActionInfo actionInfo = new ActionInfo();
HttpSession session = req.getSession();
HashMap<String, String> memberMap = new HashMap<>();
MemberDAO memberDAO = new MemberDAO();
String memberId = req.getParameter("memberId");
String memberPw = req.getParameter("memberPw");
int memberNumber = 0;
memberPw = new String(Base64.getEncoder().encode(memberPw.getBytes()));
memberMap.put("memberId", memberId);
memberMap.put("memberPw", memberPw);
try {
// 로그인 실패시, null들어온다!
// 그래서 int로 못바꾸니까 Exception 뜸!
memberNumber = memberDAO.login(memberMap);
//여기 밑으로 내려오는 건 로그인 성공 시에만 가능
session.setAttribute("memberNumber", memberNumber);
//세션 초기화
// session.invalidate();
} catch (Exception e) {
//로그인 실패
System.out.println("로그인 실패");
actionInfo.setRedirect(false);
actionInfo.setPath("/login.jsp");
}
actionInfo.setRedirect(false);
actionInfo.setPath("/loginSuccess.jsp");
return actionInfo;
}
}
5. MemberFrontController.java
package com.member;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.ibatis.session.SqlSession;
import com.member.action.ActionInfo;
import com.member.domain.vo.MemberVO;
import com.mybatis.config.MyBatisConfig;
public class MemberFrontController extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doProcess(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doProcess(req, resp);
}
protected void doProcess(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String requestURL = req.getRequestURI();
String command = requestURL.substring(requestURL.lastIndexOf("/") + 1);
ActionInfo actionInfo = null;
if(command.equals("JoinOk.me")) {
actionInfo = new MemberJoinOk().execute(req, resp);
} else if(command.equals("Join.me")) {
actionInfo = new ActionInfo();
actionInfo.setRedirect(true);
actionInfo.setPath(req.getContextPath() + "/join.jsp");
} else if(command.equals("CheckIdOk.me")) {
new CheckIdOk().execute(req, resp);
} else if(command.equals("MemberLoginOk.me")) {
actionInfo = new MemberLoginOk().execute(req, resp);
} else {
// 404 일 때 출력할 에러 페이지 경로 작성
}
if(actionInfo != null) {
if(actionInfo.isRedirect()) {
resp.sendRedirect(actionInfo.getPath());
}else {
RequestDispatcher dispatcher = req.getRequestDispatcher(actionInfo.getPath());
dispatcher.forward(req, resp);
}
}
}
}
6. config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<typeAlias type="com.member.domain.vo.MemberVO" alias="memberVO"/>
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/form"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mybatis/mapper/MemberMapper.xml"/>
</mappers>
</configuration>
7. main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
8. index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:forward page="Main.main"/>
</body>
</html>
9. joinSuccess.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 성공</title>
</head>
<body>
<table border="1" style="margin: 0 auto;">
<tr>
<th>번호</th>
<th>이름</th>
<th>아이디</th>
<th>비밀번호</th>
<th>성별</th>
<th>주소</th>
<th>상세주소</th>
</tr>
<c:forEach var="member" items="${memberList}">
<c:if test="${member.getMemberName() != '한동석' }">
<tr>
<td><c:out value="${member.getMemberNumber()}"/></td>
<td><c:out value="${member.getMemberName()}"/></td>
<td><c:out value="${member.getMemberId()}"/></td>
<td><c:out value="${member.getMemberPw()}"/></td>
<td><c:out value="${member.getMemberGender()}"/></td>
<td><c:out value="${member.getMemberAddress()}"/></td>
<td><c:out value="${member.getMemberAddressDetail()}"/></td>
</tr>
</c:if>
</c:forEach>
</table>
</body>
</html>
'웹 개발 > JSP' 카테고리의 다른 글
[Web_JSP] 14 (0) | 2022.06.02 |
---|---|
[Web_JSP] 13 (0) | 2022.06.01 |
[Web_JSP] 11 (0) | 2022.05.30 |
[Web_JSP] 10 (0) | 2022.05.29 |
[Web_JSP] 09 (0) | 2022.05.28 |