来自其他servlet的调用函数
问题描述:
我在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,它的功能?
答
您可以为两个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的一个规则。
答
将方法移到两个servlet的公共基类或两个servlet都可以共享的实用程序类。编写这两个servlet以这种方式任意相互依赖将是一个糟糕的设计。
我的servlet已经是类HttpServlet的子类,一个servlet可以是两个类的子类吗?或者我应该通过HttpServlet扩展我的General类,并通过General类扩展我的ServletMods? – 2012-02-22 13:45:34
我自己写样品!!!如果你看到它,你就明白你必须有一个'Parent'类来扩展'HttpServlet',然后再扩展'Parnet'的一个或多个'childs'。 – MJM 2012-02-22 13:48:26
抱歉老兄,没见过......谢谢; D – 2012-02-22 13:51:37