我目前正在使用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文件返回给用户来生成。
我需要有关如何实现这一目标以及实现此目标的有效方法的建议。任何帮助表示赞赏!提前谢谢!
答案 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;
}
}
}
现在发送a
,b
,c
,d
或all
,每次点击按钮作为参数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);
.....
}
}