일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 스위프트
- hyperledger fabric
- akka 강좌
- Hyperledger fabric gossip protocol
- 스칼라 강좌
- 엔터프라이즈 블록체인
- 스칼라
- 파이썬 머신러닝
- 파이썬 동시성
- Akka
- 하이퍼레저 패브릭
- 블록체인
- 이더리움
- 그라파나
- 플레이프레임워크
- 파이썬 데이터분석
- Play2
- Play2 로 웹 개발
- 주키퍼
- 파이썬
- play 강좌
- Golang
- Actor
- 하이브리드앱
- 파이썬 강좌
- Adapter 패턴
- CORDA
- play2 강좌
- 스칼라 동시성
- 안드로이드 웹뷰
- Today
- Total
HAMA 블로그
Play2.4 로 웹 개발 시작하기 - (3) 나의 프로젝트 만들기 본문
Play2.4 로 웹 개발 시작하기 - (3) 나의 프로젝트 만들기
[하마] 이승현 (wowlsh93@gmail.com) 2016. 8. 27. 23:17 Play2.4 로 웹 개발 시작하기
쉽고, 재밌고, 강력하고, 편리한 최강의 웹 프레임워크 Play2 (scala 언어기반) 을 배워봅시다.
환경
- Windows 10
- JDK 1.8
- IntelliJ 2016.2.2
- Scala 2.11
- Play 2.48
연재 순서
1. Play2 웹 개발 시작하기 - 설치 및 프로젝트 만들기
2. Play2 웹 개발 시작하기 - 프로젝트 살펴보기
3. Play2 웹 개발 시작하기 - 나만의 프로젝트 만들기
* 2.5 에 대한 한글 자료가 부족한듯 싶습니다. 경험 풍부한 분들의 적극적인 정보 공유가 필요합니다.
3. 나만의 프로젝트 만들기
* 디폴트 프로젝트를 그대로 이용하겠습니다.
2-.1 컨트롤러 작성하기
기존의 Application 소스를 이렇게 바꿉니다.
package controllers
import play.api.mvc._
object Application extends Controller {
def index = Action {
Ok("Hello world")
}
def hello(name: String) = Action {
Ok(views.html.main(name))
} }
hello 라는 메소드를 추가했습니다. 클라이언트가 http://localhost/hello? n = "john" 이라고 보내면
인자로 이름을 받아서 main view 로 보내줍니다.
2-2 routes 추가하기
GET /hello controllers.Application.hello(n: String)
http://localhost/hello? n = "john" 를 hello 라는 메소드와 매핑하기 위한 라우트를 설정합니다.
굉장히 직관적이며 간단합니다. n 은 GET 메소드의 인자와 이름이 같아야합니다.
(컨트롤러의 인자이름은 달라도 됩니다. 2-1 에서 name 이었군요.)
2-3. html 변경하기
* 기존 index.html 삭제하고 main.html 내용을 아래와 같이 바꿉니다.
@(name: String)
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
<h1>Hello <em>@name</em></h1>
</body>
</html>
젤 첫라인에 name 인자를 받습니다. 앞에 골뱅이제외하고는 평범한 Scala방식입니다.
HTML 코드 내부에 @name 으로 사용합니다.
2-4. 실행하면
def index = Action {Ok("Hello world")} 이 호출되어서 위의 화면이 나오고
GET /hello controllers.Application.hello(n: String) 라우트에 의해
def hello(name: String) = Action {
Ok(views.html.main(name)) }
이게 호출되어 저 화면이 나옵니다.
3. 나만의 프로젝트에 DB 데이터 가져오기 추가
* 원하는 db 를 이용해서 테이블을 하나 만들어 놓으세요. 컬럼은 int 형 id , string name 이면 됩니다.
저는 postgreSQL 를 이용하였습니다.
3-1. DB 에 접근하기 위한 디펜던시를 설정해 줍니다. build.sbt 파일을 열어서 아래처럼 넣어줍니다.
* anorm 라이브러리에 관해서는 다음을 참고 합니다. Anorm 이란
jdbc ,
"com.typesafe.play" %% "anorm" % "2.5.0",
cache ,
ws ,
specs2 % Test,
"org.postgresql" % "postgresql" % "9.3-1102-jdbc41")
3-2. app 에 오른쪽 클릭해서 models 패키지를 만들고 , MyModel 을 scala 클래스로 만들어 줍니다.
3-2. MyModel.scala 에 코딩합니다.
case class Thing (
thing_id : Int,
name : String
)
object Thing {
implicit def jsonWrites = Json . writes [ Thing ]
implicit def jsonReads = Json . reads [ Thing ]
}
object MyModel {
def findByID(id : Int): List[Thing] = DB.withConnection {
implicit connection =>
val sql = SQL("select * from tbl_thing_info where thing_id = {id}").on("id" -> id)
sql().map ( row =>
Thing(row[Int]("thing_id"), row[String]("name"))
).toList
}
}
모델클래스 Thing를 만듭니다. VO 라고 하죠? 굉장히 간단합니다. GET/SET 가 없습니다.
Thing 모델클래스의 컴패니언 객체를 Json 으로 내보내는데 사용하기 위해서 추가합니다.
MyModel의 findByID 를 통해서 DB 접속을 해서 데이터를 가져옵니다.Anorm 라이브러리를 이용하였으며
타입에 엄격한 모습을 보여줍니다. 그러면서도 매우 단순하죠. (스프링을 생각해보세요 ;;)
참고로 Anorm 은 MyBatis 와 비슷하다면 하이버네이트와 비슷한 Slick 이란것도 있습니다.
3-3. Application.conf 에 DB 접근 설정을 해줍니다.
db.default.username=postgres
db.default.password=1234
db.default.driver=org.postgresql.Driver
PostgreSQL 에 접근하기위한 설정.
4. 나만의 프로젝트에 Json 객체로 내보내기 추가
def FindThingByID (id : Int) = Action {
val res3 : List[models.Thing] = MyModel.findByID(id)
Ok(Json.toJson(res3)) }
Json.toJson(res3) 이 한방으로 Json 객체를 클라이언트쪽으로 보내줍니다.
ps. FrontEnd 쪽에서 Ajax 를 통해서 호출해주고 Json 객체를 받는것은 이 포스트에서 제외했습니다.
'PlayFramework2' 카테고리의 다른 글
Play2.4 로 웹 개발 시작하기 - (4) 로깅처리 (0) | 2016.09.27 |
---|---|
specs2 로 하는 유닛테스트 (번역) (0) | 2016.09.02 |
Play2.4 로 웹 개발 시작하기 - (2) 프로젝트 살펴보기 (0) | 2016.08.27 |
Play2.4 로 웹 개발 시작하기 - (1) 설치 및 프로젝트 만들기 (0) | 2016.08.27 |
Anorm 2.5 (4) - Parser API 사용하기 (0) | 2016.08.26 |