2024年夏 かばんの中身記録 みんな大好きかばんの中身。 当然私も大好きで、人様のブログ記事やSNS投稿を飽きもせず読み込みまくっています。なぜこんなにも見飽きないのか… 自分も以前同じようにかばんの中身の記事を書いたんですが、気づけばもう3年前!去年くらいの気分だった、月日がたつの…
![はてなブログ | 無料ブログを作成しよう](https://cdn-ak-scissors.b.st-hatena.com/image/square/06a15c64ba0ceec233d86d71001ebb29a9dcbf5d/height=288;version=1;width=512/https%3A%2F%2Fcdn.blog.st-hatena.com%2Fimages%2Ftheme%2Fog-image-1500.png)
2024年夏 かばんの中身記録 みんな大好きかばんの中身。 当然私も大好きで、人様のブログ記事やSNS投稿を飽きもせず読み込みまくっています。なぜこんなにも見飽きないのか… 自分も以前同じようにかばんの中身の記事を書いたんですが、気づけばもう3年前!去年くらいの気分だった、月日がたつの…
Struts(1.2.x以下)からSAStrutsへの置き換えをするときに、Actionの共通前処理をどこに実装するかで迷った。 ここで言う共通前処理とは、個々のActionを実行する前に共通で実行したいような処理のこと。 Strutsでは、org.apache.struts.actions.DispatchActionを継承したクラスを作成し、dispatchMethodをオーバーライドして、そこに実装していたが、SAStrutsはPOJO ActionなのでDispatchActionに該当するものがない。 まず、考えたのはAOPで実装する案。 個々のActionに共通のスーパークラスを作成し、共通前処理メソッドを実装した上で、Interceptorを作成し、共通前処理メソッドを呼び出すようにする。 せっかくPOJO Actionなのにスーパークラスの継承を強要させるのは微妙な気がしな
Webアプリケーションでありがちな「ログイン済みか確認する」ための処理を、S2AOPを使って組み込んでみた。 やりたいことは、「Actionクラスの@Executeなメソッドが呼ばれたとき、ログイン済みかどうかを確認し、ログインしていなければログイン画面にリダイレクトする」である。この処理を全てのActionに書いて回るのは当然ながら面倒なので、AOPで処理を差し込んでしまいたいというわけ。 通常、ログインしているかどうかはHttpSessionが特定の属性値を持っているかで判断する。そこで、次のようなインターセプタを定義する。パッケージを{root}.interceptorとしておけば、勝手にコンポーネントとして定義されるので楽。 ※追記: セッションの使い方が間違っているようです。Seasar 2.4.34以前では、HotDeploy時にClassCastExceptionが投げられる
このエントリーではSeasar 2.4.26 から 導入された S2AbstractService について書かせて頂きます。S2AbstractService を活用することで、タイプセーフを保ちつつも、データアクセスロジック関連のソースコードを大幅に減らす効果が期待できます。 S2JDBC の弱点 S2JDBCを使えば、お手軽かつパワフルにデータアクセス処理が実現できます。しかし、生のS2JDBCを野放し状態に使った場合、プロジェクトの規模が少し大きくなると、ソースコードの重複を生みやすくなる問題に直面します。具体的に、次の1件分のデータ取得処理ですら、コピー&ペーストされて複数箇所で使用されてしまいます。 Emp emp = jdbcManager.from(Emp.class).id(empId).getSingleResult(); 対処方法は、共通処理を抽出してメソッド化するこ
S2JDBCでServiceクラスをどのように作るか考えた時に参考にしたエントリー群です。肝は、3点。 Serviceクラスは、Entityクラスと1:1で対応させる。 Serviceクラスは、Entityに対する処理以外はやらない。 Serviceクラス以外は、jdbcManagerを生で使用しない。(Actionにとか) AbstractServiceを作成し、DBに関する共通処理を集約させる(削除フラグとか更新日とか) あ、4つになったw 公式ドキュメント二つ まず読みましょう S2JDBCとは サービスの作り方 JavaDoc こっちも必須です。 javadoc: S2AbstractServiceクラス 出羽さんのエントリー。納得できるまで、読み返すこと S2JDBC の弱点を補完するS2AbstractService 続・SAStruts + S2JDBCのアーキテクチャ ジェ
以下について誤解のないように書いておきます。 シンプルな問い合わせは、メソッドにしない。 Serviceクラス使ってる意味なくね? aaSerivce.selectById(aaId); というように、ID指定で取得するような問い合わせは、 selectById()メソッドを作らず、 aaService.select().id(aaId).getSingleResult(); って書くんだと。なんでも、メンテナンスコストが下がるとかで。 逆だろ、上がるだろこれ。 これすごくわかります。私も結構悩みました。本来は個人事業主さんのいう姿がよいと思います。 が、ここから本題。 私も最初のころはselectByIdをAbstractServiceにつくっていました。selectByIdって便利ですね、でもFKで関連しているテーブルもJOINしたいのですができないみたいなんですが、、、何かよいメソッ
生StrutsのActionクラスではsaveMessagesメソッドを使えば、ビューへメッセージを渡せますが、SAStrutsではどうやって渡すのか調べてみたら、ActionMessagesUtilというユーティリティクラスが用意されていました。 Actionクラスでの使い方は以下のような感じ。 public class HogeAction { public HttpServletRequest request; // 中略 @Execute(input = "index.jsp") public String submit() { ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("xxxxxx")); // xxx
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く