Java 无法使用RequestDispatcher将servlet中计算的值转发到jsp页面。如何执行相同操作?

Java 无法使用RequestDispatcher将servlet中计算的值转发到jsp页面。如何执行相同操作?,java,servlets,Java,Servlets,在我的代码中..我使用request.getParameter()从servlet中的jsp页面检索了输入值(文本类型) 现在使用这些值,我进行了一些计算。 现在,我想转发计算值(即结果)和操作数。。即。将检索到的值添加到新的jsp页面。为此,我使用request.setAttribute()设置值,并使用getRequestDispatcher().forward(请求,响应)转发到目标jsp页面 但是我的页面没有被转发 package imsf; import java.io.*; i

在我的代码中..我使用
request.getParameter()
从servlet中的jsp页面检索了输入值(文本类型)

现在使用这些值,我进行了一些计算。 现在,我想转发计算值(即结果)和操作数。。即。将检索到的值添加到新的jsp页面。为此,我使用
request.setAttribute()
设置值,并使用
getRequestDispatcher().forward(请求,响应)
转发到目标jsp页面

但是我的页面没有被转发

package imsf;  

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import Service;  

public class CalcPurRate extends HttpServlet {
    String iname;
    String cname;
    String mrate;
    String irate;
    String disR;
    String disP;
    String newAdd;
    String q;
    int imr;
    int iir;
    int idR;
    int idP;
    String dP;
    String dR;
    int ina;
    int iprate;
    int total;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
           String in=request.getParameter("iname");
           out.print("my name"+in);
           String cn=request.getParameter("cname");
           out.print("my cate"+cn);

          if(request.getParameter("mrate")!=null)
          {
            String mr=request.getParameter("mrate");
              if(!(mr.equals(null)))
              {
               imr=Integer.parseInt(mr);
               out.print(" mrp= "+imr);
              }
          }
          if(request.getParameter("irate")!=null)
          {
            String ir=request.getParameter("irate");
              if(!(ir.equals(null)))
              {
               iir=Integer.parseInt(ir);
               out.print("invoice= "+iir);
              }
          }
         if(request.getParameter("disR")!=null)
         {
            out.print("disR not null");
            dR=request.getParameter("disR");
            if(!(dR.equals(null))) 
            {
             out.print("disR not zero");
             idR=Integer.parseInt(dR);
             /*if(request.getParameter("disP")==null)
                 {
                   out.print("disP not zero");
                   dP=request.getParameter("disP");
                     if(dP.equals(null))
                     {
                       out.print("disP not zero");
                        iprate=((iir)-(idR));
                        out.print("iprate="+iprate);
                     }
                 }*/
              out.print("integer dis R="+idR);
              iprate=((iir)-(idR));
              out.print("iprate="+iprate);
           }
         }
          /*if(request.getParameter("disP")!=null)
          {
              out.print("disP not null");
              dP=request.getParameter("disP");
              if(!(dP.equals(null)))
               {
                out.print("disP value="+dP);
                out.print("disP not zero");
                /*if(request.getParameter("disR")==null)
                  {
                   dR=request.getParameter("disR");
                   if(dR.equals(null))
                    {
                     idP=Integer.parseInt(dP);
                     out.print("integer dis P="+idP);
                     iprate=((iir)-(((idP)*(iir))/100));
                     out.print("pur rate"+iprate);
                    }
                  }*/
              //}
              //}
           /*if(idR!=0)
           {
               out.print("innn");
               iprate=((iir)-(idR));
               out.print("pur rate"+iprate);
           }
           out.print("heheh");

           if(idP!=0)
           {
               iprate=iir-((idP*iir)/100);
               out.print("vgfhg"+iprate);
           }*/
           if(request.getParameter("newAdd")!=null)
           {
               String na=request.getParameter("newAdd");
               if(!(na.equals(null)))
              {
              ina=Integer.parseInt(na);
              total=((ina)*(iprate));
              out.print("total="+total);
              }
           }
           request.setAttribute("purRate",iprate);
           request.setAttribute("total",total);
           //response.sendRedirect("ItemDetail.jsp");
           RequestDispatcher rd=request.getRequestDispatcher("/ItemDetail.jsp");
           rd.forward(request, response);
        }
        catch(Exception e)
        {
          e.getMessage();
        }
    }

}

如果要进入新页面,只需使用sendRedirect()方法。 顺便说一下,您提供的详细信息看起来是正确的。 尝试在目标jsp获取参数,并让我们知道。。它应该有用

HTH

processRequest()
不是对
HttpServlet
有任何意义的方法。您的servlet实际上什么也没做-
processRequest()
不会被任何东西调用

您应该实现
doGet()
doPost()
,并将逻辑放在其中


顺便说一句,像这样在servlet的字段中存储数据是一个非常糟糕的主意。它不是线程安全的-多个并发请求将破坏servlet的状态。

您所做的似乎是正确的。您应该提供一些代码,以便我们可以查看详细信息。@Ayusman…我想与在d servlet中计算的值一起转发到新页面…使用SendRedirect()只会发出新请求,vlaues不会转发。使用RequestDispatcher().forward(req,res),我没有在d Destinal页面获得值..期待您的帮助..@skaffman..谢谢您的建议..但我想分享sumthing..我也以与上面相同的方式实现了其他代码(即..在processRequest()中)我想知道为什么这个代码不起作用希望我能得到你的帮助不看我不知道你发布的代码不起作用我只能告诉你。