2012-02-22 104 views
1

我在Java上写博客,现在我有2个servlet模型,首先编写函数来处理文章,然后使用类别进行操作。当我添加新文章时,我应该在我的表单上的下拉列表中包含所有类别。我如何从我的Servlet ArticleMod调用,函数getCategoryList()已经放在CategoryMod servlet中;来自其他servlet的调用函数

下面是功能代码:在这个servlet IM

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) { 
       } 
    } 

我如何可以调用其他servlet,它的功能?

回答

1

您可以为两个servlet使用父级抽象类,并将共享行为放在那里。用于样品见以下代码:

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(); 
    } 
} 

当两个方法都共享行为它们是可以具有Parent,它是OOP的一个规则。

+0

我的servlet已经是类HttpServlet的子类,一个servlet可以是两个类的子类吗?或者我应该通过HttpServlet扩展我的General类,并通过General类扩展我的ServletMods? – 2012-02-22 13:45:34

+0

我自己写样品!!!如果你看到它,你就明白你必须有一个'Parent'类来扩展'HttpServlet',然后再扩展'Parnet'的一个或多个'childs'。 – MJM 2012-02-22 13:48:26

+0

抱歉老兄,没见过......谢谢; D – 2012-02-22 13:51:37

3

将方法移到两个servlet的公共基类或两个servlet都可以共享的实用程序类。编写这两个servlet以这种方式任意相互依赖将是一个糟糕的设计。

相关问题