初監督作品

同じ事を何度も調べないようにメモ代わり。そしてもの書きの練習に。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

Seasar2[Teeda]でログイン認証&Interceptor&SessionにDtoを保存

Teeda-extension 1.0.12とS2Container 2.4.22でWebアプリを鋭意開発中

LoginPageでログイン成功後、ユーザー情報のDtoをSessionに格納、
各ページ読み込み前にinterceptorを使ってDtoの中身を確認、nullならLoginPageへ飛ばす、
というWebアプリなら当たり前なことをやりたかったのだけども。。

1日はまってしまった。
まだSeasarの仕組みを理解してないせいもあるし、親切なマニュアルがないのも非常に困った。
結局Seasarのメーリングリンスと過去ログを懸命にたどりながらやっとできました。


[Sessionに保存するDto]


@Component(instance = InstanceType.SESSION)
public class SessionDataDto implements Serializable {
    private static final long serialVersionUID = 1L;
	
	   public String userId;

    }  



[LoginPage.java]


public Class doLogin() {

//この前で入力されたユーザーIDとパスワードのDB問い合わせと認証やってます
SessionDataDto sessionDataDto = (SessionDataDto)SingletonS2ContainerFactory.getContainer().getComponent(SessionDataDto.class);

sessionDataDto.setUserId(userId);

}



[インターセプタ]


public class LoginConfirmInterceptor extends AbstractInterceptor {
	
	private static final long serialVersionUID = -534757779194131741L;
	
	public Object invoke(MethodInvocation invocation) throws Throwable {
		
		SessionDataDto sessionDataDto = (SessionDataDto)SingletonS2ContainerFactory.getContainer().getComponent(SessionDataDto.class);
		//ユーザー情報(Session)を保持していない場合
		//強制的にLoginPageへ遷移させる。
		if(sessionDataDto.getUserId() == null){
			
			logger.info(">>>>>>No login. Go to LoginPage");
			return LoginPage.class;
		}
			return invocation.proceed();
		}
	
}


[Interceptorを適用しているページクラス]


@Binding(bindingType = BindingType.MUST)
	protected SessionDataDto sessionDataDto;
	
	
	public Class initialize() {
		
		if(sessionDataDto == null){
			return LoginPage.class;
		}


customizer.diconファイルへの追記もお忘れなく!


  
      
        
          
            "loginConfirmInterceptor"
          
          "do.*, initialize, prerender"
        
      
    
//以下は、LoginPageはインターセプタ対象外にするってことです
    
      "<ルートパッケージ>.web"
      "LoginPage"
    


Internet Explorer9, FireFox17.0, Chromeで動作確認済みです(Windows7, Tomcat6)


あ、@Binding使う際はDtoの変数名をルールに従って書かないとDIされないでヌルポでるので注意です
最初SessionDataDto dto;とかやってたらヌルポでまくりで、、
くわしくはこちら

スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2012/11/29(木) 17:45:16|
  2. Java
  3. | トラックバック:0
  4. | コメント:0

CentOS 5.5にmysql 5.5をrpmでインスール、libaio.so.1がないと怒られる。。

ServersMan@VPSにTomcat6とmysqlをインストールするのに
えらく時間がかかってしまいました。
yumでいつも楽してたからなあ。。rpmでがんばりました!

特にmysqlはパッケージを探すのでまず苦労をし、
その後依存関係のエラーでてこずり。。

参考にしたのはここ。英語のサイトですが一番シンプルにわかりやすーくまとめられてました。centOS 6 64bit用の説明なので、wgetするときは注意です。
それにしてもパッケージ多すぎよぉ。。

rpm -Uvh * のとこで
Missing Dependency: libaio.so.1 mysql-server-5.5.13-1.el5.remi.x86_64
というエラーをくらい。。そもそもlibaioって何?ってところから始まり。。(非同期I/Oを実行してくれるものらしい。) yumで入れようとしたらサーバーから何故か応答がなくなり。。

結局LINUX PACKAGESからlibaioのrpmパッケージをダウンロードして、rpm -iしました。

そしたらmysqlのインストールもうまくいきました。やっとーーー!2時間くらいかかった

rpmでインストするとmy.cnfが自動で作成されないってわかった。
find / -name my.cnf までして探したよ。。
あとetc/init.d/mysqlで起動や停止を行うことになってた。
自動起動の設定も chkconfig mysqld on では通らず、chkconfig mysql onでなぜか通った。
dがあるかないかだけ。。
yumとは色々ちがうんだなあ

ver5.1のmy.cnfからコピペして作成したmy.cnfを保存してmysqlをリスタートしようとしたら。。
Starting MySQL...The server quit without updating PID file
なんだこりゃー
ググってみたら、ver5.5からdefault-character-set=utf8は使えない仕様になっているとか!
知らなかったー

勉強になりました。コマンドもっと覚えます。

テーマ:Linux - ジャンル:コンピュータ

  1. 2012/10/19(金) 18:01:56|
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

IE9でDOMMouseScroll が効かない。。

現在のプロジェクトで制作中のグリッド兼スケジューラで
カラム数が多いので全部出すのは無理〜ってなって、スクロールで対応することになった
panelとかは使わず、div要素でラップして、中身のdiv要素のmargin-leftを
マウススクロールイベントに合わせてマイナスにしたりプラスにしたり。。という単純なものです。
FireFox, Chromeではばっちり動いたのですが、IE9がスクロールしない。。

こちらでくわしくマウスホイールについて解説されていますが、IE9では動作確認されてないとのことで。

こまったなー

そしたらGoogle Codeに解決策が載ってた。いつもお世話になってます先生。




if (navigator.userAgent.match(/like Mac OS X/i)) {
		window.addEventListener('gesturechange',handleMouseWheel,false); // iOS gestures (UNTESTED)
	} else if (navigator.userAgent.toLowerCase().indexOf('firefox') >= 0) {
		window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Firefox
	} else {
		window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari/Opera/Explorer9
	}



できたー

テーマ:web制作 - ジャンル:コンピュータ

  1. 2012/10/17(水) 17:05:42|
  2. JavaScript
  3. | トラックバック:0
  4. | コメント:0

JavaScriptのargumentsオブジェクト

プロジェクトでスケジュールビューを作らなくてはならなくなり、
githubでjQuery-Guttというライブラリを発見。
でもこのままでは使えないのでカスタマイズ中。
ソースをみてたらこんなんあった

 
  
if (arguments.length >= 2) {
     hour = (Math.floor((t.getHours()) / arguments[1]) * arguments[1]);
}
 


いきなりでてきたこのargumentsってなに?グローバルで定義もされてないし
もちろん関数内にもそんなんないよーって戸惑う。
調べたら出てきた。ここの説明が一番わかりやすかった
JavaやPHPでは引数が一致してないと怒られるもんなー。なるほど便利。
javascriptって簡単なようで、隠れ仕様(?)みたいなのが多いなぁ。。prototypeとか
このargumentsにはcalleというオブジェクトが含まれており、その関数自体への参照ができるとか
これは無名関数内での再帰処理で使うと便利らしい。くわしくはこちら
なるほどーと思った。今度使ってみたい

テーマ:web制作 - ジャンル:コンピュータ

  1. 2012/10/11(木) 16:37:13|
  2. JavaScript
  3. | トラックバック:0
  4. | コメント:0

jQuery のダイアログをアニメーションを使いなめらかに拡大/縮小

jQueryのダイアログを開いた状態でコンテンツを追加するとき
みにょんって横に広がってほしかったのでどうするのか調べたら
Stack Overflowでみつけた


$("#dialog").dialog("widget").animate({
           width: '900px',
		    height:'700px'
		  }, {
		  duration: 500,
		  step: function() {
      //ダイアログを画面の中央に表示させるため
		    $("#dialog").dialog('option', 'position', 'center');
		  }
		});


はじめてブログにソースコード貼り付けてみたので
きれいにみせるためにSyntaxHighLighter 3.0というライブラリをつかってみた
こちらを参考にさせて頂きました

テーマ:web制作 - ジャンル:コンピュータ

  1. 2012/10/04(木) 10:32:41|
  2. JavaScript
  3. | トラックバック:0
  4. | コメント:0
次のページ

プロフィール

fumsa

Author:fumsa
プログラマー3年目です。
C, Java, PHP, JavaScript, Linuxなど主に

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (0)
CSS (1)
Linux (3)
JavaScript (3)
Java (1)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。