【问题标题】:Unable to include servlet response by using requestDispathser无法使用 requestDispathser 包含 servlet 响应
【发布时间】:2015-06-10 10:30:12
【问题描述】:

索引.jsp

<form method="post" action="serv">
Enter Latest Reading <input type="text" name="t1"> <br>
Enter Previous Reading <input type="text" name="t2"> <br>
<input type="submit" value="SEND">  
</form>

LoginServlet.java

@WebServlet("/serv")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

    PrintWriter out = res.getWriter();   
    out.println("<u>Following are your Bill Particulars</u><br><br>");   
    req.setAttribute("unitRate", new Double(8.75));

    req.getRequestDispatcher("/Test").include(req, res); 
    out.println("<br><br>Please pay the bill amount before 5th of every month to avoid penalty and disconnection");   
    out.close();

    }

}

IncludeServlet.java

@WebServlet("/Test")

public class IncludeServlet extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

        PrintWriter out = res.getWriter();   
        int latestReading = Integer.parseInt(req.getParameter("t1"));   
        int previousReading = Integer.parseInt(req.getParameter("t2"));   
        Object obj = req.getAttribute("unitRate");
        Double d1 = (Double) obj; 
        double rate = d1.doubleValue();   
        int noOfUnits = latestReading-previousReading; 
        double amountPayable = noOfUnits * rate;   
        out.println("Previous reading: " + previousReading); out.println("<br>Current reading: " + latestReading); 
        out.println("<br>Bill Amount Rs." + amountPayable); 

    }

}

当我运行上述项目时,浏览器中只显示LoginServlet的响应,我无法包含IncludeServlet.java的响应。

LoginServlet 中的所有 System.out.println("") 仅显示为控制台,而非来自 IncludeServlet

我也使用调试器,但这不会进入IncludeServlet.java 页面。

【问题讨论】:

  • 您是否尝试过在您的 IncludeServlet 中创建方法 doPost 而不是 doGet

标签: java jsp servlets requestdispatcher


【解决方案1】:

在您的 IncludeServlet 而不是覆盖 doGet 方法中覆盖 doPost ,因为 Post 请求来自 HTML

protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
  // do Whatever you want to do .
}

更新:还要在两个 servlet 中写入 res.setContentType("text/html");,以便您在 out.print 中编写的 html 执行,否则您的输出将类似于 &lt;br&gt;&lt;br&gt;Please pay the bill amount before 5th of every month to avoid penalty and disconnection

【讨论】:

  • 非常感谢 neeraj.simple 修复,但到目前为止还没有。
猜你喜欢
  • 2022-11-06
  • 1970-01-01
  • 2013-08-15
  • 2013-05-13
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多