Web Application
Web Application
-
Web Application
-
객체들 간(게시물 컨트롤러, 업무자, DAO) 역할 할당 및 수행 방식
-
Presentation
- 웹 AP와 main이 있는 AP 비교
- 웹 AP 요청에 따라 할 일이 정해진다(B요청을 하면 B요청에 대해서 처리하고 처리 결과를 응답)
- main AP : main안에 있는 요청을 정해진 순서대로 수행
-
DataService(게시물DAO)
-
Table
- 목적 : Table에 있는 값을 관리하고 이용하는 것
- Table 수집(select), 열 변경(update), 행 삭제(delete), 새로운 행 쓰기(insert) 행동이 영구적으로 DB에 저장하기 위한 행동
- DB에 접근할 수 있는 역할은 DAO만 할 수 있음
-
ex) 회원 등록 업무
- 회원 정보 입력 창 준비 요청
- 회원 등록 요청
- 회원을 등록하기 위해서는 준비 과정이 필요하며 준비 과정(입력창)을 통해서 등록을 요청할 수 있다.
-
Usecase UML 그려보기
- 시스템의 목표 : 시스템을 사용하는 사용자가 시스템을 통해 얻고자 하는 목표를 달성하기 위해 모든 사용의 경우를 만족시키는 것
- 시스템의 목표를 달성하기 위해(모든 사용의 경우를 만족) 정리하는 모델이 Usecase Model
MVC(Model View Control)
- MVC 기본 구조
-
코드를 그림으로 표현한 것
-
MVC 기본 구조 예시 및 실습
-
예시(게시물준비)
package com.stone.springmvc.board.presentation;
import java.util.ArrayList;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.ModelAndView;
import com.stone.springmvc.board.common.Board;
import com.stone.springmvc.board.service.게시물업무자;
@Controller
public class Board컨트롤러 {
게시물업무자 한게시물업무자=new 게시물업무자();
@GetMapping("/prepareboard")
public ModelAndView 게시물입력을준비하다() {
ModelAndView mv = new ModelAndView();
mv.setViewName("게시물등록창");
// 뷰 이름 등록
// mv.addObject(attributeValue) // 보내는 데이터가 있으면 사용
return mv;
}
}
- Board컨트롤러에서 get방식으로 '게시물입력을준비하다'라는 메소드를 통해 '게시물등록창.jsp'라는 뷰에 접근하여 새로운 창을 준비
-
예시(게시물목록조회)
- 진행과정
- main과 연결할 수 있게 Mapping을 지정하고 특정 행위를 할 수 있는 메소드를 입력한 후 메소드의 처리결과를 타입에 맞게 지정해주고 View에 새로운 창을 만들어 그 값을 전달
Web Application
-
객체들 간(게시물 컨트롤러, 업무자, DAO) 역할 할당 및 수행 방식
-
Presentation
- 웹 AP와 main이 있는 AP 비교
- 웹 AP 요청에 따라 할 일이 정해진다(B요청을 하면 B요청에 대해서 처리하고 처리 결과를 응답)
- main AP : main안에 있는 요청을 정해진 순서대로 수행
-
DataService(게시물DAO)
-
Table
- 목적 : Table에 있는 값을 관리하고 이용하는 것
- Table 수집(select), 열 변경(update), 행 삭제(delete), 새로운 행 쓰기(insert) 행동이 영구적으로 DB에 저장하기 위한 행동
- DB에 접근할 수 있는 역할은 DAO만 할 수 있음
-
ex) 회원 등록 업무
- 회원 정보 입력 창 준비 요청
- 회원 등록 요청
- 회원을 등록하기 위해서는 준비 과정이 필요하며 준비 과정(입력창)을 통해서 등록을 요청할 수 있다.
-
Usecase UML 그려보기
- 시스템의 목표 : 시스템을 사용하는 사용자가 시스템을 통해 얻고자 하는 목표를 달성하기 위해 모든 사용의 경우를 만족시키는 것
- 시스템의 목표를 달성하기 위해(모든 사용의 경우를 만족) 정리하는 모델이 Usecase Model
-
- MVC 기본 구조
-
코드를 그림으로 표현한 것
-
-
MVC 기본 구조 예시 및 실습
-
예시(게시물준비)
package com.stone.springmvc.board.presentation; import java.util.ArrayList; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.servlet.ModelAndView; import com.stone.springmvc.board.common.Board; import com.stone.springmvc.board.service.게시물업무자; @Controller public class Board컨트롤러 { 게시물업무자 한게시물업무자=new 게시물업무자(); @GetMapping("/prepareboard") public ModelAndView 게시물입력을준비하다() { ModelAndView mv = new ModelAndView(); mv.setViewName("게시물등록창"); // 뷰 이름 등록 // mv.addObject(attributeValue) // 보내는 데이터가 있으면 사용 return mv; } }
- Board컨트롤러에서 get방식으로 '게시물입력을준비하다'라는 메소드를 통해 '게시물등록창.jsp'라는 뷰에 접근하여 새로운 창을 준비
-
예시(게시물목록조회)
- 진행과정
- main과 연결할 수 있게 Mapping을 지정하고 특정 행위를 할 수 있는 메소드를 입력한 후 메소드의 처리결과를 타입에 맞게 지정해주고 View에 새로운 창을 만들어 그 값을 전달
- 진행과정
-
package com.stone.springmvc.board.presentation;
import java.util.ArrayList;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.ModelAndView;
import com.stone.springmvc.board.common.Board;
import com.stone.springmvc.board.service.게시물업무자;
@Controller
public class Board컨트롤러 {
@GetMapping("/listboard")
public ModelAndView 게시물목록을출력하다() {
ArrayList<Board> 모든게시물들 = 한게시물업무자.모두수집하다();
// 모든게시물들 수집(업무처리)
ModelAndView mv = new ModelAndView();
mv.setViewName("게시물목록창");
// 게시물목록창.jsp
mv.addObject("listboard", 모든게시물들);
// 게시물목록창.jsp에 모든게시물들을 listboard라는 이름으로 Mapping
return mv;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.stone.springmvc.board.common.Board" %>
<% ArrayList<Board> boards= (ArrayList<Board>) request.getAttribute("listboard"); %>
<!-- 컨트롤러에서 Mapping한 listboard를 board로 저장 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 게시물목록출력 -->
<h1>게시물 목록</h1>
<ul>
<% for(int 일련번호=0;일련번호<boards.size();일련번호++){
Board 게시물 =boards.get(일련번호);//zero base
%>
<li><%=일련번호+1 %>
<a href="/board/<%= 게시물.getNo() %>"><%= 게시물.getTitle() %></a>
</li>
<%} %>
</ul>
<br><button onclick="location.href='/main'">메인</button>
</body>
</html>
- 예시(게시물상세조회)
- 진행과정
- main과 연결할 수 있게 Mapping을 지정하고 특정 행위를 할 수 있는 메소드를 입력한 후 메소드의 처리 결과를 타입에 맞게 지정해주고 View에 새로운 창을 만들어 그 값을 전달
- addObject는 새롭게 생성한 jsp파일에서 값을 사용하기 위해 만들어주는 메소드라고 생각
- 진행과정
package com.stone.springmvc.board.presentation;
import java.util.ArrayList;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.stone.springmvc.board.common.Board;
import com.stone.springmvc.board.service.게시물업무자;
@Controller
public class Board컨트롤러 {
@GetMapping("/viewboard")
public ModelAndView 상세게시물을조회하다(@RequestParam("no") int 게시물번호) {
// @RequestParamint(" ") : 파라미터가 넘어올때 " "안의 이름으로 맞추겠다라는 뜻?
// 업무-게시물찾기
Board 특정게시물 = 한게시물업무자.찾다By번호(게시물번호);
ModelAndView mv = new ModelAndView();
mv.setViewName("게시물상세창");
// board에 게시물상세창.jsp 생성
mv.addObject("board", 특정게시물);
// 여기 Controller에서 특정게시물 객체를 게시물상세창.jsp에서 사용하기 위해 board로 Mapping
return mv;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.stone.springmvc.board.common.*" %>
<% Board board= (Board) request.getAttribute("board"); %>
<!-- controller에서 mapping된 board를 여기서 사용할 수 있도록 board로 지정 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>게시물 상세</h1>
제목<%=board.getTitle()%> <br>
내용<textarea cols="25" rows="5" name="contents" readonly><%= board.getContents()%></textarea><br>
<button onclick="location.href='/boards'">목록</button>
<button onclick="location.href='/main'">메인</button>
<!-- board로 저장된 값의 제목, 내용을 출력 -->
</body>
</html>
Author And Source
이 문제에 관하여(Web Application), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sig6774/Web-Application저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)