• ベストアンサー

tomcat(struts)で起動時に処理を行いたい

strutsでhttp://localhost:8080/test/test.do というように呼び出せば、以下のexecuteメソッドが呼ばれるわけですが、 public ActionForward execute(ActionMapping map, ActionForm fm, HttpServletRequest req, HttpServletResponse response) throws Exception {   ++処理++ } ここでおこなう処理をアプリ読み込み時つまりTomcat起動時に 共通の処理を行いたいのですが、何か方法はありませんでしょうか。 お願いします。

  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • noocyte
  • ベストアンサー率58% (171/291)
回答No.1

独自の PlugIn クラスを実装することでできるようです. Strutsのプラグインを作る http://www.atmarkit.co.jp/fjava/javatips/096jakarta013.html

akinaga
質問者

お礼

まさしくこんな感じのをさがしていました。 ありがとうございます。

その他の回答 (1)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

サーブレット起動時に行うのなら、サーブレットのinit処理に実装すべきではないのでしょうか?

akinaga
質問者

お礼

サーブレットでもできるようですね。 どうもありがとうございました。

関連するQ&A

  • 「Struts使用中」XMLからデータ取得

    FormBeanにセットされた値を取得して、その値を元に一致するデータをXMLからとってきてそれらをテキストに落とし込む。という動作です。 最初はFormBeanにセットされた値をそのままテキストに落とし込むだけだったので楽にできて正常に動いていましたが、「XMLからとってくる」という動きを追加しようとしたところうまくいきません。 public class Test extends Action { (1) public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) {   FormBeanからキーになる値をとってくる。 } (2) public static void main(String[] args) throws Exception { Document document = DocumentBuilderFactory.newInstance()  キーとなる値を元にXMLからデータ検索し、値を取得 } (3) public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) {   そのほかのFormBeanの値をとってきて(2)で取得した値と一緒にテキストに落とし込み、returnで処理終了のjspを表示させる }  public ActionForward executeが(1)と(3)で2回でているからコンパイルエラーがでるのだとわかるのですが、その他の記述方法がわかりません。  ネットでいろいろ探したのですが、XMLparserのサンプルやStrutsのサンプルはあるのですが、2つ一緒のサンプルが見つからないので困っています。  ご存知の方よろしくお願いいたします。

    • ベストアンサー
    • Java
  • ActionForm form にnullが入ってくる原因

    import java.io.IOException; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public ActionForward execute( ActionMapping map , ActionForm form , HttpServletRequest request , HttpServletResponse response ) throws ServletException, IOException, ClassNotFoundException, SQLException { という記述をして このソースで落ちる原因を調べたら、ActionForm form の "form" でnullが入ってきていました。 なにか定義し忘れているのでしょうか?

    • ベストアンサー
    • Java
  • strutsのstruts-config.xmlでのエラーメッセージ

    こんばんは strutsのエラーメッセージ表示で困っています。 javaでthrowしてstruts-config.xmlのexceptionで エラーを表示します。 以下のようにコーディングしてあり、 key999に定義してあるメッセージを表示することはできます。 しかしmessagesにセットしたメッセージを表示することができません。 messagesにセットしたメッセージを表示するにはstruts-config.xmlの keyはどのように設定すればよいのでしょうか? よろしくお願いします。 *struts-config.xml <exception key="999" type="myException" path="xxxxxxxxxx.jsp" handler="myExceptionHandler"/> *java public ActionForward hoge( ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res ) throws Exception { try { return map.findForward("XXXXX"); } catch (myException e) { ActionMessages messages = new ActionMessages(); messages.add("error" ,new ActionMessage("001","エラー")); saveMessages(req,messages); throw e; } }

  • list<クラス名> とは何でしょうか?

    JAVA初心者のものです。 新規プロジェクトに向けてJAVAの習得に励んでおり、現在は「プロになるためのWeb技術入門」という本でフレームワークについて勉強しています。 ところでその本の中で次のコードがありますが、ここで List<ProductItem> は何を意味するものでしょうか? ご存知の方は教えてください。 なお、ProductItem は別の箇所で定義されたクラス名です。 public class ItemListShowAction extends Action { /* (non-Javadoc) * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ProductLogic productLogic = new IbatisProductLogic(); List<ProductItem> productList = productLogic.getProductList(); request.setAttribute("productList", productList); return mapping.findForward("show"); } }

    • ベストアンサー
    • Java
  • Struts等に出てくる用語について

    閲覧ありがとうございます。 Strutsに出てくる用語がいまいちしっくり理解できておりません。 なので現在はルールと割り切って書いてますが、 より深い理解をしたいと思っております。 何か良書やサイト(英語でもかまいません)がありましたら 教えていただけませんでしょうか? 宜しくお願い致します。 いまいち理解できない単語の例 ActionMapping ActionForm HttpServletRequest HttpServletResponse request response dispatch context

    • ベストアンサー
    • Java
  • セッションの情報の消去について

    ログイン時にユーザ名をセッションを登録して、ログアウトのときにremoveAttributeでセッションから名前を消去したいのですが消えません。 ログイン時 String data = "USER NAME"; HttpSession session = request.getSession(); session.setAttribute("user",data); ログアウト時 session.removeAttribute("user"); strutsのexcuteメソッドに書いています。ログインとログアウト以外の処理は書いていません。 public ActionForward excute(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse resonse) throws Exception { ここにログインとログアウトの処理を記述 } なぜ消えないのか悩んでいます。ご存知の方ご教授いだけないでしょうか。

    • ベストアンサー
    • Java
  • Servletでcsvファイル読込

    Servletからcsvファイルを読込む処理を作成しています。 しかし、FileNotFoundExceptionが発生してファイルを読込めません。 下記のように記述した場合、csvファイルはどこに置けばよいのでしょうか? いろいろファイルの置き場所を変えてはやってみましたがダメでした。 package action; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class MemberEntryAction extends Action{ public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { try { // 入力ストリームを作成。 FileReader fr = new FileReader("a.csv"); BufferedReader br = new BufferedReader(fr); // 読込みループ。 String line; // 読み込まれた1行。 while( (line = br.readLine()) != null ) { System.out.println(line); } // 入力・出力ストリームを閉じる。 br.close(); fr.close(); } catch ( FileNotFoundException e ) { System.out.println("FileNotFound!"); } return mapping.findForward("memberMenu"); } }

  • strutsでのgetInputStream

    お世話になります。 早速なのですがちょっと困っていて知ってる方いたら教えていただきたいと思います。 現在 strutsのactionからhttpの内容を全て取り出すプログラムを 作成しています。 httpヘッダーに関しては問題なく取得できたのですが httpのボディ部をHttpServletRequest.getInputStream()で取得 しようとしてもバイト長が-1で返ってきてしまい読み込めません でした。 読み込もうとしている値はテキストです。 (キ-=値の形式ではないので、getInputStreamでやっています。) プログラムを抜粋して載せさせていただきます。 ------------------------------------------------------- public class TestAction extends Action{ public ActionForward execute(ActionMapping mapping,ActionFormform,HttpServletRequest request, HttpServletResponse response) { try{ ServletInputStream sis = request.getInputStream(); byte[] bytes = new byte[1024]; String is=""; while(true){ int len = (sis.readLine(bytes,0,1024)); System.out.println("read length: " + len);←ここで-1が返ってくる。 if(len == -1){ break; } } }catch(Exception e){ e.printStackTrace(); } return null; } } ----------------------------------------------- どうぞよろしくお願いしますm(__)m

  • strutsのhtml:linkの使い方

    html:linkを使用してJSPを表示した際に、前のフォームのプロパティ値(ここではstaffNumberの値)を取得したいのですが,うまくいきません。 同じ処理をhtml:submitで実行すると取得できています。 その違いを教えて頂きたいのです。 以下がそのコードです。 【struts-config】 <form-bean dynamic="true" name= "loginForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name = "staffNumber" type= "java.lang.String" /> </form-bean> <action name="loginForm" path="/login" scope="request" type="login.action.LoginAction" validate="false"> <forward name="success" path="/login.jsp" /> </action> 【login.jsp】 <html:form action="/login">  <html:text property="staffNumber" size="10"maxlength="8"/> <html:link action="/login">testlink</html:link> <html:submit value="test"/> </html:form> 【LoginAction】 public class LoginAction extends Action{ public ActionForward execute (ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception{ DynaValidatorForm loginForm =(DynaValidatorForm) form; String staffNumber=(String)loginForm.get("staffNumber"); System.out.println(staffNumber); return (mapping.findForward("success")); } } linkの処理で同じJSPを表示していますが,前のプロパティ値を取得しているかをログで確認する事を優先しているのでそのようにしています。 質問の意味がわからない、ソースの不足等ありましたら御指摘下さい。 宜しくお願いします。

    • ベストアンサー
    • Java
  • executeメソッドが複数回呼ばれている?

    こんばんは。現在、Java言語を勉強しているものです。 初めて間もないので、文章がわかり辛い点があるかとは思いますが 宜しくお願い致します。 ※strutsを使用しています。 JSPのある画面から、ボタンを押下することにより、 下記のアクションを実行しています。 しかし、一回しかボタンを押下していないにも関わらず、 executeメソッドが複数回呼ばれるパターンがあります。 public final class TestAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) { System.out.println("TEST"); return (new ActionForward(mapping.getInput())); } } ※ マッピングは下記のとおりです。 <action path="/test" type="package.TestAction" name="XXXXForm" validate="true" input="/pages/XXXXX.jsp" scope="request"> </action> ※コンソール上に、 TEST と表示される場合と TEST TEST と表示される場合があります。 一度しかCALLされないようにしたいのですが(一度しかCALLされないものだと思っているのですが)、 どのように対処したらいいかで困っております。 ご指南のほう、宜しくお願い致します。 宜しくお願い致しますm(_ _)m

    • ベストアンサー
    • Java