반응형

Model 객체

컨트롤러에서 생성된 데이터를 담아 JSP에 전달하는 역할


 

Servlet에서 모델2 방식으로 데이터를 전달

request.setAttribute("serverTime", new java.util.Date());

RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/home.jsp");

dispatcher.forward(request, response);

 

MVC에서 Model을 이용한 데이터 전달

public String home(Model model){
  
   model.addAttribute("serverTime", new java.util.Date());
 
   return "home";
}

 


 

@ModelAttribute

강제로 전달받은 파라미터를 Model에 담아서 전달하도록 할 때 필요한 어노테이션

 


 

1. Controller에서 @ModelAttribute로 int 값 전달

(package 및 import 생략)
@Controller
@RequestMapping("/sample/*")
@Log4j
public class SampleController {
(생략)
@GetMapping("/ex04")
	public String ex04(SampleDTO dto, @ModelAttribute("page") int page) {
		
		log.info("dto : " + dto);
		log.info("page : " + page);
		
		return "/sample/ex04";
	}
}

 

2. 테스트를 위해 '/WEB-INF/views' 밑에 sample 폴더 생성

 

리턴으로 사용한 'ex04' 의 jsp파일 생성

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
	<head>
	<meta http-equiv="Content-Type" content="text-html; charset=UTF-8">
	<title>ex04</title>
	</head>
	<body>
		
		<h2>SAMPLEDTO ${sampleDTO }</h2>
		<h2>PAGE ${page }</h2>		
		
	</body>
</html>

 

 

 

 

3. 결과 확인

@GetMapping 어노테이션을 사용했으므로 URL 뒤에 직접 쿼리스트링 작성

( http://localhost:8080/sample/ex01?name=test&age=111&page=3 )

 

값이 정상적으로 출력되는 것을 확인

 

 

 

끝!

 

반응형

'Spring Framework > MVC' 카테고리의 다른 글

Controller Return Type  (0) 2021.01.11
RequestMapping  (0) 2021.01.07
Controller  (0) 2021.01.07
반응형

 

DTO란?

 

계층간 데이터 교환을 위한 객체(Java Beans)

로직을 갖고 있지 않는 순수한 데이터 객체이며, DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용

 


 

1. DTO 클래스 작성

DTO 클래스 작성하여 @Data 어노테이션 이용

아래와 같이 작성

package com.test1.domain;

import lombok.Data;

@Data
public class SampleDTO {
	
	private String name;
	private int age;

}

( Lombok의 @Data 어노테이션을 통해 getter/setter, equals(), toString() 등의 메서드가 자동 생성 )

 

 

 

 

2. Controller에서 SampleDTO를 파라미터로 사용

 

자동으로 setter 메서드가 동작하며 파라미터를 수집

package com.test1.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.test1.domain.SampleDTO;

import lombok.extern.log4j.Log4j;

@Controller
@RequestMapping("/sample/*")
@Log4j
public class SampleController {	
	@GetMapping("/ex01")
	public String ex01(SampleDTO dto) {
		
		//log로 확인
		log.info("" + dto);
		
		//클래스명으로 return
		return "ex01";
	}	
}

 

 

 

 

 

 

3. 로그 확인

 

@GetMapping 어노테이션을 사용했으므로 URL 뒤에 직접 쿼리스트링 작성

( http://localhost:8080/sample/ex01?name=abc&age=111 )

사진 하단에 DTO 객체의 속성이 제대로 수집된 것을 확인

 

 

 

 

 

끝!

 

반응형
반응형

@RequestMapping

@RequestMapping 어노테이션은 현재 클래스의 모든 메서드들의 기본적인 URL 경로가 된다.

@RequestMapping("/sample/*") 라는 경로로 지정 시

ㆍ /sample/a

ㆍ /sample/b

와 같은 경로 모두 SampleController에서 처리된다.

 


 

@RequestMapping에서 사용 할 수 있는 속성

String[] value : url패턴을 지정

@RequestMapping(value="/post")
@RequestMapping(value="/post.*")
@RequestMapping(value="/post/{postId}")

 

RequestMethod[] method : method를 명시하면 같은 URL이라도 다른 메서드 매핑

// /sample/basic 이며, GET 방식에 매핑
@RequestMapping(value="/basic", method = RequestMethod.GET)
		
// /sample/basic 이며, POST 방식에 매핑	
@RequestMapping(value="/basic", method = RequestMethod.POST)	

 

String[] params : 요청 파라미터와 값으로 구분

// /post?postId=Y 일 경우 호출됨
@RequestMapping(value="/post", params="postId=Y")

// 값에 상관없이 파라미터에 postId이 있을 경우 호출됨
@RequestMapping(value="/post", parmas="postId")

 

String[] headers : 헤더 값으로 구분

@RequestMapping(value="/post", headers="content-type=text/*")

 

 

일반적인 경우 GET, POST만 사용하지만,

최근에는 PUT, DELETE 방식도 많이 사용함.

 

끝!

반응형

'Spring Framework > MVC' 카테고리의 다른 글

Controller Return Type  (0) 2021.01.11
Model, @ModelAttribute  (0) 2021.01.08
Controller  (0) 2021.01.07
반응형

 

Spring MVC Controller 특징

HttpServletRequest, HttpServletResponse를 거의 사용할 필요없이 구현

다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용가능

GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 가능

상속/인터페이스 방식 대신에 어노테이션만으로 필요한 설정 가능

 


 

@Controller

package com.test1.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/sample/*")
public class SampleController {

}

 

 

 

com.test1.controller 패키지 폴더에 'SampleController' 클래스 생성

클래스 생성

 

 

 

@Controller 어노테이션 적용 시 자동으로 스프링의 객체(Bean)로 등록된다.

이유는 다음과 같다.

<context:component-scan base-package="com.test1.controller" />

servlet-context.xml에 <context:component-scan>이라는 태그를 이용하여,

지정된 패키지를 스캔하며 객체설정에 사용되는 어노테이션들을 가진 클래스를 파악하고 이를 객체로 생성하여 관리하기 때문

 

 

 

끝!

 

반응형

'Spring Framework > MVC' 카테고리의 다른 글

Controller Return Type  (0) 2021.01.11
Model, @ModelAttribute  (0) 2021.01.08
RequestMapping  (0) 2021.01.07
반응형

 

Mybatis란?

객체 지향 언어인 자바의 관계형 데이터 베이스 프로그래밍을 보다 쉽게 도와주는 프레임워크

 


 

Mybatis관련 라이브러리 추가

pom.xml을 수정

 

<!-- MyBatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>
		
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.2</version>			
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>

spring-jdbc/spring-tx : 스프링에서 데이터베이스 처리와 트랜잭션 처리

mybatis/mybatis-spring : MyBatis와 스프링 연동용 라이브러리

 


 

 

SQLSessionFactory란

SqlSessionFactory는 데이터베이스와의 연결과 SQL의 실행에 대한 모든 것을 가진 가장 중요한 객체이며,

이 객체가 DataSource를 참조하여 MyBatis와 Mysql 서버를 연동

 

root-context.xml 설정

 

<!-- SqlSession 설정 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
	</bean>

 


 

Mapper인터페이스

 

root-context.xml 파일을 열고,

하단 'Namespaces' 탭에서 'mybatis-spring' 체크

<mybatis-spring:scan> 태그의 base-package 속성은 지정된 패키지의 모든 MyBatis 관련 어노테이션을 찾아서 처리

 

 

끝!

반응형

'Java > 라이브러리' 카테고리의 다른 글

Lombok 라이브러리 설치  (0) 2021.01.07
반응형

 

HikariCP란

Database Connection pool을 관리해주는 라이브러리


라이브러리 추가

pom.xml을 수정

<!-- HikariCP -->
<dependency>
   <groupId>com.zaxxer</groupId>
   <artifactId>HikariCP</artifactId>
   <version>2.7.4</version>
</dependency>

 

 

DataSource설정

 

root-context.xml 수정

아이디와 패스워드 부분은 DB에 접속 할 아이디/패스워드를 기입

    <bean id = "hikariConfig" class="com.zaxxer.hikari.HikariConfig">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
		<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe"></property>
		<property name="username" value="아이디"></property>
		<property name="password" value="패스워드"></property>
	</bean>
	
	<!-- HikariCP configuration -->
	<bean id ="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
		<constructor-arg ref="hikariConfig" />
	</bean>

 

 

끝!

반응형

'Java > JDBC' 카테고리의 다른 글

JDBC & Connection pool  (0) 2021.01.07

+ Recent posts