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 |
---|