在servlet中调用java类

在servlet中调用java类,java,servlets,Java,Servlets,在我的servlet中,我调用了class.java的一个实例,这个类构造了一个html表,以便在jsp中创建这个表 servlet如下所示: String report=request.getParameter("selrep"); String datev=request.getParameter("datepicker"); String op=request.getParameter("operator"); String batch =request.getParameter("sel

在我的servlet中,我调用了class.java的一个实例,这个类构造了一个html表,以便在jsp中创建这个表

servlet如下所示:

String report=request.getParameter("selrep");
String datev=request.getParameter("datepicker");
String op=request.getParameter("operator");
String batch =request.getParameter("selbatch");

System.out.println("report kind was:"+report);
System.out.println("date was:"+datev);
System.out.println("operator:"+op);
System.out.println("batch:"+batch);


if(report.equalsIgnoreCase("Report Denied"))
{
    DeniedReportDisplay rd = new DeniedReportDisplay(); 
    rd.ConstruireReport();
}
else if(report.equalsIgnoreCase("Report Locked"))
{
    LockedReportDisplay rl = new LockedReportDisplay(); 
    rl.ConstruireReport();
}

request.getRequestDispatcher("EspaceValidation.jsp").forward(request, response);
在我的jsp中,我不能显示这个表,即使它是空的或是满的

注意:例如,构造denied Report的类具有以下结构:

   /*constructeur*/
                  public DeniedReportDisplay() {}

 /*Methodes*/

 @SuppressWarnings("unchecked")

                 public StringBuffer ConstruireReport()

                 { 
                     StringBuffer retour=new StringBuffer();
                     int i = 0;
                     retour.append("<table border = 1 width=900 id=sheet  align=left>");    
                     retour.append("<tr bgcolor=#0099FF>" );
                     retour.append("<label> Denied Report</label>");
                     retour.append("</tr>");                       
                     retour.append("<tr>"); 

 String[] nomCols ={"Nom","Prenom","trackingDate","activity","projectcode","WAName","taskCode","timeSpent","PercentTaskComplete","Comment"};
 //String HQL_QUERY = null;                      
  for(i=0;i< nomCols.length;i++)
  {
    retour.append(("<td bgcolor=#0066CC>")+ nomCols[i] + "</td>");

   }
  retour.append("</tr>");

     retour.append("<tr>");

                 try {

 s= HibernateUtil.currentSession();
 tx=s.beginTransaction();
 Query query = s.createQuery("select  opcemployees.Nom,opcemployees.Prenom,dailytimesheet.TrackingDate,dailytimesheet.Activity," +
   "dailytimesheet.ProjectCode,dailytimesheet.WAName,dailytimesheet.TaskCode," +
   "dailytimesheet.TimeSpent,dailytimesheet.PercentTaskComplete from  Opcemployees opcemployees,Dailytimesheet dailytimesheet  " +
   "where opcemployees.Matricule=dailytimesheet.Matricule  and dailytimesheet.Etat=3 " +
   "group by opcemployees.Nom,opcemployees.Prenom" );  


   for(Iterator it=query.iterate();it.hasNext();)
      {                                                                        
                        if(it.hasNext()){

                         Object[] row = (Object[]) it.next();


                         retour.append("<td>" +row [0]+ "</td>");//Nom
                         retour.append("<td>" + row [1] + "</td>");//Prenom
                         retour.append("<td>" + row [2] + "</td>");//trackingdate
                         retour.append("<td>"  +  row [3]+  "</td>");//activity
                         retour.append("<td>"  + row [4] +"</td>");//projectcode
                         retour.append("<td>" +  row [5]+ "</td>");//waname
                         retour.append("<td>" + row [6] + "</td>");//taskcode
                         retour.append("<td>" + row [7] + "</td>");//timespent
                         retour.append("<td>" + row [8] + "</td>");//perecnttaskcomplete
                         retour.append("<td><input type=text /></td>");//case de commentaire
                                     }
                                  retour.append("</tr>");


      }   
 //terminer la table.
                          retour.append ("</table>");

                          tx.commit();


                } catch (HibernateException e) 
                 {
     retour.append ("</table><H1>ERREUR:</H1>" +e.getMessage());
              e.printStackTrace();
                 }

                 return retour;
 }

谢谢您的帮助。

问题是您没有对ConstructureReport的返回值执行任何操作,因此它丢失了。您应该将其设置为请求属性,以便JSP可以找到字符串


编辑:删除了在servlet上使用getWriter的建议-误解的场景。

1 DeniedReportDisplay和LockedReportDisplay的实例是在本地创建的,一旦超出if..else块,就无法引用它们

2调用的方法rd.ConstruireReport返回一个StringBuffer,您应该将其存储在某个地方。尝试使用Response.getWriter并将所有响应字符串放入此writer


3建议您查找一些关于如何设计Servlets/JSP的好教程,您尝试构建的解决方案非常复杂

你漏掉了你提问的部分。你的问题是什么?你得到了什么样的结果?有任何错误消息或类似信息吗?+1用于同时构造和查询,现在这是有效的!我想从现在起我会用法语来编写我的东西。有人能把源代码缩进吗?我在列名中也看到了大量的nom。我不想回答这个问题,因为我知道这是没有希望的。在你之前的问题中,你已经被告知过很多次,这并不是事情应该如何运作的方式。您需要在列表中收集感兴趣的数据,将其存储在请求范围中,转发到JSP,在JSP中使用JSTL使用c:forEach控制列表上的页面流循环,并使用c:if等显示/隐藏HTML元素,在JSP中使用EL访问任何范围中的数据。如果你想让自己走上正轨,请重新阅读我在相关问题中的所有答案/评论。祝你好运。很抱歉,这个答案令人惊讶。现在,他无法再转发到所需的JSP而不面临非法状态异常?我不做很多JSP开发,所以如果我错过了一些基本的东西,请告诉我!不,请阅读他的问题的第一句话和第一段代码的最后一行。考虑到当时的格式,我没有看到请求调度器不感到惊讶!。我将删除使用编写器的建议。返回最近排序的文章的最后一页或最后一页之后的一页,从开始查看标记为servlets和/或jsp的问题的答案。将其写入响应将导致转发上的IllegalStateException。