headfisrt servlet&jsp chapter 3

25
Servlets & JSP 3장

Upload: j-b

Post on 08-Aug-2015

126 views

Category:

Software


0 download

TRANSCRIPT

Page 1: HeadFisrt Servlet&JSP Chapter 3

Servlets & JSP3 장

Page 2: HeadFisrt Servlet&JSP Chapter 3

오늘은 MVC 튜토리얼을 진행할꺼에요

Page 3: HeadFisrt Servlet&JSP Chapter 3

M• 모델

• 비지니스 모델

• 쉽게 생각해서 HttpServlet 을 상속받은 JAVA 파일

Page 4: HeadFisrt Servlet&JSP Chapter 3

V• 뷰

• 프레젠테이션 ( 보여지는 화면 ) 을 책임

• 쉽게 생각해서 JSP 파일

Page 5: HeadFisrt Servlet&JSP Chapter 3

C• 컨트롤러

• Request 객체에서 사용자가 입력한 정보를 뽑아내어모델이 어떤 작업을 해야하는지 알아 냄

• 쉽게생각해서 서블릿서블릿 ? -> 쉽게 HttpServlet 을 상속받은 JAVA파일

• 근거 ?> 다음장에

Page 6: HeadFisrt Servlet&JSP Chapter 3

근거 1. Web.xml 중 ..

<servlet> <servlet-name>Ch3_Beer</servlet-name> <servlet-class>com.example.web.BeerSelect</servlet-class> </servlet> <servlet-mapping> <servlet-name>Ch3_Beer</servlet-name> <url-pattern>/SelectBeer.do</url-pattern> </servlet-mapping>

Page 7: HeadFisrt Servlet&JSP Chapter 3

근거 2. 서블릿은 리턴해야할 값을 request 에 저장해 둔다고

하던데 . . .• BeerSelect.java 중 . . . (HttpServlet 상속받은 클래스임 )

String c = request.getParameter("color");

BeerExpert be = new BeerExpert();List result = be.getBrands(c);

request.setAttribute("styles", result);RequestDispatcher view =

request.getRequestDispatcher("result.jsp");view.forward(request, response);

Page 8: HeadFisrt Servlet&JSP Chapter 3

http://code.tutsplus.com/tutorials/from-beginner-to-advanced-in-opencart-understanding-mvc--cms-21627

1. ControllersControllers hold the main control of the program. A controller is responsible for the program flow. In web-based MVC applications, it is also the first layer which is called when the browser hits the URL.

2. ModelsModels hold the main data of the

program such as information from database objects and SQL queries. All data is gained from

the models; however, the models cannot be directly called - it is a controller who requests a model for specific data and the model

performs the request and returns the data to that controller.

3. ViewsA view is the last layer of

the MVC Architecture which holds the user

interface of the program. In web applications, a

view contains HTML, CSS, JavaScript, XML or JSON, etc. The view is a visible layer to the user whereas

the models and controllers are hidden

from the user.

Page 9: HeadFisrt Servlet&JSP Chapter 3

Let's understand that with the help of conversation form when a user

hits the URL:

• Controller: Hey ABC Model: The user wants the XYZ Data, please pass it to me.

• Model: Got the XYZ Data! Here it is.

• Controller: Hey ABC View, I am passing the XYZ Data to you.

• View: Renders the information on the page for the user to see.

Page 10: HeadFisrt Servlet&JSP Chapter 3

애플리케이션 아키텍처아키텍처란 ?

컴퓨터에 필요한 논리적 기능이나 표현 방식 또는 컴퓨터의 기능요소와 그 구성방식 등 하드웨어를 제작하는 데 해당되는 설계시방 ( 示方 ). 컴퓨터 아키텍처라고도 한다 .

수요자 입장에서 본 컴퓨터의 하드웨어 구조나 동작 및 논리 구조의 개념이다 .

아키텍처는 컴퓨터의 연산장치 , 내부 기억장치 , 각종 레지스터 , 제어장치 등 중요 구성요소와 외부 기억장치 , 입출력 장치 , 내 · 외부 버스 구조와 이들의 제어장치 등을 어떻게 결합하고 배치하여 전체적으로 어떤 용량과 성능을 갖도록 구성하는가를 취급한다 .

아키택처의 방식에 따라 컴퓨터의 용도 · 처리속도 등이 크게 달라진다 .

아키텍처를 변경할 때는 호환성을 갖도록 한다 .

http://www.scienceall.com/%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98architecture/

Page 11: HeadFisrt Servlet&JSP Chapter 3
Page 12: HeadFisrt Servlet&JSP Chapter 3
Page 13: HeadFisrt Servlet&JSP Chapter 3

컨테이너 로직은 왜 form.html 불러오는가 ?

• Web.xml 에 없으니까 파일시스템에 접근해서 가져옴

• 근거 ?

<servlet> <servlet-name>Ch3_Beer</servlet-name> <servlet-class>com.example.web.BeerSelect</servlet-class> </servlet><servlet-mapping> <servlet-name>Ch3_Beer</servlet-name> <url-pattern>/form.html</url-pattern></servlet-mapping>

Page 14: HeadFisrt Servlet&JSP Chapter 3

책이 시키는대로 하면 만들어 지는 것

Page 15: HeadFisrt Servlet&JSP Chapter 3

결국 3 장을 따라했다는건 ?

클라이언트 주소입력 컨테이너 ( 톰캣 )

web.xml 확인

파일시스템에 요청

서블릿에 요청BeerSelect (

서블릿 )

BeerExpert ( 모델 )

request 객체result.jsp ( 뷰 )

없다

있다

요청

있으면 리턴(form.html) 없으면 없다고

알 림

설정된에러페이지 리턴

리턴해야할 값을request 에 저장

JSP 에 request 객체포워딩

request 객체속정보 추출

HTML 페이지가공해서 리턴

Page 16: HeadFisrt Servlet&JSP Chapter 3

사용할 파일 (WEB.XML)<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version=“3.0">

<servlet> <servlet-name>Ch3_Beer</servlet-name> <servlet-class>com.example.web.BeerSelect</servlet-class> </servlet> <servlet-mapping> <servlet-name>Ch3_Beer</servlet-name> <url-pattern>/SelectBeer.do</url-pattern> </servlet-mapping></web-app>

Page 17: HeadFisrt Servlet&JSP Chapter 3

.do 는 의미가 없음논리적 이름임

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

<url-pattern>/search.naver</url-pattern>

Page 18: HeadFisrt Servlet&JSP Chapter 3

form.html<!DOCTYPE html><html><head></head><body><h1 align="center">Beer Selection Page</h1><form method="POST" action="SelectBeer.do">Select beer characteristics<p>Color:<select name="color" size = "1"><option value="light">light</option><option value="amber">amber</option><option value="brown">brown</option><option value="dark">dark</option></select><br><br><center>

<input type="SUBMIT"></center></form></body></html>

Page 19: HeadFisrt Servlet&JSP Chapter 3

BeerSelect.java - 버전 3

package com.example.web;import com.example.model.BeerExpert;

@SuppressWarnings("serial")public class BeerSelect extends HttpServlet {

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

String c = request.getParameter("color");BeerExpert be = new BeerExpert();List result = be.getBrands(c);

request.setAttribute("styles", result);RequestDispatcher view =

request.getRequestDispatcher("result.jsp");view.forward(request, response);

}}

Page 20: HeadFisrt Servlet&JSP Chapter 3

BeerExpert.javapackage com.example.model;import java.util.ArrayList;

public class BeerExpert {public ArrayList getBrands(String color){

ArrayList brands = new ArrayList();if(color.equals("amber")){

brands.add("Jack Amber");brands.add("Red Moose");

} else {brands.add("Jail Pale Ale");brands.add("Gout Stout");

}return brands;

}}

Page 21: HeadFisrt Servlet&JSP Chapter 3

result.jsp<%@ page import="java.util.*" %>

<html><body>

<%List styles = (List)

request.getAttribute("styles");Iterator it = styles.iterator();while(it.hasNext()){

out.print("<br>try :" + it.next());}

%></body></html>

Page 22: HeadFisrt Servlet&JSP Chapter 3

사용할 파일 (BeerSelect.java)

package com.example.web;import com.example.model.BeerExpert;

@SuppressWarnings("serial")public class BeerSelect extends HttpServlet {

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

String c = request.getParameter("color");BeerExpert be = new BeerExpert();List result = be.getBrands(c);

response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("BeerSelection Advice<br>");

Iterator it = result.iterator();while(it.hasNext()){

out.print("<br>try : " + it.next());}

request.setAttribute("styles", result);RequestDispatcher view = request.getRequestDispatcher("result.jsp");view.forward(request, response);

}}

Page 23: HeadFisrt Servlet&JSP Chapter 3

뒷슬라이드에 부록있음버전 1 / 버전 2

Q & A

Page 24: HeadFisrt Servlet&JSP Chapter 3

BeerSelect.java - 버전 1

package com.example.web;import com.example.model.BeerExpert;

@SuppressWarnings("serial")public class BeerSelect extends HttpServlet {

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

response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("Beer Selection Advice<br>");String c = request.getParameter("color");out.println("<br>Got beer color" + c );

}}

Page 25: HeadFisrt Servlet&JSP Chapter 3

BeerSelect.java - 버전 2

package com.example.web;import com.example.model.BeerExpert;

@SuppressWarnings("serial")public class BeerSelect extends HttpServlet {

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

String c = request.getParameter("color");BeerExpert be = new BeerExpert();List result = be.getBrands(c);

response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("BeerSelection Advice<br>");

Iterator it = result.iterator();while(it.hasNext()){

out.print("<br>try : " + it.next());}

}}