结合两个Java Servlet的输出

时间:2019-05-30 20:22:27

标签: java servlets

我正在用Java开发一个带有后端的旅馆管理系统。我制作了一个显示菜单的标头类,希望将其包含在项目的每个servlet中。我尝试使用请求调度程序。像这样:

RequestDispatcher rd1 = req.getRequestDispatcher("/header");
    rd1.include(req, res);

当我将其放在某个servlet上时,该servlet的输出将被删除(仅此输出放置在此include行之后),并且仅显示标头servlet。我已经在标头servlet中重载了doGet()doPost()方法。

The Following picture shows that my header is working fine

这里有一个示例servlet,其中包括标头servlet。

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class add extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws IOException,ServletException
{
    PrintWriter out = res.getWriter();

    res.setContentType("text/html");
    out.println("<html><head><title>Add student</title></head>");
    RequestDispatcher rd1 = req.getRequestDispatcher("/header");   
    rd1.include(req, res);           //I want to show the data after this line as well
    out.println("<form method='post' action='addtoDatabase'>");
    out.println("Roll Number : <input type='text' name='roll' placeholder='student Roll Number'><br>");
    out.println("Name : <input type='text' name='studentName' autofocus placeholder='student name'><br>");
    out.println("room number : <input type='text' name='roomNumber' placeholder='Room Number'><br>");
    out.println("Address : <input type='text' name='address' placeholder='Address'><br>");
    out.println("Phone : <input type='text' name='phone' placeholder='03001234567'><br>");
    out.println("<input type='submit' value='Add Student'> ");

    out.println("</form></body></html>");
    out.close();
}
}

在上面的代码中,HTML表单未显示在浏览器上。如下面的屏幕快照所示,仅显示标题。

Screenshot of remove page

如何在浏览器中合并标头和其他任何servlet的输出?

1 个答案:

答案 0 :(得分:0)

Session Scope,也有Application Scope。我想知道您实现的目标是在不同的会话之间共享一些数据。那就是您需要Application Scope。即ServletContext,请参考Using application scope variables in java