김갱환
맨땅에 코딩
김갱환
전체 방문자
오늘
어제
  • 분류 전체보기 (239)
    • ⁂ 맨땅에 코딩 (11)
      • : Story (3)
      • : MiniProject 'MyWeb' (1)
      • : Final Project (5)
      • : Josa-Moa 한국어 조사 처리 프로젝트 (1)
    • —————Frontend——————————————.. (0)
    • ⁂ HTML (10)
      • : 기본 익히기 (10)
    • ⁂ CSS (15)
      • : 기본 익히기 (15)
    • ⁂ Java Script (32)
      • : 기본 익히기 (28)
      • : 자바스크립트 라이브러리 (1)
      • : 연습 문제 (3)
    • ⁂ jQuery (11)
      • : 기본 익히기 (11)
    • ⁂ Bootstrap (3)
      • : 기본 익히기 (3)
    • ⁂ TailWind CSS (1)
    • ⁂ AJAX (5)
      • : 기본 익히기 (5)
    • ⁂ Vue.js (3)
      • : 기본 익히기 (3)
    • —————DB : Data Base————————.. (0)
    • ⁂ Oracle DB (27)
      • : 기본 익히기 (24)
      • : 연습 문제 (3)
    • ⁂ MyBatis Framework (15)
      • : 기본 익히기 (15)
    • —————Backend———————————————.. (0)
    • ⁂ Java (62)
      • : 기본 익히기 (42)
      • : JDBC - Java DataBase Conn.. (4)
      • : Crawling (2)
      • : 독학으로 공부하기(과거) (11)
      • : 연습문제 (3)
    • ——————Web————————————————— (0)
    • ⁂ JSP (28)
      • : 기본 익히기 (28)
    • ⁂ Spring FrameWork (15)
      • : Legacy Project (1)
      • : 기본 익히기(Boot 기반) (14)
    • ——————————————————————— (0)
    • ⁂ Error Note (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • web.xml수정
  • http에러메세지
  • 비트연산자 #코딩공부 #자바공부 #코딩 #자바 #프로그래밍 #개발자
  • httperror
  • 코딩공부 #코딩 #자바 #자바독학 #자바공부 #개발자 #프론트앤드 #백앤드 #풀스택
  • HTML공부
  • 프론트앤드
  • 코딩
  • 객체지향프로그래밍
  • 코딩공부 #자바공부
  • 코딩공부
  • 코딩 #코딩공부 #프론트앤드 #백앤드 #풀스택개발자
  • 자바공부
  • 개발자
  • 풀스택
  • ErrorPage
  • 백앤드
  • 코딩 #코딩공부 #상수 #리터럴 #형변환 #개발자 #자바 #자바공부 #자바독학
  • 자바
  • 연산자 #기본연산자 #코딩 #자바 #독학 #자바공부 #자바연산자

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김갱환

맨땅에 코딩

⁂ Spring FrameWork/: 기본 익히기(Boot 기반)

[Spring] #6 View와 Controller 연습하기(MVC 중 VC)

2022. 11. 1. 14:38

1. view와 controller의 연계를 스프링에서 구현해보기 1

 

  myweb 프로젝트를 진행하면서 게시판을 만들었었다.

 이 때 스프링이 아니라 자바를 활용한 jsp 파일로만 이런 부분들을 구현했었다.

 이번에는 스프링을 사용하여 게시판을 만들어보려한다.

 

1) 영역 구분

 우선 프론트단이 들어갈 영역과 JSP파일들이 구현될 뷰단 영역, 그리고 컨트롤러 영역을 구분해두려한다.

 src/main/resources : CSS / JS / 이미지 파일들이 있는 경로

 src/main/webapp/WEB-INF/views : 뷰에 들어갈 JSP 페이지들이 있는 경로

 

2) application.properties 환경 설정 하기

 

 다음으론 application.properties로 환경 설정을 해보자.

 우선 우클릭을 하려 properties에 들어가 인코딩 타입을 UTF-8로 바꿔주었다.

 

 다음으론 톰캣 서버의 포트 번호와 뷰페이지를 사용하기 위한 prefix와 suffix를 등록해주었다.

# Spring Boot는 WAS(Tomcat) 내장되어있음(기본 port 번호 8080)
# 톰캣 서버의 http port 번호 변경
server.port=9095

# 주의사항 JSP, Thymeleaf, Mustache는 공동으로 사용될 수 없음.
# JSP를 뷰페이지로 사용할 경우 pom.xml에 라이브러리를 추가해주어야 한다.
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

 

 그리고 어제 배웠던 것처럼 ModelAndView 객체를 활용하여 명령어를 등록하고 페이지를 연결시켰다.

// URL에서 요청, 응답이 가능한 클래스 지정
@Controller
public class HomeController {
	
	public HomeController () {
		System.out.println("---------HomeController() 객체 생성됨");
	} // end
	
	// 결과 확인 http://localhost:9095/home.do
	
	// 요청 명령어를 등록하고 실행의 주체는 메서드(함수)
	@RequestMapping("/home.do")
	public ModelAndView home () {
		ModelAndView mav = new ModelAndView();
		mav.setViewName("start");
		
		return mav;
		
	} // home() end	
	
} // class end

 

 페이지가 잘 열렸다.

 

 

2. view와 controller의 연계를 스프링에서 구현해보기 2

 

 이번에는 사용자의 요청 명령어를 어떻게 받아들이는 지 확인해보자.

 이 때 RequestMapping 이란 어노테이션을 활용한다.

@RequestMapping(value="", method= GET | POST)

// value = 명령어 등록
// method = RequestMethod.전달방식
// 만약에 명령어만 써져있다면 GET과 POST를 동시 허용한다는 뜻이다.

 

 이것을 활용하여 사칙연산을 할 수 있는 명령어들을 만들었다.

// 결과 확인 http://localhost:9095/add.do?no1=3&no2=5
// /add.do 명령어를 get 방식으로 요청하면
@RequestMapping(value="/add.do", method = RequestMethod.GET)
public ModelAndView add(HttpServletRequest req) {
    // 사용자가 요청한 값이 있다면 값을 가져오기
    int no1 = Integer.parseInt(req.getParameter("no1"));
    int no2 = Integer.parseInt(req.getParameter("no2"));
    int result = no1 + no2;

    // view 페이지로 이동하기 위한 클래스
    // -> Model
    // -> ModelAndView
    ModelAndView mav = new ModelAndView();

    // application.properties 환경설정의 prefix와 suffix 참조
    // /WEB-INF/views/calcResult.jsp 뷰 페이지로 이동
    mav.setViewName("calcResult");

    // 공유장소 requset 영역에 값 올리기
    req.setAttribute("no1", no1);
    req.setAttribute("no2", no2);
    req.setAttribute("result", result);
    req.setAttribute("message", "<h3>두 수 사이의 합</h3>");
    req.setAttribute("img", "<img src='images/001.png'>");

    return mav;

} // end

@RequestMapping(value="/min.do", method = RequestMethod.GET)
public ModelAndView min(HttpServletRequest req) {
    // 사용자가 요청한 값이 있다면 값을 가져오기
    int no1 = Integer.parseInt(req.getParameter("no1"));
    int no2 = Integer.parseInt(req.getParameter("no2"));
    int result = no1 - no2;

    // view 페이지로 이동하기 위한 클래스
    // -> Model
    // -> ModelAndView
    ModelAndView mav = new ModelAndView();

    // application.properties 환경설정의 prefix와 suffix 참조
    // /WEB-INF/views/calcResult.jsp 뷰 페이지로 이동
    mav.setViewName("calcResult");

    // 공유장소 requset 영역에 값 올리기
    mav.addObject("no1", no1);
    mav.addObject("no2", no2);
    mav.addObject("result", result);
    mav.addObject("message", "<h3>두 수 사이의 차</h3>");
    mav.addObject("img", "<img src='images/002.png'>");

    return mav;

} // end

@RequestMapping(value="/mul.do", method = RequestMethod.GET)
public ModelAndView mul(HttpServletRequest req, HttpServletResponse resp, HttpSession session) {
    // 사용자가 요청한 값이 있다면 값을 가져오기
    int no1 = Integer.parseInt(req.getParameter("no1"));
    int no2 = Integer.parseInt(req.getParameter("no2"));
    int result = no1 * no2;

    // view 페이지로 이동하기 위한 클래스
    // -> Model
    // -> ModelAndView
    ModelAndView mav = new ModelAndView();

    // application.properties 환경설정의 prefix와 suffix 참조
    // /WEB-INF/views/calcResult.jsp 뷰 페이지로 이동
    mav.setViewName("calcResult");

    // 공유장소 requset 영역에 값 올리기
    mav.addObject("no1", no1);
    mav.addObject("no2", no2);
    mav.addObject("result", result);
    mav.addObject("message", "<h3>두 수 사이의 곱</h3>");
    mav.addObject("img", "<img src='images/003.png'>");

    return mav;

} // end

@RequestMapping(value="/div.do", method = RequestMethod.GET)
public ModelAndView div(HttpServletRequest req) {
    // 사용자가 요청한 값이 있다면 값을 가져오기
    int no1 = Integer.parseInt(req.getParameter("no1"));
    int no2 = Integer.parseInt(req.getParameter("no2"));
    int result = no1/no2;

    // view 페이지로 이동하기 위한 클래스
    // -> Model
    // -> ModelAndView
    ModelAndView mav = new ModelAndView();

    // application.properties 환경설정의 prefix와 suffix 참조
    // /WEB-INF/views/calcResult.jsp 뷰 페이지로 이동
    mav.setViewName("calcResult");

    // 공유장소 requset 영역에 값 올리기
    mav.addObject("no1", no1);
    mav.addObject("no2", no2);
    mav.addObject("result", result);
    mav.addObject("message", "<h3>두 수 사이의 나누기</h3>");
    mav.addObject("img", "<img src='images/004.png'>");

    return mav;

} // end

 

 

3. @RequestParam을 활용하여 사용자가 입력한 값을 한번에 처리하기

 

 이번에는 한 가지 명령어를 받아오는 방식에 따라 다르게 실행시키는 과정을 알아보려 한다.

 이 때 사용하는 어노테이션이 있다.

 바로 @RequsetParam이다.

 

 이 어노테이션은 사용자의 요청명령어를 한번에 처리해버릴 수 있도록 지원해준다.

 

1) 형식

@RequestParam("요청변수명") 자료형 변수명

 

2) 적용

 사용자가 요청한 값을 직접 변수에 저장 가능하다.

 이 어노테이션을 아래 코드처럼 우리가 사용할 메서드의 변수로 지정해서 담아준다.

 

@RequestMapping("/diff.do") // GET | POST
public ModelAndView diff(@RequestParam("no1") int a, @RequestParam("no2") int b) {

    int result = Math.abs(a-b);

    ModelAndView mav = new ModelAndView();
    mav.setViewName("calcResult");

    mav.addObject("no1", a);
    mav.addObject("no2", b);
    mav.addObject("result", result);
    mav.addObject("message", "<h3>두 수 사이의 차이</h3>");
    mav.addObject("img", "<img src='images/005.png'>");

    return mav;

} // diff() end

 

 이처럼 메서드 안에 변수명을 직접적으로 지정해주고 저장해주는 유연성을 가진 것이 스프링의 특징이다.

 

+ 사용자가 요청한 값을 매개변수로 직접 저장할 수도 있다.

// 결과 확인 http://localhost:9095/max.do?no1=3&no2=5
// 사용자가 요청한 값을 매개변수로 직접 저장하여 사용 가능하다
// 단, 사용자가 요청한 변수명과 매개변수명이 동일해야 한다. 
@RequestMapping("/max.do") // GET | POST
public ModelAndView max(int no1, int no2) {

    int result = Math.max(no1, no2);

    ModelAndView mav = new ModelAndView();
    mav.setViewName("calcResult");

    mav.addObject("no1", no1);
    mav.addObject("no2", no2);
    mav.addObject("result", result);
    mav.addObject("message", "<h3>두 수 중 큰 수는</h3>");
    mav.addObject("img", "<img src='images/006.png'>");

    return mav;

} // diff() end

 

저작자표시 비영리 동일조건 (새창열림)

'⁂ Spring FrameWork > : 기본 익히기(Boot 기반)' 카테고리의 다른 글

[Spring] #7-1 MVC 패턴으로 DB 접근하기 - MyMelon 프로젝트(환경설정)  (0) 2022.11.02
[Spring] #6-2 컨트롤러로 게시판 만들기  (0) 2022.11.01
[Spring] #5 어노테이션과 스프링 컨테이너(+ 내장형 톰캣 환경설정하기)  (0) 2022.10.31
[Spring] #4 pom.xml 뜯어보기  (0) 2022.10.31
[Spring] #3 프로젝트 만들기(Maven)  (0) 2022.10.31
    '⁂ Spring FrameWork/: 기본 익히기(Boot 기반)' 카테고리의 다른 글
    • [Spring] #7-1 MVC 패턴으로 DB 접근하기 - MyMelon 프로젝트(환경설정)
    • [Spring] #6-2 컨트롤러로 게시판 만들기
    • [Spring] #5 어노테이션과 스프링 컨테이너(+ 내장형 톰캣 환경설정하기)
    • [Spring] #4 pom.xml 뜯어보기
    김갱환
    김갱환
    코딩의 코자도 모르는 이의 공부 기록장

    티스토리툴바