タグ

javaとstrutsに関するhiro360のブックマーク (91)

  • Struts 2の同期処理を手助けするExecuteAndWaitインターセプタ

    Struts 2が正式リリースされてから3年ほど経ちました。マイナーバージョンも上がり、現在は2.1系がGA(Generally Available)リリースされており、2.0系に比べてさまざまな改良がされました。続 Struts 2入門では、基機能のおさらいから2.1系で採用された機能の説明や実装例を紹介していきます。 はじめに Struts 2が正式リリースされてから3年ほど経ちました。マイナーバージョンも上がり、現在は2.1系がGA(Generally Available)リリースされており、2.0系に比べてさまざまな改良がされました。続 Struts 2入門では、基機能のおさらいから2.1系で採用された機能の説明や実装例を紹介していきます。 対象読者 Struts 2のWebアプリケーション開発に興味ある方。 Struts 2のインターセプタとは Struts 2には、Acti

    Struts 2の同期処理を手助けするExecuteAndWaitインターセプタ
  • サーバ再起動不要のSMART deployとバリデーション

    サーバ再起動不要のSMART deployとバリデーション:Java初心者が超俊敏にWebアプリを作る方法(3)(1/2 ページ) Eclipseプラグイン「Dolteng」のScaffoldという自動生成機能やSeasar 2.4のHOT deploy機能を利用して、DBの参照・更新・削除ができるSAStrutsのWebアプリを作ります。Java初心者だけでなくStrutsに慣れた開発者も必見です 超俊敏にJavaのWebアプリケーションを作るための便利なツールを紹介する連載も今回で3回目です。連載第1回の『1分でWebアプリを作れるEclipseプラグイン「Dolteng」』では、Webアプリケーション開発に非常に便利なEclipseプラグインである「Dolteng」の機能を使用して、「SAStruts」のプロジェクトを自動生成し、前回の「StrutsのXML地獄から開発者を解放する

    サーバ再起動不要のSMART deployとバリデーション
  • StrutsのXML地獄から開発者を解放するSAStruts

    StrutsのXML地獄から開発者を解放するSAStruts:Java初心者が超俊敏にWebアプリを作る方法(2)(1/3 ページ) Eclipseプラグイン「Dolteng」のScaffoldという自動生成機能やSeasar 2.4のHOT deploy機能を利用して、DBの参照・更新・削除ができるSAStrutsのWebアプリを作ります。Java初心者だけでなくStrutsに慣れた開発者も必見です 連載第1回の『1分でWebアプリを作れるEclipseプラグイン「Dolteng」』では、Webアプリケーション開発に非常に便利なEclipseプラグインである「Dolteng」の機能を使用して、「SAStruts」(後述)のプロジェクトを自動生成しました。 このDoltengで自動生成されたプロジェクトとソースはテンプレートとしての基的機能しか作成されていません(Doltengも進化中で

    StrutsのXML地獄から開発者を解放するSAStruts
  • JSP*タグリファレンス

    ☆★ただ今xmlライブラリ(JSTLタグ)作成中★☆ sqlライブラリ(JSTLタグ)を追加しました。 coreライブラリ(JSTLタグ)を追加しました。 logicライブラリ(Strutsタグ)を追加しました。 htmlライブラリ(Strutsタグ)を追加しました。 beanライブラリ(Strutsタグ)を追加しました。 アクションタグ(JSPタグ)を追加しました。

  • Webアプリにおけるサーバとクライアントの常識

    Webアプリにおけるサーバとクライアントの常識:Webアプリの常識をJSPとStrutsで身につける(3)(1/3 ページ) 連載は、JSP/サーブレット+StrutsのWebアプリケーション開発を通じて、Java言語以外(PHPASP.NETRuby on Railsなど)の開発にも通用するWebアプリケーション全般の広い知識・常識を身に付けるための連載です 前回は、「Strutsの常識を知り、EclipseとTomcatの環境構築」と題し、Webアプリケーションフレームワークの1つであるStrutsについての概要を説明したうえで、JDKやEclipse、TomcatなどのWebアプリケーション作成の環境構築を行い、サンプルプログラムを実際に作成してみました。 今回は、「サーバとクライアントの常識」と題し、サーバとクライアントの関係など詳しく説明していくとともに、前回紹介したサンプ

    Webアプリにおけるサーバとクライアントの常識
  • Seasar2/S2Struts - 俺の基地

    注入を自動的に行う S2Container単体で使う場合はfactoryからgetしていたが、StrutsではActionコントローラがフロントコントローラから勝手に呼ばれるので、注入もへったくれもなくなってしまう そこで少し細工をするとAction生成時にオブジェクトを注入してくれる。これはサービスクラスなんかを注入してもらうと楽ですね。 ▲ ▼ DIコンテナ自体のインスタンス管理 S2Container単体の場合は自らS2Containerのインスタンスを生成して管理していましたが。今回はこのインスタンスの生成管理をサーブレットコンテナに任せます。なのでweb.xmlに以下の記述を追加しs2containerの名前でそれをつかんでおきます。これでサーブレットが起動したときにdiconファイルに記述した設定に基づいてs2containerが各種インスタンス(今回ならば注入する予定のイ

  • Strutsの常識を知り、EclipseとTomcatの環境構築 (1/4) - @IT

    Strutsの常識を知り、EclipseとTomcatの環境構築:Webアプリの常識をJSPとStrutsで身につける(2)(1/4 ページ) 連載は、JSP/サーブレット+StrutsのWebアプリケーション開発を通じて、Java言語以外(PHPASP.NETRuby on Railsなど)の開発にも通用するWebアプリケーション全般の広い知識・常識を身に付けるための連載です いまさら聞けないStrutsの常識 今回は、「Strutsの常識」と題し、Webアプリケーションフレームワークの1つであるStrutsについての概要を説明したうえで、JDKやEclipse、TomcatなどのWebアプリケーション作成の環境構築を行い、サンプルプログラムを実際に作成してみましょう。 連載第1回の「いまさら聞けない、Webアプリケーションの常識」で、「連載ではStrutsを取り上げていきます」

    Strutsの常識を知り、EclipseとTomcatの環境構築 (1/4) - @IT
  • SAStrutsとMayaaの組み合わせ方について - かとじゅんの技術日誌

    初めてのSAStrutsのネタを書きます。。。 SAStrutsとMayaaと組みわせはできると耳にしていたのですが、具体的な方法がよくわからなかったので調べてみました。 web.xmlにMayaaServletの設定を追加する。 <servlet> <servlet-name>MayaaServlet</servlet-name> <servlet-class>org.seasar.mayaa.impl.MayaaServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MayaaServlet</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> <cont

    SAStrutsとMayaaの組み合わせ方について - かとじゅんの技術日誌
  • 続・S2JDBC の弱点を補完するS2AbstractService - 出羽ブログ

    エンティティの結合を検索時に指定することがほとんどなので findByIdやfindAllなんかは実運用では出番があまりないかもです。 AbstractService に次のようなメソッドを用意すれば、結合も汎用的に扱うことができます。 AbstractService.java public class AbstractService<ENTITY> extends S2AbstractService<ENTITY> { public List<ENTITY> findAll(String leftOuterJoin, String orderBy) { return select().leftOuterJoin(leftOuterJoin) .orderBy(orderBy).getResultList(); } public ENTITY findById(Integer id, St

    続・S2JDBC の弱点を補完するS2AbstractService - 出羽ブログ
  • SAStrutsで簡単Ajax - ひがやすを技術ブログ

    SAStrutsで簡単にAjaxを扱えるようにしました。サンプルはこんな感じ。 package tutorial.action; import org.seasar.struts.annotation.Execute; import org.seasar.struts.util.ResponseUtil; public class AjaxAction { @Execute(validator = false) public String index() { return "index.jsp"; } @Execute(validator = false) public String hello() { ResponseUtil.write("こんにちわ"); return null; } } アクションで、ResponseUtil#write()を使ってレスポンスに文字列を書き出すだけ。

    SAStrutsで簡単Ajax - ひがやすを技術ブログ
  • 2008-07-07

    エンティティの結合を検索時に指定することがほとんどなので findByIdやfindAllなんかは実運用では出番があまりないかもです。 AbstractService に次のようなメソッドを用意すれば、結合も汎用的に扱うことができます。 AbstractService.java public class AbstractService<ENTITY> extends S2AbstractService<ENTITY> { public List<ENTITY> findAll(String leftOuterJoin, String orderBy) { return select().leftOuterJoin(leftOuterJoin) .orderBy(orderBy).getResultList(); } public ENTITY findById(Integer id, St

    2008-07-07
  • S2JDBC の弱点を補完するS2AbstractService - 出羽ブログ

    このエントリーではSeasar 2.4.26 から 導入された S2AbstractService について書かせて頂きます。S2AbstractService を活用することで、タイプセーフを保ちつつも、データアクセスロジック関連のソースコードを大幅に減らす効果が期待できます。 S2JDBC の弱点 S2JDBCを使えば、お手軽かつパワフルにデータアクセス処理が実現できます。しかし、生のS2JDBCを野放し状態に使った場合、プロジェクトの規模が少し大きくなると、ソースコードの重複を生みやすくなる問題に直面します。具体的に、次の1件分のデータ取得処理ですら、コピー&ペーストされて複数箇所で使用されてしまいます。 Emp emp = jdbcManager.from(Emp.class).id(empId).getSingleResult(); 対処方法は、共通処理を抽出してメソッド化するこ

    S2JDBC の弱点を補完するS2AbstractService - 出羽ブログ
  • セッションスコープのアクションフォーム内で初期化タイミングの異なるプロパティをどう扱うか? - 出羽ブログ

    今回、SAStrutsで用意されるセッションスコープのActionFormの削除手段(@ExecuteアノテーションにremoveActionForm=trueを指定)は、実行メソッドの正常終了時にセッションからそのActionFormを削除するというものなので、検索系の項目だけ初期化、登録系の項目だけ初期化といったことができそうに無いです。 基は、hiddenを使った状態維持が望ましいと思います。 それでも、セッションスコープのアクションフォームを使う場合は、 初期化(リセット)タイミングの異なるプロパティをどう扱うか? という問題に対処する必要があります。 これについては、SAStruts 1.0.3-rc1より @Execute(reset="リセットメソッド名") が実装されるようなので、それを使えばいいと思います。

    セッションスコープのアクションフォーム内で初期化タイミングの異なるプロパティをどう扱うか? - 出羽ブログ
  • アクションフォームのスコープをどう扱うか? - 出羽ブログ

    気になっているのはActionForm。というか、私のところでは先代から引き継いだ特殊な改造版Strutsを使っているので、SAStruts以前に、生のStrutsでActionFormをどう扱っているかよくわからない。具体的には、スコープの扱い。Formをセッションスコープにすることができるが、これはいろいろまずいことがあるはず。 SAStrutsでは基的には、リクエストスコープでActionFormを定義します。 そして、(稀なケースだと思いますが)必要に応じて、 ActionFormをセッションスコープで定義する場合は、 1.0.3-rc1 で追加される @Execute(removeActionForm=true)を使うことが 今後のセオリーになると思います。 @Execute(removeActionForm=true) を指定しておくと、 実行メソッド終了後にセッションにある

    アクションフォームのスコープをどう扱うか? - 出羽ブログ
  • Strutsは古代、JSFは近代、現代はRails - ひがやすを技術ブログ

    最近流行の古代、近代、現代パターンで、Webアプリケーションのアーキテクチャを振り返ってみたいと思います。 古代に生まれたStrutsですが、実は結構完成度が高く、WebにおけるMVCパターンは、Strutsでほぼ完成しています。ViewはJSP(Velocityもあり)とタグライブラリで決まり、ControllerもActionで決まり(StrutsそのものもControllerに分類する場合もあり)でしたが、モデルの実装方法は、決定的なものがありませんでした。 実は、モデルには、アプリケーションモデルとドメインモデルがありますが、この辺の考えも明確なものがありません。アプリケーションモデルという言葉は、あまり聞いたことがない方もいるかもしれませんが、SmalltalkのMVCは、既にそうなっているようです。 モデルをデータのみから成るドメインモデルと,アプリケーション固有の情報から成る

    Strutsは古代、JSFは近代、現代はRails - ひがやすを技術ブログ
  • SAStrutsのチュートリアルが1.0.3から結構変わっている - wyukawa's diary

    出羽ブログで話題になっていたことが、SAStrutsのチュートリアルに反映されています。 例えば、EmployeeActionが @Execute(validator = false) public String index() { empItems = jdbcManager .from(Employee.class) .orderBy("id") .getResultList(); return "index.jsp"; } だったのが、 @Execute(validator = false) public String index() { empItems = employeeService.findAll(); return "index.jsp"; } となっています。jdbcManagerがなくなって、employeeServiceが処理をしています。 で、employeeSe

    SAStrutsのチュートリアルが1.0.3から結構変わっている - wyukawa's diary
  • 2008-06-26

    趣旨とあんまり関係ないですが、Service・Logicをとりまぜた3階層にするならば、エンティティによったものをService、アクションによったものはLogicと呼んだ方が、フレームワーク側の呼び方との親和性は高いように思います。 ちなみに、今はこんな感じの設計はどうかと思っています。 Serviceクラス:エンティティと対につくる。ドメインモデル的な考え方がプロジェクト内でついていけないならばいっそのこと導入しない。 Logicクラス ・ユースケースを跨がる画面まわりの制御処理や、ユースケースをまたがるビジネスロジック特有の処理を書く。いわゆる、サブシステム間共通関数のイメージ。たとえば複数ユースケースであるケースでは沢山の表にインサートするが、あるケースではアップデートのみするようなものを使う。 ・ただし、Serviceクラス的設計が難しい場合には、画面制御的なクラス Servic

    2008-06-26
  • Action-Service-Logic の3階層は冗長か? - 出羽ブログ

    エンティティ固有のドメインロジックは別出しにします。 ひがさんが最近呼んでる「Service」に近いです。 でも、みなさん Action-Service-Logic の3階層は冗長ってお考えなんですね。 そうでもないですよ。今、私が携わらせて頂いている案件では、 Action : コントローラ Service: ユースケース単位のロジック + データアクセス Logic : エンティティ単位のロジック + データアクセス ※ LogicはActionとServiceの両方から呼び出し可能とする。の方式に数人の中核のメンバーから納得感を得ています。 無難な選択肢だと思います。 一見冗長に思えますが、「ユースケース単位のロジック」と「エンティティ単位のロジック」を1種類のクラスに寄せる方式はどこかで無理が生じてしまいます。そう考えると、この方式は自然な発想ではないでしょうか。 この方式のポイン

    Action-Service-Logic の3階層は冗長か? - 出羽ブログ
  • Entity単位のServiceに共通の親クラスを持たせる - 出羽ブログ

    どうにかして型パラメータからAbstractServiceのclazzへセットしたかったのですが、やり方わからず。。。 ジェネリックの部分があまりスマートなやり方じゃない気がしていますが、ひとまず以下のやり方だとOKです。 まずはジェネリックな共通親サービスクラスです。 public abstract class AbstractService<E> { // JDBCマネージャー public JdbcManager jdbcManager; // Entityのクラス protected Class<E> clazz; @SuppressWarnings("unchecked") public AbstractService() { Type type = this.getClass().getSuperclass().getGenericSuperclass(); Type[] ar

    Entity単位のServiceに共通の親クラスを持たせる - 出羽ブログ
  • 2008-06-19

    昨日、Firefox3が正式リリースされたのでインストールしてみました。 激速ですね。素晴らしい!キビキビしまくりです。 次世代ブラウザ Firefox http://mozilla.jp/firefox/ 今まで、WebブラウザはSafariを使っていたので、速さでは満足していました。でも「Googleツールバー」と「はてなバー」、「マウスゼスチャのプラグイン」が使えないことがやや不満でした。「Googleツールバー」で英単語にマウスフォーカスするとポップアップで日語の意味を教えてくれる機能がないと、何気に英語の文章を読むのが辛かったんですよね〜。 SafariからFirefox3への移行において心残りなのは、Safariの美しいフォントから離れてしまうことです。 「Googleツールバー」以外のプラグインは、まだ確かめていませんが、これを機にメインで使うWebブラウザはFirefox

    2008-06-19