前回まででEntityの作成まで終わったので、Webアプリケーションとして動作させるためのメモです。
以前のエントリはこちら
Spring Roo Install
[Spring Roo]プロジェクト作成, Logging&DB接続設定
[Spring Roo]Entity作成
・roo shell上でwebコマンドを実行することで、Webアプリケーションとして動作するために必要なファイルが生成されます。
roo> web mvc setup Created SRC_MAIN_WEBAPP\WEB-INF\spring Created SRC_MAIN_WEBAPP\WEB-INF\spring\webmvc-config.xml Created SRC_MAIN_WEBAPP\WEB-INF\web.xml Updated SRC_MAIN_WEBAPP\WEB-INF\spring\webmvc-config.xml Created SRC_MAIN_WEBAPP\images Created SRC_MAIN_WEBAPP\images\create.png Created SRC_MAIN_WEBAPP\images\list.png Created SRC_MAIN_WEBAPP\images\resultset_previous.png Created SRC_MAIN_WEBAPP\images\resultset_next.png Created SRC_MAIN_WEBAPP\images\show.png Created SRC_MAIN_WEBAPP\images\favicon.ico Created SRC_MAIN_WEBAPP\images\delete.png Created SRC_MAIN_WEBAPP\images\resultset_first.png Created SRC_MAIN_WEBAPP\images\springsource-logo.png Created SRC_MAIN_WEBAPP\images\resultset_last.png Created SRC_MAIN_WEBAPP\images\add.png Created SRC_MAIN_WEBAPP\images\banner-graphic.png Created SRC_MAIN_WEBAPP\images\update.png Created SRC_MAIN_WEBAPP\styles Created SRC_MAIN_WEBAPP\styles\alt.css Created SRC_MAIN_WEBAPP\styles\standard.css Created SRC_MAIN_WEBAPP\WEB-INF\classes Created SRC_MAIN_WEBAPP\WEB-INF\classes\standard.properties Created SRC_MAIN_WEBAPP\WEB-INF\classes\alt.properties Created SRC_MAIN_WEBAPP\WEB-INF\layouts Created SRC_MAIN_WEBAPP\WEB-INF\layouts\default.jspx Created SRC_MAIN_WEBAPP\WEB-INF\layouts\layouts.xml Created SRC_MAIN_WEBAPP\WEB-INF\views Created SRC_MAIN_WEBAPP\WEB-INF\views\header.jspx Created SRC_MAIN_WEBAPP\WEB-INF\views\footer.jspx Created SRC_MAIN_WEBAPP\WEB-INF\views\views.xml Created SRC_MAIN_WEBAPP\WEB-INF\views\index.jspx Created SRC_MAIN_WEBAPP\WEB-INF\views\index-template.jspx Created SRC_MAIN_WEBAPP\WEB-INF\views\uncaughtException.jspx Created SRC_MAIN_WEBAPP\WEB-INF\views\resourceNotFound.jspx Created SRC_MAIN_WEBAPP\WEB-INF\views\dataAccessFailure.jspx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\update.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\create.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\dependency.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\show.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\list.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\find.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\select.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\display.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\column.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\editor.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\checkbox.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\simple.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\input.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\textarea.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\datetime.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\table.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\reference.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\menu Created SRC_MAIN_WEBAPP\WEB-INF\tags\util Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\pagination.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\theme.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\placeholder.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\panel.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\language.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\load-scripts.tagx Created SRC_MAIN_WEBAPP\WEB-INF\i18n Created SRC_MAIN_WEBAPP\WEB-INF\i18n\messages.properties Created SRC_MAIN_WEBAPP\images\en.png Updated SRC_MAIN_WEBAPP\WEB-INF\i18n\application.properties Updated SRC_MAIN_WEBAPP\WEB-INF\web.xml Updated ROOT\pom.xml [added dependencies org.springframework:spring-web:${spring.version}, org.springframework:spring-we bmvc:${spring.version}, org.springframework.webflow:spring-js-resources:2.2.1.RELEASE, commons-digester:commons-digester :2.0, commons-fileupload:commons-fileupload:1.2.1, javax.servlet.jsp.jstl:jstl-api:1.2, org.glassfish.web:jstl-impl:1.2, javax.el:el-api:1.0, joda-time:joda-time:1.6, javax.servlet.jsp:jsp-api:2.1, commons-codec:commons-codec:1.4; updated p roject type to war; added dependencies org.apache.tiles:tiles-core:2.2.1, org.apache.tiles:tiles-jsp:2.2.1] Updated SRC_MAIN_WEBAPP\WEB-INF\views\footer.jspx
Webアプリケーションに必要なweb.xmlなどのファイルが生成されました。
また、Rooで作成されるのはSpringMVCアプリケーションですので、webmvc-config.xmlなどのSpringMVCのファイルも生成されます。
さらにデフォルトの画面を表示するためのファイルも生成されています。Rooで生成されるSpringMVCアプリケーションでは画面表示にtilesとjspxを使用しているため、デフォルト画面や共通のヘッダ、フッタ用のjspxファイルやtagxファイルが生成されました。CSSや画像ファイルも生成されます。
次に各EntityのControllerを作成していきます。Project EntityのControllerを作成するには下記のようにcontroller scaffoldコマンドを実行します。
roo> controller scaffold --class ~.web.ProjectController --entity ~.model.Project Created SRC_MAIN_JAVA\com\example\web Created SRC_MAIN_JAVA\com\example\web\ProjectController.java Updated SRC_MAIN_WEBAPP\WEB-INF\spring\webmvc-config.xml Created SRC_MAIN_JAVA\com\example\web\ApplicationConversionServiceFactoryBean.java Created SRC_MAIN_WEBAPP\WEB-INF\views\projects Created SRC_MAIN_WEBAPP\WEB-INF\views\projects\views.xml Updated SRC_MAIN_WEBAPP\WEB-INF\views\projects\views.xml Created SRC_MAIN_WEBAPP\WEB-INF\views\menu.jspx Created SRC_MAIN_WEBAPP\WEB-INF\tags\menu\menu.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\menu\item.tagx Created SRC_MAIN_WEBAPP\WEB-INF\tags\menu\category.tagx Updated SRC_MAIN_WEBAPP\WEB-INF\views\menu.jspx Updated SRC_MAIN_WEBAPP\WEB-INF\views\projects\views.xml Updated SRC_MAIN_WEBAPP\WEB-INF\views\menu.jspx Updated SRC_MAIN_WEBAPP\WEB-INF\i18n\application.properties Created SRC_MAIN_JAVA\com\example\web\ProjectController_Roo_Controller.aj Created SRC_MAIN_WEBAPP\WEB-INF\views\projects\list.jspx Created SRC_MAIN_WEBAPP\WEB-INF\views\projects\show.jspx Created SRC_MAIN_WEBAPP\WEB-INF\views\projects\create.jspx Created SRC_MAIN_WEBAPP\WEB-INF\views\projects\update.jspx Created SRC_MAIN_JAVA\com\exampler\web\ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj
--classオプションでControllerクラス名を指定し、--entityオプションで対象になるEntityを指定します。上記の例ではProjectControllerという名前のControllerクラスが作成されました。また、Project Entityに対するCRUD画面表示用のjspxファイルや、tilesの設定ファイルも生成されています。
これだけでProject Entityに対する一覧表示、詳細表示、作成、更新、削除の画面・機能が一通り提供されてしまいます。
同様に各Entityに対してControllerを生成します。
これでWebアプリケーションとして動作するようになりましたので、コマンドプロンプトからmvnコマンドを実行してアプリケーションを起動します。(roo shellではなくコマンドプロンプトです。)
>mvn jetty:run
- Webブラウザから下記のURLでアクセスすることが出来ます。
http://localhost:8080/example
- 画面左側のメニューから各Entityの操作が可能になっています。