SlideShare una empresa de Scribd logo
1 de 12
Cubby 100% Pure JSP Web Application Framework 2006/8/19@Nulab Jaian Recital Toshitaka Agata(agata@nulab.co.jp)‏
Cubby って何? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
なぜに JSP ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
なぜに JSP ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cubby の概要 Struts,WebWork,Ruby on Rails の 良いところを参考に。 ブラウザ Dispatcher Filter 2.Binding 3.Validation 4.Action Execute JSP View 5. Forward 1. Request 7.Response Custom Tag (Tag File)‏ & Functions 6. Rendering Struts とだいたい同じ範囲をカバーします。 やり方はだいぶ異なります Action Filter Stack Controller + FormObject +ActionMethod1 +ActionMethod2
View ( JSP ) ,[object Object],<%@ taglib tagdir=&quot;/WEB-INF/cubby/tags&quot; prefix=&quot;t&quot; %> < t: input name=”userId”/> < t: select name=”typeId” items=”${todoTypes}” valueProperty=”id” labelProperty=”name” > <option value=”1”> 仕事 </option> <option value=”2”> 個人 </option> <option value=”3”> その他 </option> </t:select> Pure JSP <input name=”userId” value=””/> <select name=”typeId”> <option value=”1”> 仕事 </option> <option value=”2”> 個人 </option> <option value=”3”> その他 </option> </select> Pure HTML
View ( JSP ) ,[object Object],[object Object],<%@ taglib uri=&quot;http://java.sun.com/jsp/jstl/core&quot; prefix=&quot;c&quot; %> <%@ taglib uri=&quot;http://www.nulabco.jp/cubby&quot; prefix=&quot;f&quot; %> <%@ tag dynamic-attributes=&quot;dyn&quot; %> <%@ attribute name=&quot;type&quot; type=&quot;java.lang.String&quot; rtexprvalue=&quot;true&quot; required=&quot;true&quot; %> <%@ attribute name=&quot;checkedValue&quot; type=&quot;java.lang.Object&quot; rtexprvalue=&quot;true&quot; required=&quot;false&quot; %> <input type=&quot;${type}&quot;  ${f:toAttr(dyn)}  ${f:checked(dyn['value'],checkedValue)}/> input.tag
Controller&Action ,[object Object],return “show.jsp” show.jsp にフォワード return “@list” list にリダイレクト return “/common/error.jsp” /common/error.jsp に フォワード return “@/login/logout” /login/logout にリダイレクト @Action public class TodoController extends Controller { ... public String show() { ... return &quot;show.jsp&quot;; } public String edit() { ... return &quot;edit.jsp&quot;; } public String confirm() { ... return &quot;confirm.jsp&quot;; } public String save() { ... return &quot;@list&quot;; } } Controller
Controller&Action ,[object Object],@Action public メソッドをアクションメソッドとみなす (メソッド単位でも設定可能) @Form( プロパティ名 )‏ パラメータの自動バインディング対象を指定 (メソッド単位でも設定可能) @Validation(errorPage=&quot; エラー時の遷移先 &quot;)‏ アクションの実行前にバリデーションを実行 @Session セッションスコープの変数として、 自動バインディング (その他 public なフィールドはリクエストスコープ) @Action @Form(&quot;loginDto&quot;)‏ public class LoginController extends Controller { public static TodoLogic todoLogic = new MockTodoLogic(); @Session public User user; public LoginDto loginDto = new LoginDto(); public String login() { return &quot;login.jsp&quot;; } @Validation(errorPage=&quot;login.jsp&quot;)‏ public String login_process() { if(todoLogic.login(loginDto)) { user = new User(1, &quot;agata&quot;); return &quot;@/todo/list&quot;; } else { errors.add(&quot; ユーザ ID かパスワードが違います。 &quot;); return &quot;login.jsp&quot;; } } public String logout() { user = null; return &quot;@login&quot;; } } Controller
Validation ,[object Object],public class Todo implements  Validatable  { public static Validators VALIDATORS = new Validators(); static { VALIDATORS.add(&quot;text&quot;, new Required(), new MaxLength(10)); VALIDATORS.add(&quot;memo&quot;, new Required(), new MaxLength(100)); VALIDATORS.add(&quot;typeId&quot;, new Required()); VALIDATORS.add(&quot;limitDate&quot;, new DateFormat()); } public Validators getValidators() { return VALIDATORS; } ... } Model
その他の機能 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ロードマップ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],一緒に開発してくれる方、 募集中です !! 仕様に対するご意見も、 お待ちしております。

Más contenido relacionado

La actualidad más candente

20120327 phpstudy58-phake
20120327 phpstudy58-phake20120327 phpstudy58-phake
20120327 phpstudy58-phake
Katsuhiro Ogawa
 
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
 
アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)
noldor
 
Ext.directことはじめ
Ext.directことはじめExt.directことはじめ
Ext.directことはじめ
Shuhei Aoyama
 
20110820 metaprogramming
20110820 metaprogramming20110820 metaprogramming
20110820 metaprogramming
Masanori Kado
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
 

La actualidad más candente (20)

プログラミングの基礎振り返りスライド1
プログラミングの基礎振り返りスライド1プログラミングの基礎振り返りスライド1
プログラミングの基礎振り返りスライド1
 
Smalltalkで四則演算パーサ
Smalltalkで四則演算パーサSmalltalkで四則演算パーサ
Smalltalkで四則演算パーサ
 
20120327 phpstudy58-phake
20120327 phpstudy58-phake20120327 phpstudy58-phake
20120327 phpstudy58-phake
 
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
 
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
JavaScript入門-基礎編
JavaScript入門-基礎編JavaScript入門-基礎編
JavaScript入門-基礎編
 
アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)
 
20190809
2019080920190809
20190809
 
Ext.directことはじめ
Ext.directことはじめExt.directことはじめ
Ext.directことはじめ
 
Flask勉強会その1
Flask勉強会その1Flask勉強会その1
Flask勉強会その1
 
Ruby test double
Ruby test doubleRuby test double
Ruby test double
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
Ruby の制御構造とリテラルについて
Ruby の制御構造とリテラルについてRuby の制御構造とリテラルについて
Ruby の制御構造とリテラルについて
 
Angular.jsについてちょっとしゃべる
Angular.jsについてちょっとしゃべるAngular.jsについてちょっとしゃべる
Angular.jsについてちょっとしゃべる
 
20110820 metaprogramming
20110820 metaprogramming20110820 metaprogramming
20110820 metaprogramming
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
Rspec
RspecRspec
Rspec
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java
 

Destacado

3.11.08 Geometric Series 1
3.11.08   Geometric Series 13.11.08   Geometric Series 1
3.11.08 Geometric Series 1
chrismac47
 
4.1.08 Pascals Triangle2
4.1.08   Pascals Triangle24.1.08   Pascals Triangle2
4.1.08 Pascals Triangle2
chrismac47
 
Wwi Good Copy 2
Wwi Good Copy 2Wwi Good Copy 2
Wwi Good Copy 2
rgilpin
 
Social Networking narrated
Social Networking narratedSocial Networking narrated
Social Networking narrated
vedricko
 
Presentació Projecte1
Presentació Projecte1Presentació Projecte1
Presentació Projecte1
LauraGR
 
Where Should I Go: Smart Phones
Where Should I Go: Smart PhonesWhere Should I Go: Smart Phones
Where Should I Go: Smart Phones
Bess Ho
 

Destacado (20)

Multichannel verzekeren
Multichannel verzekerenMultichannel verzekeren
Multichannel verzekeren
 
Facadespeintes
FacadespeintesFacadespeintes
Facadespeintes
 
Llegendacm7
Llegendacm7Llegendacm7
Llegendacm7
 
HIS Workshop 2008: Neue Wege in der Prüfungskultur
HIS Workshop 2008: Neue Wege in der PrüfungskulturHIS Workshop 2008: Neue Wege in der Prüfungskultur
HIS Workshop 2008: Neue Wege in der Prüfungskultur
 
iPhone Biz Meetup
iPhone Biz MeetupiPhone Biz Meetup
iPhone Biz Meetup
 
"Openheid met Beleid" (versie juni 2009)
"Openheid met Beleid" (versie juni 2009)"Openheid met Beleid" (versie juni 2009)
"Openheid met Beleid" (versie juni 2009)
 
Lesson 2-5
Lesson 2-5Lesson 2-5
Lesson 2-5
 
Building Brands with Smart Data
Building Brands with Smart DataBuilding Brands with Smart Data
Building Brands with Smart Data
 
3.11.08 Geometric Series 1
3.11.08   Geometric Series 13.11.08   Geometric Series 1
3.11.08 Geometric Series 1
 
The New Drishtikone
The New DrishtikoneThe New Drishtikone
The New Drishtikone
 
4.1.08 Pascals Triangle2
4.1.08   Pascals Triangle24.1.08   Pascals Triangle2
4.1.08 Pascals Triangle2
 
The World Is Flat Edited
The World Is Flat EditedThe World Is Flat Edited
The World Is Flat Edited
 
Llegendacm9
Llegendacm9Llegendacm9
Llegendacm9
 
Wwi Good Copy 2
Wwi Good Copy 2Wwi Good Copy 2
Wwi Good Copy 2
 
Vooruit met Open Standaarden
Vooruit met Open StandaardenVooruit met Open Standaarden
Vooruit met Open Standaarden
 
Programatico2
Programatico2Programatico2
Programatico2
 
Social Networking narrated
Social Networking narratedSocial Networking narrated
Social Networking narrated
 
Presentació Projecte1
Presentació Projecte1Presentació Projecte1
Presentació Projecte1
 
Where Should I Go: Smart Phones
Where Should I Go: Smart PhonesWhere Should I Go: Smart Phones
Where Should I Go: Smart Phones
 
GET A DOG
GET A DOGGET A DOG
GET A DOG
 

Similar a Cubby 2006-08-23

Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
Shinpei Ohtani
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
Masatoshi Tada
 
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Uehara Junji
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
Kazunari Hara
 
丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008
Yoichiro Tanaka
 

Similar a Cubby 2006-08-23 (20)

イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
 
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
 
Cubby 2008-09-06
Cubby 2008-09-06Cubby 2008-09-06
Cubby 2008-09-06
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
Spock's world
Spock's worldSpock's world
Spock's world
 
JavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jpJavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jp
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
Rx java x retrofit
Rx java x retrofitRx java x retrofit
Rx java x retrofit
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
 
Ajax 応用
Ajax 応用Ajax 応用
Ajax 応用
 
Project lambda
Project lambdaProject lambda
Project lambda
 
Angular js はまりどころ
Angular js はまりどころAngular js はまりどころ
Angular js はまりどころ
 
丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008
 
Trait in scala
Trait in scalaTrait in scala
Trait in scala
 
JavaのGenericsとは?
JavaのGenericsとは?JavaのGenericsとは?
JavaのGenericsとは?
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentials
 

Último

Último (12)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

Cubby 2006-08-23

  • 1. Cubby 100% Pure JSP Web Application Framework 2006/8/19@Nulab Jaian Recital Toshitaka Agata(agata@nulab.co.jp)‏
  • 2.
  • 3.
  • 4.
  • 5. Cubby の概要 Struts,WebWork,Ruby on Rails の 良いところを参考に。 ブラウザ Dispatcher Filter 2.Binding 3.Validation 4.Action Execute JSP View 5. Forward 1. Request 7.Response Custom Tag (Tag File)‏ & Functions 6. Rendering Struts とだいたい同じ範囲をカバーします。 やり方はだいぶ異なります Action Filter Stack Controller + FormObject +ActionMethod1 +ActionMethod2
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.