タグ

Seasar2に関するbigbroのブックマーク (197)

  • StrutsのClassLoader脆弱性はSAStrutsに影響しません - ひがやすを技術ブログ

    Struts2に見つかった脆弱性と同様の脆弱性がStruts1系にも見つかりました。 Apache Struts 2の脆弱性が、サポート終了のApache Struts 1にも影響 HTTP(S)のリクエストでJavaのClassLoaderのメソッドが呼び出せてしまうという脆弱性です。 もう少し噛み砕いて言えば、リクエストのパラメータをJavaBeansにセットする時に、リフレクションを使い、パラメータ名にaaa.bbb.cccのようなネストした名前をサポートしているフレームワークは同様の問題が起こる可能性があります。 パラメータ名をclass.classLoader.xxxのような感じにして、ClassLoaderのメソッドを呼び出す訳です。 このような問題を起こすリフレクションフレームワークで最も有名なのは、Apache Commons BeanUtilsです。リクエストのパラメータ

    StrutsのClassLoader脆弱性はSAStrutsに影響しません - ひがやすを技術ブログ
  • SAStruts+Maven2+Subversionで開発を始めるまでの10ステップ - GeekFactory

    まずEclipse, Apache Tomcat, Subversiveを入れましょう。 sa-struts-tutorialを入手する プロジェクトのお手を入手します。zipを解凍したら、Eclipseにプロジェクトをインポートします。 Super Agile Strutsチュートリアル sa-struts-tutorial-1.0.x.zip http://sastruts.seasar.org/download.html m2eclipse Plugin EclipseからMaven2を使うためのプラグインを入れます。 下記のアップデートサイトからプラグインをダウンロードします。 http://m2eclipse.codehaus.org/update/ http://www.atmarkit.co.jp/fjava/rensai3/eclipseplgn11/eclipseplg

    SAStruts+Maven2+Subversionで開発を始めるまでの10ステップ - GeekFactory
  • Seasar2でdiconにアプリ設定を書く - NullPointer's

    「SAStrutsでアプリの設定はどう書く」の続き <component class="java.io.File" name="tmpDir"> <arg>"/tmp"</arg> </component> ognlでシステムプロパティを取り出せるので、例えばTomcatのcatalina.homeを指定出来る <component class="java.io.File" name="tmpDir"> <arg>@java.lang.System@getProperty("catalina.home")</arg> <arg>"tmp"</arg> </component> 以下と同じ File tmpDir = new File(System.getProperty("catalina.home"), "tmp"); Webアプリケーションのディレクトリを指定 <component c

    Seasar2でdiconにアプリ設定を書く - NullPointer's
    bigbro
    bigbro 2012/09/10
    diconファイルを設定ファイルとして使用する
  • SAStrutsでアプリの設定はどう書く? - NullPointer's

    例えばファイル出力先のディレクトリパスなど、アプリケーションの設定をどう書くべきか。propertiesファイルに書いて読み込めばいいと思ったが、そんな必要もなさそう。 コンテナに登録するコンポーネントは、インターフェースを実装したクラスである必要はないのだから、設定値をdiconに書いてコンポーネントとして登録し、Seasar 2.4から追加されたBindingアノテーションを使ってサービスやアクションのコンポーネントにセットしてしまうのが楽そうです。 <component class="java.lang.String" name="hoge"> <arg>"ほげほげ〜"</arg> </component> というのをどこかのdicon、例えばconfig.diconに書いてapp.diconでincludeするなどしてStringをコンポーネントとして登録。そして、その設定値を利用

    SAStrutsでアプリの設定はどう書く? - NullPointer's
    bigbro
    bigbro 2012/09/10
    diconファイルを設定ファイルとして使用する
  • はてなブログ | 無料ブログを作成しよう

    来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…

    はてなブログ | 無料ブログを作成しよう
  • オレオレAjaxアノテーションで超簡単Ajax - 出羽ブログ

    チュートリアルのダウンロードのソース見てたら「あれ?これパクれば Ajax できるんじゃね?」と思ってさっそくやってみた。クラス名とか気にしないで・・・。 すぱいだー日記さんにインスピレーションを受けて SAStrutsで自前AjaxアノテーションとAOPを使って 超簡単にAjaxできてしまうプログラムを書いてみた。 Action側のコードはこんな感じ。 public class AjaxTestAction { public String hoge; public String fuga; @Ajax @Execute(validator = false) public String callAjax() { return hoge + " と " + fuga; } } 通常のSAStrutsの実行メソッドに 自前で作った@Ajaxアノテーションを付けるだけ。 呼び出し側のJSPは以下

    オレオレAjaxアノテーションで超簡単Ajax - 出羽ブログ
  • ResourceSynchronizerスゲー - 出羽ブログ

    SAStrutsのチュートリアルの「リッチなエラーページ」と 「ResourceSynchronizer」の組み合わせはマジですごい! どんな感じでスゲーのかはを順を追ってみてみましょう。 1.Exception発生時に表示されるページ 初期表示はスタックトレースですが、左側のツリービューで選択することで、 「リクエストパラメータ」、「HTTPヘッダー」、「クッキー」、「リクエスト属性」、 「セッション属性」などを閲覧できます。 2.スタックトレースの各行にある+印をクリックすると、ソースコードの一部をブラウザ上から閲覧できる 3.しかも、自動的にEclipse上でソースコードが開く セットアップ手順 その1.SAStrutsのチュートリアルをダウンロードする http://sastruts.seasar.org/download.html その2.以下のページを参考にチュートリアルをセッ

    ResourceSynchronizerスゲー - 出羽ブログ
  • S2AbstractServiceを用いたAction-Service-Logicパターン - 出羽ブログ

    以前に「1.5階層のAction-Service-Logicパターン」を紹介させて頂きました。今回は、このアーキテクチャにS2AbstractService を導入した場合のアーキテクチャについて検討してみました。 主な変更点として、S2AbstractService を導入する場合は、アクションやロジックから直接JdbcManagerを使うこと得策ではないと考え、データアクセスロジックは全てサービスを経由するようになった点です。 まずは、アーキテクチャを図示したものをご覧ください。細かい解説は別エントリにて書かせて頂きますが、エンティティ単位のサービスを採用しつつも、ユースケース固有のロジックはアクションに記述する方法を提示したいと思います。 アーキテクチャ(レイヤ構成図) アーキテクチャ(モジュール相関図)

    S2AbstractServiceを用いたAction-Service-Logicパターン - 出羽ブログ
  • 1.5階層のAction-Service-Logicパターン - 出羽ブログ

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

    1.5階層のAction-Service-Logicパターン - 出羽ブログ
  • Action-Service-Logic の3階層は冗長か? - 出羽ブログ

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

    Action-Service-Logic の3階層は冗長か? - 出羽ブログ
  • SessionスコープのオブジェクトをEL式で参照する場合ではまったこと - suusuke@Hatena

    今思うと全然たいしたことじゃないけど、ちょっとはまったのでその時試したことを書きます。 現象 SessionスコープのオブジェクトのpublicフィールドがEL式で参照できない。 getterを追加すると参照できる。 ユーザ情報を保持するDto セッションとして保持するユーザ情報のDto。 クラスに@Component(instance = InstanceType.SESSION)を設定。 jp.co.suusuke.dto.UserDto public String code; public String name; ログインアクション リダイレクトで社員側のトップページへ遷移する。 jp.so.suusuke.action.LoginAction // ログインフォーム @Resource(name = "loginForm") @ActionForm protected Login

    SessionスコープのオブジェクトをEL式で参照する場合ではまったこと - suusuke@Hatena
  • ネストした子のバリデーション - 出羽ブログ

    ネストした子Dtoのバリデーションはやってくれない? とりあえず検証メソッドかな。 私も以前に確認したのですが、 アノテーションによるネストした子Dtoのバリデーションは、 複雑なことは対応しないという方針に基づいて、 やってくれないのが仕様です。 あと、私も以前にネストしたDto(スコープはセッションでした)に バインドする方法を試みたのですが、以下の理由でやめました。 検証メソッドはアノテーションに比べて面倒 Dtoが持つプロパティの型がStringかbooleanになってしまうためロジックで扱いづらい チェックボックスを受ける時にハマりやすい アクションフォームのリセットメソッドに相当するものがなくて困ります。 Dtoがセッションで検索条件を保持した場合にブラウザの戻るボタンでクライアントとサーバーの状態がズレて挙動がおかしくなって悩む 自分が選択した代替手段としては、 一度アクショ

    ネストした子のバリデーション - 出羽ブログ
  • 繰り返し項目の実装はDtoとEntityのどちらを使うべきか? - 出羽ブログ

    『複数レコード処理(繰り返し)』の場合に、Entityをそのまま使うというのに違和感を感じてしまうのですが、そんな感覚にはこだわらない方が良いのでしょうか。 導出項目を得るような処理というのはプレゼンテーションロジックなのだから、DTOに値をコピーして、DTOのgetterで実装するようにした方が良いような気がしてしまっているのですが。 私の以前のエントリでは、繰り返し更新がなければDtoのではなく、Entityを積極的に使うことを書きました。でもDtoを使うケースでも特に問題ないと思います。ただし、メリット・デメリットは、把握しておいた方がいいと思います。 【メリット】 繰り返し処理には、常にDtoを使うため、設計に一貫性がでる。実装者も迷わない。 【デメリット】 プレゼンテーションモデル側で導出項目のロジックを用意すると重複しやすい。 繰り返し更新が必要となるケースは比較的少ない状況に

    繰り返し項目の実装はDtoとEntityのどちらを使うべきか? - 出羽ブログ
  • SAStruts + S2JDBCのアーキテクチャを図示してみる - 出羽ブログ

    SAStruts と S2JDBC を使って少し複雑なケースのWebアプリを開発する際において、現時点で自分が一番良いと考えているアーキテクチャを図示してみました。 なかなか良い感じです。あえて、課題をあげるならば、次の2点です。 アクションフォームの内部クラスに @Component(instance = InstanceType.SESSION) を付けて、スコープをセッションにしたいができないこと(やり方が分からないだけだと思う。)←できないことが判明しました ユースケースをまたいでアクションフォームを使用しない方針とした場合、検証メソッドをアクションフォームに書きたくなるが現状ではアクションにしか書けないこと。 追記: 1.0.3-rc1 より検証メソッドはアクションフォームに書くことができるようになります。 よって、検証メソッドはアクションからアクションフォームへ移すことをオスス

    SAStruts + S2JDBCのアーキテクチャを図示してみる - 出羽ブログ
  • はじめてのSAStruts 6週目 - 130単位

    はじめてのSAStruts 5週目 - 130単位 の続きです。 いろいろやっていたと思うのですが、あまりメモに残してなかったのでざっくりと。間違った情報があったら申し訳ありません。 2/9〜2/13 エンティティとテーブルの再構築 とりあえずIntegerとString(VARCHAR)で開発を進めていた 実際の現行テーブルは数値にはNUMERIC、文字列にはCHARが使われていた というわけで型を揃えることにした gen-entityを行うと以下のようになった NUMERIC (DB2) → BigDecimal (Java) CHAR (DB2) → String (Java) gen-ddlでは以下のようになる BigDecimal (Java) → DECIMAL (DB2) String (Java) → VARCHAR (DB2) BigDecimal/DECIMAL、Str

  • はじめてのSAStruts 5週目 - 130単位

    はじめてのSAStruts 4週目 - 130単位 の続きです。 DBアクセス処理を実装していくにあたり、O/RマッパーのS2JDBCを格的に使い始めました。 2/2〜2/6 複数のスキーマからエンティティ自動生成 スキーマ毎にxml定義を作成してみる 「schemaname」に対象のスキーマ名を記述 Gen-Entityのみで、他のタスク(Geb-Namesとか)には不要 それぞれのxmlをAnt実行 (ただし基的に最初の1回しか実行しないため、1ファイルで都度書き換えればよいのかも) DDL生成時(Gen-DDL)は、1つのxmlを実行すればよい(エンティティでの指定が必要(後述)) 参考:Seasar2 - S2JDBC-Gen - Gen-Entity ▼s2jdbc-gen-build.xml <project name="app-s2jdbc-gen" default="g

  • はじめてのSAStruts 4週目 - 130単位

    はじめてのSAStruts 3週目 - 130単位 の続きです。 この週でView(JSP)が一通り完成しました。 1/26〜1/30 開発環境再構築 何かの拍子に設定を間違えたかで、エラーが出るようになったため SAStruts開発に特化した「Eclipse IDE for SAStruts Developers」を新たにインストール (Eclipseは3.3、Tomcatは6.0.16) 日語化やプラグイン導入の手間が省けて、かなり楽に済んだ 配布元:no title 導入手順:no title Doltengでプロジェクト再作成後、バックアップしておいたファイルをインポート アノテーションによるバリデーション 同一アクションフォームでの異なる登録処理で、検証項目を分けたい場合 target属性でメソッド名を指定 対象メソッドが複数の場合はカンマとともに記述 プロパティ名ではなく任意

  • はじめてのSAStruts 3週目 - 130単位

    はじめてのSAStruts 2週目 - 130単位 の続きです。 この週はひたすらView(JSP)をつくっていました。 1/19〜1/23 JSPのループ文 beginとendを指定 または、対象の配列などをitemsで指定 <c:forEach var="month" begin="1" end="12"> <html:option value="month">month</html:option> </c:forEach> <c:forEach var="user" items="userList"> ${user.id} - ${user.name} </c:forEach> FCKeditorと格闘 様々な言語に対応しているHTMLエディタ 入力画面で使用予定のため、導入調査 が、半日ほどかけてもうまく動かず 配布元:FCKeditor.Java Integration - Ab

  • はじめてのSAStruts 2週目 - 130単位

    開発でいっぱいいっぱいで、追いつくどころか全然更新できてませんでしたが。 はじめてのSAStruts 1週目 - 130単位 の続きです。 ※2/16追記:コードに一部誤りがあったので修正しました。 1/13〜1/16 DB2環境構築 Windows版のDB2をダウンロード&インストール no title DB2用JDBCドライバーはインストールされたディレクトリに入ってた CSEからDB2への接続を試す DB2のクライアントツールは重たそうだったので、慣れているCSEを使いたい 汎用ODBCサービスを利用して接続 参考:DB2でリモート接続する方法 - 自分の仕事を憎むには人生は余りにも短い CREATE TABLE、データ手動登録、いずれも問題なし スキーマという概念に少し戸惑う CSE配布元:つみきWeb S2JDBCでDB2への接続を試す jdbc.diconにてcurrentsc

  • はじめてのSAStruts 1週目 - 130単位

    Java初心者ながら、1月始めよりJavaの案件にメインでどっぷりと関わっています。SAStrutsをフレームワークとして選んだのですが、そもそもStrutsすら触ったことのない状態がスタート地点でした。 Super Agile Struts http://sastruts.seasar.org/ 約1ヶ月が過ぎ、このところはDBアクセスやファイル入出力といった若干手のかかる処理を実装しています。そんな中、現在進行形でいろいろとメモしておきたい欲求が日増しに高まってきました。 ただ、初心者状態から試行錯誤してきた先月分の経験もあるにはあって、そちらも書き残しておきたかったりもしています。未だ抜けない完全主義の性です。 というわけで、記憶の範囲内でざっと振り返ってみたいと思います。今週中に現実に追いつくのが目標です。 1/5〜1/9 ※以下は簡易なメモです。正確な情報はSAStrutsリファ