将servlet文件拆分为多个文件

时间:2016-04-17 04:34:09

标签: java jsp servlets apache-poi

我目前正在使用JSP,Servlets和Apache POI构建Budget Estimator Web应用程序。

我有一个servlet文件,它接受来自用户的表单输入,并在执行一些计算后根据这些输入将预算估算值写入Excel文件。 有4种不同的预算类别。为方便起见,我将它们称为A,B,C,D。该应用程序生成一个Excel文件,其中包括: 1)预算摘要表 2)4个类别中每个类别的单独表格

目前,所有这些类别的预算计算代码都在一个servlet文件中。我想将这4个类别的计算部分拆分为单独的servlet文件。我想让用户跟踪为每个类别分配的预算。我打算按如下方式实现:按钮将放在每个类别的末尾。当用户单击该按钮时,应调用一个servlet,该servlet将执行预算计算并返回应该显示在同一网页上的该类别的预算估算(可能在文本字段中)。类别B,C和D也是如此。最后,如果用户对分配感到满意,他可以通过单击"生成报告"生成excel报告。按钮。单击此按钮将调用主servlet文件,然后将调用5个生成5页Excel文件的不同servlet。最终的excel将通过将这5张纸绑定在一起并通过主servlet文件返回给用户来生成。

我需要有关如何实现这一目标以及实现此目标的有效方法的建议。任何帮助表示赞赏!提前谢谢!

2 个答案:

答案 0 :(得分:0)

你仍然可以在1个servlet中执行它,传递一个参数说calculate和请求确定你想要做哪个进程,然后在servlet中调用相应的方法,所有的计算方法都应该在一个单独的您在servlet中实例化和使用的类BudgetCalculation

在下面找到一个建议:

public class BudgetCalculation {

    public String calculateA(...some params...){

        return result;
    }

    public String calculateB(...some params...){

        return result;
    }

    public String calculateC(...some params...){

        return result;
    }

    public String calculateD(...some params...){

        return result;
    }
}

假设您有一个生成Excel工作表的库ExcelUtil

public class MyServlet extends HttpServlet {

    public void doGet(...request,....){ // this can also be doPost(), use the one your current solution works with
        BudgetCalculation budgetCalculation = new BudgetCalculation();

        if(request.getParameter("calculate").equals("a")){
            return budgetCalculation.calculateA(...params...);
        }else if(request.getParameter("calculate").equals("b")){
            return budgetCalculation.calculateB(...params...);
        }else if(request.getParameter("calculate").equals("c")){
            return budgetCalculation.calculateC(...params...);
        }else if(request.getParameter("calculate").equals("d")){
            return budgetCalculation.calculateD(...params...);
        }else if(request.getParameter("calculate").equals("all")){
            ExcelUtil excelUtil = new ExcelUtil();
            excelUtil.createExcelFile(..params...);
            return ExcelFileUrl;
        }
    }
}

现在发送abcdall,每次点击按钮作为参数calculate的值

答案 1 :(得分:-1)

正如其他人已经指出的那样,你应该使用一个类来执行这个操作,但是如果你真的想在序列中调用多个servl,你可以使用RequestDispatcher,它通过将url映射到servlet请求来工作(如{{ 3}}):

public class Test_ALL extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     response.setContentType("text/plain");
     request.getRequestDispatcher("/Servlet1").include(request, response);
     request.getRequestDispatcher("/Servlet2").include(request, response);
     .....

  }
}