2012-02-22 1 views
1

私はJavaでブログを書いています.2つのサーブレットモデルがあります。最初は記事を操作する関数を記述し、2番目はカテゴリを操作します。私は新しい記事を追加するとき、私は自分のフォームのドロップダウンリストにすべてのカテゴリを持つ必要があります。どのようにして私のサーブレットArticleModから呼び出すことができますか?categoryModサーブレットにすでに置かれているgetCategoryList()を呼び出します。他のサーブレットの関数を呼び出す

はここで、関数のコードです:このサーブレットイムに

public Category[] getCategoryList() throws Exception { 
    db data = new db(); 
    Connection con = data.OpenConnection(); 

    PreparedStatement statement = con.prepareStatement("SELECT * FROM `category`"); 
    ResultSet result = statement.executeQuery(); 

    int size = 0; 
    if (result != null) 
    { 
     if (result.last()) { 
      size = result.getRow(); 
      result.beforeFirst(); 
     } 
    } 
    Category[] categories = new Category[size]; 
    int i = 0; 
    while(result.next()){ 
     categories[i] = new Category (
       result.getInt(1), 
       result.getString(2), 
       result.getString(3)); 
     i++;   
    } 

    return categories; 
    } 

私は他のサーブレットからその関数を呼び出すことができますどのように

 if (request.getParameter("todo").equals("show_category_list")) { 
     try { 
      Category[] categories = this.getCategoryList(); 

      request.setAttribute("categories", categories); 
      RequestDispatcher dispatcher = request.getRequestDispatcher("category/category_list.jsp"); 
      dispatcher.forward(request, response); 
     } catch (Exception e) { 
       } 
    } 

のようにそれを使うのか?

答えて

1

2つのサーブレットに対して親抽象クラスを使用して、そこに共有動作を置くことができます。サンプルのコード以下を参照してください。

2つの方法は、彼らが Parentを有することがある行動を共有している
public abstract class ParentServlet extends HttpServlet 
{ 
    public Category[] getCategoryList() throws Exception 
    { 
     /** 
      * Your getCategoryList codes 
      */ 
    } 
} 

class ChildServelt_1 extends ParentServlet 
{ 
    @Override 
    public void service(ServletRequest arg0, 
         ServletResponse arg1) throws ServletException, IOException 
    { 
     /* 
     * Do write your business 
     */ 
     super.getCategoryList(); 
    } 
} 
class ChildServelt_2 extends ParentServlet 
{ 
    @Override 
    public void service(ServletRequest arg0, 
         ServletResponse arg1) throws ServletException, IOException 
    { 
     /* 
     * Do write your business 
     */ 
     super.getCategoryList(); 
    } 
} 

は、それはOOPのルールです。

+0

私のサーブレットは、すでにHttpServletクラスの子であり、1つのサーブレットを2つの並列クラスの子にすることはできますか?または、私はHttpServletによって私のGeneralクラスを拡張し、ServletModsをGeneralクラスよりも拡張する必要がありますか? –

+0

私は自分自身の上にサンプルを書く!もしあなたがそれを見たら、 'HttpServlet'を拡張し、' Parnet'を拡張する 'childs'を拡張する' Parent'クラスがあることを理解しています。 – MJM

+0

申し訳ありませんが、見たことがなかった...ありがとう; D –

3

2つのサーブレットの共通基本クラスまたは両方のサーブレットが共有できるユーティリティークラスにメソッドを移動します。このように2つのサーブレットを互いに任意に依存するように書くことは悪い設計になります。

関連する問題