MVC Model


: JSP 장점중의 하나는 비즈니스 로직과 표현을 분리할 수 있다는 점이다

웹 응용프로그램개발에서 비즈니스 로직과 표현의 분리는 다음과 같은

이점이 있다



. 디자이너는 표현에 집중하여 개발하고 프로그래머는 비즈니스 로직에

전념하여 개발하므로 효율성이 높아진다

. 웹 응용 프로그램의 수정이 쉽다.

. 웹 응용 프로그램의 확장이 쉽다.

. 웹 응용 프로그램의 유지보수가 쉽다.



MVC 는 Model , View , Controller 의 약자이다.


MVC 요소     구현 프로그램 역활


Model 자바빈즈 자료의 비즈니스 로직 처리

View JSP, HTML 표현(Presentation) 부분 처리

Controller Servlet, JSP 적절한 Model을 처리하여 뷰로 제어 이동

MVC 모델은 웹 응용 프로그램을 구성하는 서버 모듈을

사용자에게 보이는 부분을 View 로

자료와 비즈니스 로직 처리를 Model 로

그리고 이들 상호간의 흐름을 제어하는 Controller 로 분리하여

개발하는 모델이다.



1. HelloServlet


package kr.ac.servlet;


import java.io.IOException;

import java.io.PrintWriter;


import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;



public class HelloServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

       


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html; charset=UTF-8");

// HTML 을 생성 할 수 있는 PrinterWriter 객체 생성

PrintWriter out = response.getWriter();

out.println("<h2>Hello Servlet!!!</h2><br/>");

out.println("<h2>수선화 ~~~~!!!!</h2><br>");

out.println("<h2>목련 ~~~~!!!!</h2>");

}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// post() 도 모두 doGet() 메소드로 처리

doGet(request, response);

}


}

<HelloServlet.java>


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

  <display-name>login_mvc</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  <servlet>

    <servlet-name>HelloServlet</servlet-name>

    <servlet-class>kr.ac.servlet.HelloServlet</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>HelloServlet</servlet-name>

    <url-pattern>/HelloServlet</url-pattern>

  </servlet-mapping>

  

  <servlet>

  <description>MVC 로그인</description>

  <display-name>login process</display-name>

  <servlet-name>login process</servlet-name>

  <servlet-class>kr.ac.mvc.controler.UserControler</servlet-class>

  </servlet>

  

  <servlet-mapping>

  <servlet-name>login process</servlet-name>

  <url-pattern>/Login.do</url-pattern>

  </servlet-mapping>

  

</web-app>

<web.xml>




2. 로그인 폼


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>로그인 폼</title>

</head>

<body>


<center>

<h2>로그인 예제</h2>

<hr>


<form method="post" action="Login.do" name="form1">

<table width="250" border="1" align="center" bordercolor="skyblue">

<tr bgcolor="mistyrose">

<td colspan="2" height="22" align="center">

<b><font size="3">로그인</font></b>

</td>

</tr>

<tr bgcolor="Lightcyan">

<td>아이디</td>

<td><input type="text" name="userid" size=10></td>

</tr>

<tr bgcolor="Lightcyan">

<td>암호</td>

<td><input type="password" name="passwd" size=10></td>

</tr>

<tr bgcolor="Lightcyan">

<td>이름</td>

<td><input type="password" name="name" size=10></td>

</tr>

<tr>

<td colspan="2" align="center">

<input type="submit" name="submit" value="로그인">

<input type="reset" name="reset" value="취소">

</td>

</tr>

</table>

</form>

</center>

</body>

</html>

<index.html>


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

  <display-name>login_mvc</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  <servlet>

    <servlet-name>HelloServlet</servlet-name>

    <servlet-class>kr.ac.servlet.HelloServlet</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>HelloServlet</servlet-name>

    <url-pattern>/HelloServlet</url-pattern>

  </servlet-mapping>

  

  <servlet>

  <description>MVC 로그인</description>

  <display-name>login process</display-name>

  <servlet-name>login process</servlet-name>

  <servlet-class>kr.ac.mvc.controler.UserControler</servlet-class>

  </servlet>

  

  <servlet-mapping>

  <servlet-name>login process</servlet-name>

  <url-pattern>/Login.do</url-pattern>

  </servlet-mapping>

  

</web-app>

<web.xml>


package kr.ac.mvc.controler;


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 kr.ac.mvc.model.UserBean;


@WebServlet("/UserControler")

public class UserControler extends HttpServlet {

private static final long serialVersionUID = 1L;

       

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String userid = request.getParameter("userid");

String passwd = request.getParameter("passwd");

String name = request.getParameter("name");

UserBean user = new UserBean();

user.setUserid(userid);

user.setPasswd(passwd);

user.setName(name);

request.setAttribute("resultlogin", user.getCheckUser());

//처리 결과가 저장된 request를 전송하며 동시에 뷰인 login.jsp로 제어 이동

RequestDispatcher view = request.getRequestDispatcher("login.jsp");

view.forward(request, response);

}


//POST 요청 역시 doGet()에서 처리하도록 함.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

}

<UserControler.java>


package kr.ac.mvc.model;


public class UserBean {

private String userid;

private String passwd;

private String name;

private String dbUserid;

private String dbPasswd;

private String dbName;

// 생성자

public UserBean(){

// 인증에 사용할 기본값 설정,

// 현재 저장하는 사용자와 암호인 경우 로그인 성공

dbUserid = "mvc";

dbPasswd = "model";

dbName = "ldm";

}

// 아이디와 비밀번호가 맞는지 체크하는 메서드

public boolean getCheckUser() {

if(userid.equals(dbUserid) && passwd.equals(dbPasswd) && name.equals(dbName))

return true;

else

return false;

}

// getter, setter

public String getUserid() {

return userid;

}






public void setUserid(String userid) {

this.userid = userid;

}






public String getPasswd() {

return passwd;

}






public void setPasswd(String passwd) {

this.passwd = passwd;

}

public String getName() {

return name;

}






public void setName(String name) {

this.name = name;

}

}

<UserBean.java>


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>MVC 예제</title>

</head>

<body>


<%

Boolean res = (Boolean)request.getAttribute("resultlogin");

String userid = request.getParameter("userid");

if (res.booleanValue()){

out.println("사용자" + userid + "님, 로그인 하셨습니다. 반갑습니다");

}else{

out.println("사용자" + userid + "님, 암호가 다릅니다.");

}

%>

<hr size="5" color="red">


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:set var="result" value="${requestScope.resultlogin }"/>


<c:choose>

<c:when test="${result}">

사용자 ${param.userid}님, 로그인 하셨습니다. 반갑습니다.

</c:when>

<c:otherwise>

사용자 ${param.userid}님, 암호가 다릅니다.

<jsp:include page="index.html"/>

</c:otherwise>

</c:choose>

</body>

</html>

<login.jsp>


'MVC(Model-View-controller)' 카테고리의 다른 글

2. CreateTest  (0) 2017.04.11

+ Recent posts