【问题标题】:forward from doPost() to doGet() [duplicate]从 doPost() 转发到 doGet() [重复]
【发布时间】:2016-02-15 23:39:03
【问题描述】:

我正在制作一个用于出席的 servlet。所以在doGet()方法中,所有的前端都会显示出来,如果有任何错误产生;即,某些内容留空,然后 doPost() 方法应再次调用 doGet() 以完成空格。

如何从同一个 servlet 的 doPost() 调用 doGet() 方法?

【问题讨论】:

标签: java servlets


【解决方案1】:

如果我从字面上理解您的问题(即从doPost() 调用doGet()),您可以只调用doGet() 方法...它与其他任何方法一样是标准方法。

这里有个提示:当 doPost()doGet() 方法共享一组公共逻辑时,最好将该逻辑隔离到一个单独的(私有)方法中,以便所有相关的 do***() 调用方法。例如:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // GET-based logic
  processCommonLogic();
  // Other GET-based logic
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // POST-based logic
  processCommonLogic();
  // Other POST-based logic
}

private void processCommonLogic() /* throws ServletException and/or IOException if needed */ {
  // Common logic
}

您可以使用此模式创建一个processError() 方法,该方法可以在您需要的任何地方调用。

但是,如果您的问题超出了从 doPost() 调用 doGet() 的范围,我建议您查看 Alain O'Dea 指出的参考资料。

【讨论】:

    【解决方案2】:

    你可以做到,很简单

      this.doGet(req, resp);
      return;
    

    但是,这不是最佳做法。通常最好将视图逻辑实现为 JSP,并从 post 逻辑中分派给它...

      this. getServletConfig().getRequestDispatcher("my_view.jsp")
        .forward(req,resp);;
      return;
    

    或者使用include(),或者像Struts这样的MVC框架...

    【讨论】:

    • Servlet 调用没有发生,并且由于某种原因,即使我未选中单选框,if 语句也没有执行任何操作 doGet() rs.next();字符串 uid1=rs.getString("uid");字符串名称1=rs.getString("名称"); out.println(" "+uid1+" "+name1 +" "+ "YESNO"+" "); doPost() String att1 = request.getParameter("att1"); if(att1=="") { doGet(request, response); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 2011-07-09
    • 2015-04-01
    • 2017-04-19
    • 2011-08-18
    • 2014-06-02
    • 2012-02-27
    相关资源
    最近更新 更多