自作プログラムStruts2.0 ?action.java2008-04-30 Wed 01:24
どうしようかずっと考えていたのですが、やっぱり公開することにしました。
というのも、このブログへ来る方はプログラミングに関するキーワードで来ている方が多いようなので、公開することで参考になる面があれば良いかなと思ったのです。 コード中の?の部分はカスタマイズして遊んでみて下さい(これだけでは勿論動きませんが)。 勿論このコード以外にもjspファイルやxmlファイルがあるのですがソースをそのまま載せる事が出来ない状態でどうしようか検討中です(これはちょっと無理かもしれないです)。 ちなみにこのプログラムは2007年末から2008年初頭にかけてIT業界に入るための面接で見せる為に作ったものです。 さらにもう一点、実はこれと動作が全く同じEJB3.0版もあるのでそちらも暇を見ながら載せていきます。 改めてソースを見て"現時点で一番"改良していきたいと思う点はSQLの部分をストアドプロシージャにしてサーバー上に置くことかな。 package ?.?; import javax.naming.*; import javax.sql.*; import java.sql.*; import org.apache.struts2.config.Result; //Resultアノテーションを使うのに必要 /*Resultアノテーションを使って次の遷移先を指定する このクラスは?.?パッケージに属しているので コンテキストルート直下にあるJSPを呼び出すには ファイル名の前に"/"を付ける*/ @Result("/kekka.jsp") public class ?Action { //アノテーションを使う場合、クラス名は「****Action」としなければいけない /*入力フォームから送られてきたパラメータは フィールドを宣言してセッターとゲッターを 記述しておけば勝手に値がセットされる*/ private DataSource ds; private Integer year; private Integer month; private Integer day; private String kekka; private String pattern1; private String pattern2; public Integer getYear() { return year; } public void setYear(Integer year) { this.year = year; } public Integer getMonth() { return month; } public void setMonth(Integer month) { this.month = month; } public Integer getDay() { return day; } public void setDay(Integer day) { this.day = day; } public String getKekka() { return kekka; } public void setKekka(String kekka){ this.kekka = kekka; } public String getPattern1(){ return pattern1; } public void setPattern1(String pattern1){ this.pattern1 = pattern1; } public String getPattern2(){ return pattern2; } public void setPattern2(String pattern2){ this.pattern2 = pattern2; } public String execute(){ //デフォルトではメソッド名はexecuteで引数なしで戻り値の型はSringになる try{ StringBuilder sb = new StringBuilder(); final int MONTHS = 12; int a = day-1; //リソースアノテーションが使えないので通常の方法でDBに接続 InitialContext ic = new InitialContext(); ds = (DataSource)ic.lookup("java:comp/env/jdbc/datasource"); Connection con = ds.getConnection(); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT ? FROM ? WHERE ?="+year+" AND ?="+month); rs.next(); a += rs.getInt(1); if(a>=61){ a -= 60; } if(a>=1 && a<=10){ sb.append("?"); }else if(a>=11 && a<=20){ sb.append("?"); } else if(a>=21 && a<=30){ sb.append("?"); } else if(a>=31 && a<=40){ sb.append("?"); } else if(a>=41 && a<=50){ sb.append("?"); } else{ sb.append("?"); } if(year%2==0){ sb.append("?"); } else{ sb.append("?"); } if(a>=1 && a<=10 && year%2==0 && year%MONTHS==2){ sb.append("?"); }else if(a>=1 && a<=10 && year%2==1 && year%MONTHS==3){ sb.append("?"); }else if(a>=11 && a<=20 && year%2==0 && year%MONTHS==0){ sb.append("?"); }else if(a>=11 && a<=20 && year%2==1 && year%MONTHS==1){ sb.append("?"); }else if(a>=21 && a<=30 && year%2==0 && year%MONTHS==10){ sb.append("?"); }else if(a>=21 && a<=30 && year%2==1 && year%MONTHS==11){ sb.append("?"); }else if(a>=31 && a<=40 && year%2==0 && year%MONTHS==8){ sb.append("?"); }else if(a>=31 && a<=40 && year%2==1 && year%MONTHS==9){ sb.append("?"); }else if(a>=41 && a<=50 && year%2==0 && year%MONTHS==6){ sb.append("?"); }else if(a>=41 && a<=50 && year%2==1 && year%MONTHS==7){ sb.append("?"); }else if(a>=51 && a<=60 && year%2==0 && year%MONTHS==4){ sb.append("?"); }else if(a>=51 && a<=60 && year%2==1 && year%MONTHS==5){ sb.append("?"); }else{ sb.append(""); } setKekka(sb.toString()); //処理結果をStringに変換しセット if(sb.toString().indexOf("?") != -1){ //sbの中に"?"という文字列が含まれているかを調べている setPattern1("?.html"); }else if(sb.toString().indexOf("?") != -1){ setPattern1("?.html"); }else if(sb.toString().indexOf("?") != -1){ setPattern1("?.html"); }else if(sb.toString().indexOf("?") != -1){ setPattern1("?.html"); }else if(sb.toString().indexOf("?") != -1){ setPattern1("?.html"); }else{ setPattern1("?.html"); } if(sb.toString().indexOf("?") != -1){ setPattern2("?.html"); } } catch(Exception e){ System.out.println(e.getMessage()); e.printStackTrace(); } return "success"; //デフォルトではsuccessを返す } } |
|
| HOME |
|


