[Web] MVC

soyeonยท2022๋…„ 7์›” 26์ผ
0
post-thumbnail

MVC (Model View Controller)

: software system์„ 3๊ฐ€์ง€ type์˜ component๋กœ ๋ถ„ํ• ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ„ด์ด๋‹ค.

MVC๋ฅผ ํฌํ•จํ•œ ๋„์‹

MVC๋ฅผ ์ด์šฉํ•ด login๊ณผ ๋„์„œ๊ฒ€์ƒ‰ ๊ตฌํ˜„

๋กœ๊ทธ์ธ

  1. Database ์ค€๋น„
CREATE DATABASE bookstore;

USE bookstore;

CREATE TABLE members (
	id	 VARCHAR(30) NOT NULL PRIMARY KEY,
    pw	 VARCHAR(30) NOT NULL,
    name VARCHAR(30) NOT NULL
);

INSERT INTO members VALUES('hong', 'test1234', 'ํ™๊ธธ๋™');
INSERT INTO members VALUES('kim', 'test1234', '๊น€์—ฐ์•„');
  1. ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์ฝ”๋“œ๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•ด webapp/member ํด๋” ์ƒ์„ฑ

  2. ์ฝ”๋“œ

  • member/login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div>๋กœ๊ทธ์ธํ•˜์„ธ์š”!</div><br><br>
	<form action="/book/login" method="POST">
		ID : <input type="text" name="userID"><br><br>
		PW : <input type="password" name="userPW"><br><br>
		<input type="submit" value="๋กœ๊ทธ์ธ">
	</form>
</body>
</html>
  • member/loginFail.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	๋กœ๊ทธ์ธ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค!
</body>
</html>
  • member/loginSuccess.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    import="member.vo.Member"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<% Member member = (Member) request.getAttribute("member"); %>
	<%= member.getName() %>๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.
</body>
</html>
  • java/member/vo/Member.java
package member.vo;

public class Member {
	
	private String id;
	private String pw;
	private String name;
	
	public Member() {
		
	}
	
	public Member(String id, String pw, String name) {
		super();
		this.id = id;
		this.pw = pw;
		this.name = name;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPw() {
		return pw;
	}

	public void setPw(String pw) {
		this.pw = pw;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
  • java/memver/dao/MemberDAO.java
package member.dao;

import member.vo.Member;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class MemberDAO {
	
	private DataSource ds;
	
	public MemberDAO() throws Exception  {
		Context init = new InitialContext();
		ds = (DataSource)init.lookup("java:comp/env/jdbc/MySQLDB");
	}
	
	public Member select(Member member) throws Exception {
		Connection con = ds.getConnection();
		System.out.println("connection ํš๋“ ์„ฑ๊ณต!");
		
		String sql = "SELECT * FROM members WHERE id = ? AND pw = ?";
		PreparedStatement pstmt = con.prepareStatement(sql);
		pstmt.setString(1, member.getId());
		pstmt.setString(2, member.getPw());
		
		ResultSet rs = pstmt.executeQuery();
		if(rs.next()) {
			// ๋กœ๊ทธ์ธ์ด ๋œ๋‹ค๋Š” ์˜๋ฏธ
			member.setName(rs.getString("name"));
			return member;
		}
		return null;
	}
}
  • java/member/service/MemberService.java
package member.service;

import member.dao.MemberDAO;
import member.vo.Member;

public class MemberService {
	
	// login ์ฒ˜๋ฆฌํ•˜๋Š” business method
	public Member login(Member member) {
		
		// ๋กœ๊ทธ์ธ์ด ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋กœ์ง ์ฒ˜๋ฆฌ
		// Database ์ฒ˜๋ฆฌ
		// Database ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด DAO๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.(class๋„ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.)
		try {
			MemberDAO dao = new MemberDAO();
			member = dao.select(member);	
		} catch (Exception e) {
			System.out.println(e);
		}
		
		return member;
	}
}
  • java/member/controller/LoginController.java
package member.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import member.service.MemberService;
import member.vo.Member;

/**
 * Servlet implementation class LoginController
 */
@WebServlet("/login")
public class LoginController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginController() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 1. ์ž…๋ ฅ๋ฐ›๊ณ 
		String id = request.getParameter("userID");
		String pw = request.getParameter("userPW");
		
		// 2. ๋กœ์ง ์ฒ˜๋ฆฌ
		// 	  ๋กœ์ง ์ฒ˜๋ฆฌ ํ•˜๊ธฐ ์œ„ํ•ด์„œ service ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ(service class๊ฐ€ ํ•„์š”)
		//	  ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž…๋ ฅ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ service์— ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด VO๊ฐ€ ํ•„์š”ํ•˜๋‹ค
		// 	  VO๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด class๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
		Member member = new Member();
		member.setId(id);
		member.setPw(pw);
		
		MemberService service = new MemberService();
		member = service.login(member);
		
		// 3. ์ถœ๋ ฅ
		// 	  ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜๋ฉด member vo ๊ฐ์ฒด ์•ˆ์— ๋กœ๊ทธ์ธํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.
		if(member != null) {
			// ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜๋ฉด JSP๋ฅผ ์ด์šฉํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.
			// member vo ๊ฐ์ฒด๋ฅผ JSP์—๊ฒŒ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.
			// ์ฆ‰, controller servlet์ด request๋ฅผ ์ „๋‹ฌํ•ด์„œ ๋‹ค๋ฅธ ์„œ๋ธ”๋ฆฟ(JSP)์„ ํ˜ธ์ถœ
			RequestDispatcher rd = request.getRequestDispatcher("/member/loginSuccess.jsp");
			request.setAttribute("member", member);
			rd.forward(request, response);
		} else {
			response.sendRedirect("/book/member/loginFail.html");
		}
	}

}

0๊ฐœ์˜ ๋Œ“๊ธ€