使用请求调度程序不工作包括来自另一个 servlet 的 servlet
including a servlet from another servlet using request dispatcher not working
dispatcher.include()
不工作
我正在尝试添加一个 servlet
,其中包含一个 navbar
。当我将它包含在另一个 servlet
中时它起作用了。不过这个好像不行。
addItem
是 class 我想在其中包含 servlet sidenav:
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
PrintWriter writer = response.getWriter();
operations operations=new operations();
RequestDispatcher dispatcher;
writer.println("<body>");
dispatcher=request.getRequestDispatcher("sidenav");
dispatcher.include(request,response);
writer.println("<h1> Add new Item</h1>");
writer.println("<body>");
}
而 sidenav
class 看起来像这样:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
PrintWriter writer=response.getWriter();
writer.println("<div class='sidenav'>");
writer.println("<div class='item'>");
writer.println("<a href='addUser'>Add new user</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='addInventory'>Add to inventory</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='viewReport'>View report</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='recordSale'>Record sold items</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='addItem'>Add new item</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='dayEnd'>Do day end</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='monthEnd'>Do month end</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='yearEnd'>Do year end</a>");
writer.println("</div>");
writer.println("</div>");
}
sidenav servlet
从 class managerHome
调用,如下所示:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
PrintWriter writer= response.getWriter();
operations operations=new operations();
RequestDispatcher dispatcher=request.getRequestDispatcher("headerHtml");
dispatcher.include(request,response);
writer.println("<body>");
dispatcher=request.getRequestDispatcher("sidenav");
dispatcher.include(request,response);
HttpSession session=request.getSession(false);
String user= (String) session.getAttribute("user");
writer.println("<div class='main'>");
writer.println("<h1>Welcome back"+user+"</h1>");
writer.println("</div>");
writer.println("</body>");
}
如您所见,我已经包含了来自 managerHome servlet 的 sidenav servlet,它工作正常
我希望侧面导航出现在 addItem 页面中,但它似乎不起作用。
提前致谢
经过一番研究,我发现了我的问题。我试图包括 sidenav
,它有 doGet()
,而 addItem
有 doPost()
。显然,您无法发送请求或包含来自不具有相同覆盖方法的 servlet 的 servlet。
dispatcher.include()
不工作
我正在尝试添加一个 servlet
,其中包含一个 navbar
。当我将它包含在另一个 servlet
中时它起作用了。不过这个好像不行。
addItem
是 class 我想在其中包含 servlet sidenav:
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
PrintWriter writer = response.getWriter();
operations operations=new operations();
RequestDispatcher dispatcher;
writer.println("<body>");
dispatcher=request.getRequestDispatcher("sidenav");
dispatcher.include(request,response);
writer.println("<h1> Add new Item</h1>");
writer.println("<body>");
}
而 sidenav
class 看起来像这样:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
PrintWriter writer=response.getWriter();
writer.println("<div class='sidenav'>");
writer.println("<div class='item'>");
writer.println("<a href='addUser'>Add new user</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='addInventory'>Add to inventory</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='viewReport'>View report</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='recordSale'>Record sold items</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='addItem'>Add new item</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='dayEnd'>Do day end</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='monthEnd'>Do month end</a>");
writer.println("</div>");
writer.println("<div class='item'>");
writer.println("<a href='yearEnd'>Do year end</a>");
writer.println("</div>");
writer.println("</div>");
}
sidenav servlet
从 class managerHome
调用,如下所示:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
PrintWriter writer= response.getWriter();
operations operations=new operations();
RequestDispatcher dispatcher=request.getRequestDispatcher("headerHtml");
dispatcher.include(request,response);
writer.println("<body>");
dispatcher=request.getRequestDispatcher("sidenav");
dispatcher.include(request,response);
HttpSession session=request.getSession(false);
String user= (String) session.getAttribute("user");
writer.println("<div class='main'>");
writer.println("<h1>Welcome back"+user+"</h1>");
writer.println("</div>");
writer.println("</body>");
}
如您所见,我已经包含了来自 managerHome servlet 的 sidenav servlet,它工作正常
我希望侧面导航出现在 addItem 页面中,但它似乎不起作用。
提前致谢
经过一番研究,我发现了我的问题。我试图包括 sidenav
,它有 doGet()
,而 addItem
有 doPost()
。显然,您无法发送请求或包含来自不具有相同覆盖方法的 servlet 的 servlet。