MVC 패턴으로 DB SELECT 하기

2022. 9. 24. 22:20·백엔드/Servlet

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>
  • get으로 보내기
<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에 뿌린다

  • forward 방식으로 값을 전달시켜준다
request.getRequestDispatcher("/user.jsp").forward(request, response);

'백엔드 > Servlet' 카테고리의 다른 글

Servlet  (0) 2022.10.02
MVC 패턴  (0) 2022.09.24
'백엔드/Servlet' 카테고리의 다른 글
  • Servlet
  • MVC 패턴
가든_
가든_
  • 가든_
    Code Garden
    가든_
  • 전체
    오늘
    어제
    • 글 목록 (60)
      • 프로그래밍 언어 (11)
        • JAVA (0)
        • C++ (2)
        • C# (9)
      • 개발툴 (24)
        • Visual Studio (0)
        • Visual Studio Code (1)
        • Eclipse (1)
        • Unity (19)
        • Unreal (0)
        • Spring (1)
        • SpringBoot (0)
        • Vue (2)
      • 디자인 패턴 (6)
      • 백엔드 (4)
        • MySQL (1)
        • Servlet (3)
      • 프론트엔드 (4)
        • HTML (3)
        • CSS (0)
        • Javascript (1)
      • 알고리즘 (10)
        • 공식 (3)
        • 백준 (6)
        • SW Expert Academy (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    FixedUpdate
    Reflex
    구조적 UML 다이어그램
    HTML
    Abstract Factory 패턴
    ()=>
    Adaptee
    Unity
    상태공간트리
    12738
    런타임 상수
    오브젝터 어댑터
    행동 UML 다이어그램
    Proxy 패턴
    다이어그램 그리기
    Adapter 패턴
    컴파일 상수
    Factory 패턴
    Java
    swea2112
    SetTile
    클래스 어댑터
    c#
    MVC
    DI
    UniRX
    chatGPT
    구조패턴
    스택
    RDBM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
가든_
MVC 패턴으로 DB SELECT 하기
상단으로

티스토리툴바