1. .jsp에서 클라이언트의 입력 값을 controller로 보내기
- post으로 보내기
- name, value로 값이 전해진다
- post와 get 방식 모두 사용 가능하다
<form id="form-no-param" method="post" action="${root}/user">
<input type="hidden" id="act" name="act" value="login">
<input type="hidden" id="id" name="id" value="${user.id}">
<input type="hidden" id="pwd" name="pwd" value="${user.pwd}">
</form>
<a href="book?action=login&id=${user.id}&pwd=&{user.pwd}">로그인</a>
2. Controller에서 값 받기
- doPost에서 한글 인코딩 설정해주고
- doGet에서 값을 받아서 해당하는 함수로 보내준다.(⇒ 관리자 역할)
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String act = request.getParameter("act");
String path = "/index.jsp";
try {
if("login".equals(act)) {
path = login(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
doGet(request, response);
}
3. (Controller) → (Model) Service 호출
private String login(HttpServletRequest request, HttpServletResponse response) {
String userId = request.getParameter("userid");
String userPwd = request.getParameter("userpwd");
try {
MemberDto member = memberService.login(userId, userPwd);
}
4. (Model) Service → (Model) Dao 호출
public MemberDto getMember(String userId, String userPwd) throws Exception {
return memberDao.loginMember(userId, userPwd);
}
5. (Model) Dao → DB
- Connection, PreparedStatememt, ResultSet을 선언한다
- Connection : DB와 연결 시키는 객체
- PreparedStatement : SQL 실행 시키는 객체
- ResultSet : SELECT가 실행된 결과가 저장된 객체
- DB와 연결한다.
- conn = dbUtil.getConnection();
- sql문을 작성하고 실행시킨다
- pstmt = conn.prepareStatement(sql.toString());
- 결과 값을 저장한다
- memberDto.setUserName(rs.getString("user_name"));
- 값 리턴 (Dao → Service → Controller)
public MemberDto loginMember(String userId, String userPwd) throws SQLException {
MemberDto memberDto = null;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = dbUtil.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("select * \\n");
sql.append("from members \\n");
sql.append("where user_id = ? and user_password = ?");
pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1, userId);
pstmt.setString(2, userPwd);
rs = pstmt.executeQuery();
if(rs.next()) {
memberDto = new MemberDto();
memberDto.setUserId(userId);
memberDto.setUserName(rs.getString("user_name"));
memberDto.setUserPwd(rs.getString("user_password"));
}
} finally {
dbUtil.close(rs, pstmt, conn);
}
return memberDto;
}
6. (Controller) → (VIEW)리턴 받은 값을 JSP에 뿌린다
request.getRequestDispatcher("/user.jsp").forward(request, response);