最近ゲームばっかやっていたので、久々にコーディングw

先日作成したActionServletクラスを修正した。


実行する業務コントローラクラスを振り分け可能とするため、

クラス名を指定することで実行クラスを変更できるよう修正した。


「リフレクション」とかいう手法らしいです。知らなかった・・・

まだまだ勉強せねば、ですねw


やり方は若干微妙かもしれませんが、一応下記コードで動きました。

ちなみにエラートラップをちゃんと仕掛けないと、コンパイルエラーが出てました。

エラー処理も考えなきゃですね。ま、後でw


■src

-----------------------------------------------------------------------------------------

package jp.ne.hobby.fw.servlet;

import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import javax.servlet.*;
import javax.servlet.http.*;


public class ActionServlet extends HttpServlet {

/** 返却JSP(サンプル) */
private static String RET_JSP = "<%@ page contentType=\"text/html;charset=Shift_JIS\"%>\r\n<html>\r\n<head><titile></title></head>\r\n<body>\r\n<h1>Hobby JSP</h1>\r\n</body>\r\n</html>";


/** 実行クラス名 */
private String execClassName;

/** 実行クラス */
private Class<?> execClass;

/** 実行メソッド名 */
public static final String exeMethodName = "execute";

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println(RET_JSP);
// コントローラの実行
executeControl();
}


/**
* 業務コントローラクラスを実行する
*/
public void executeControl(){
try{
// クラス名を取得
// TODO:後ほどプロパティファイルなどから取得するよう修正
execClassName = "jp.ne.hobby.fw.control.HobbyControl";
// クラスを取得
execClass = Class.forName(execClassName);
// 実行クラスのインスタンス生成(コンストラクタの実行)
Object execClassObj = execClass.newInstance();
Class[] types = new Class[] {};
// 実行メソッドのインスタンスを生成
Method execMethod = execClass.getMethod(exeMethodName,types);
// 業務コントローラクラスのメソッドを実行
execMethod.invoke(execClassObj, new Object[0]);
}
// TODO:以下、エラートラップは汚いコードとなっているため後ほど修正
catch (ClassNotFoundException e) {
throw new NoClassDefFoundError(e.getMessage());
} catch (InstantiationException e) {
throw new InstantiationError(e.getMessage());
} catch (IllegalAccessException e) {
throw new IllegalAccessError(e.getMessage());
} catch (NoSuchMethodException e){
} catch(InvocationTargetException e){
}
}
}

-----------------------------------------------------------------------------------------


■はじめてのJavaフレームワーク TECHNICAL MASTER

ポケモン無事クリアしました(^^)v


んで、とりあえずは↓の「サザンドラ」を育ててます。(ドラゴン好き♪)


気ままにプログラミング-サザンドラ2

四天王が強くてレベル上げるの大変なんですけど・・・(´・ω・`)

ポケモンのブラック 買っちゃいました!

すごいね、今回のポケモン。新機能が盛りだくさんなのでちょっと焦りますw

そして新種のポケモンがわさわさ出てくるので、名前を覚えるのが大変す。


最初は「ツタージャ」選びました!

いまはジャノビー→ジャローダと進化しました。

進化するポケモン好き(^^)


やっとこさバッチ5つ取ったどー!!

この調子でがんばる。今週は夏期休暇だし、今日はクリア目標でやったる!ww


ホワイト 持ってる人とポケモン交換したい。



よし!進めるぞ!!