0408 Review

KDU·2022년 4월 8일
0

WEB공부

목록 보기
14/20

프로그램 체계화

 DB에서 추출해야하는 값과 매칭되는 속성들을 묶은 VO를 만들고, DB에 접근해야하는 페이지의 기능이 들어간 메서드들을 DAO에 구현하고, 기본적인 DB와의 연결과 해제를 Utility 클래스에 구현했다.
DAO, DTO, VO란?

 그렇게 JSP로 모든 기능을 구현하다가 Servlet으로 넘어갔는데, 그 과정이 MVC패턴과 Spring을 배우기 전에 MVC패턴 중 Servlet이 담당하는 Controller기능을 이해할때 도움이 되기 때문이다.
 문제는, 기본적인 회원가입과 로그인, 정보수정, 탈퇴 기능이 들어간 JSP파일들에서 Servlet기능을 추출해 재가공하는게 생각보다 쉽지 않았다는 것이다. (JSP파일에 JS를 넣은게 문제로 작용했다.)

<아래는 개인적인 해결책이다.>
Servlet이 할 수 있는 기능들을 전부 제거하고 Servlet에 담았다.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	request.setCharacterEncoding("UTF-8");
	UserVO vo = new UserVO();
	UserService us = new UserServiceI();
	HttpSession s = request.getSession();
	vo.setId(request.getParameter("id"));
	vo.setPw(request.getParameter("pw"));
		
	UserVO vo2 = us.loginUser(vo);
   
	int check = 0;
	if(vo2.getId() != null) { 
		check = 1;
		s.setAttribute("id", vo2.getId());
		s.setAttribute("name", vo2.getName());
	}
}

그리고 각Servlet이 무슨 작업을 했는지 JS에 알리기 위해 GET방식을 사용했다.

response.sendRedirect("/jsp/std0408_Servlet/sv_JsChecker.jsp?val=login&&check="+check);

GET방식으로 넘어간 Data는 JS와 만나서 다음 행동을 결정한다.

String val = request.getParameter("val");
int check = Integer.parseInt(request.getParameter("check"));

if(val.equals("login")) {
	if(check == 1) {
		response.sendRedirect("sv_main.jsp");
	} else {
		out.print("<script>alert('없는 계정입니다.');");
	    out.print("location.href='sv_login.jsp';</script>");
	}
}
profile
의문을 즐깁니다.

0개의 댓글

관련 채용 정보