java - RequestDispatcher 未将 java servlet 中的重定向到 JSP

标签 java jsp servlets requestdispatcher

我正在尝试从我的 servlet 重定向到字符串值为空的另一个页面。当我运行代码时,它保留在同一页面上,而不是重定向到我的错误页面。这是我的代码:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 
  response.setContentType("text/html");
  String emp = request.getParameter("emp")!=null ? request.getParameter("emp"): "";
  MCenter mCenter = new MCenter();
  mCenter = mCenterDAO.getMCenterPocByEmp(emp);
  mCenter = mCenterDAO.getMCenterByObject(mCenter);

  PrintWriter pw = response.getWriter();
  String mPocName = mCenter.getMCenterPocName();
  String mCenter = mCenter.getMCenterName();
     if(mPocName == null || mCenter == null) {
        request.getRequestDispacher("error.jsp").forward(request, response);
     System.out.println("Null or not name " + mPocName + "center " + mCenter);
     }
   String json = getMCenterPoc(emp);
   pw.print(json);
   pw.close();
}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
   doPost(request, response); 
}

我没有收到错误,并且打印输出给我 null 或值,具体取决于是否有值。

最佳答案

您必须对代码进行以下更改。请求调度程序不适用于 Ajax post。

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
 String emp = request.getParameter("emp") != null ? request.getParameter("emp") : "";
 MCenter mCenter = new MCenter();
 mCenter = mCenterDAO.getMCenterPocByEmp(emp);
 mCenter = mCenterDAO.getMCenterByObject(mCenter);
 String mPocName = mCenter.getMCenterPocName();
 String mCenter = mCenter.getMCenterName();
 if (mPocName == null || mCenter == null) {
  request.sendRedirect("error.jsp");
  System.out.println("Null or not name " + mPocName + "center " + mCenter);
 } else {
  response.setContentType("text/html");
  PrintWriter pw = response.getWriter();
  String json = getMCenterPoc(emp);
  pw.print(json);
  pw.close();
 }
}

或者您可以使用 Ajax 取得成功。这样你就不需要把代码改成我的了。 如果你想用Ajax来做。

var emp = $('#emp').val();
$.ajax({
    type: "POST",
    url: "yourServletName",
    data: 'emp='+emp+'',
    success: function(response) {
        if(response='error'){
              window.location.href='error.jsp';
        }else{
              //What you want
        }
    }
});

当然,您的 servlet 必须更改为以下内容。

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
 response.setContentType("text/html");
 PrintWriter pw = response.getWriter();
 String emp = request.getParameter("emp") != null ? request.getParameter("emp") : "";
 MCenter mCenter = new MCenter();
 mCenter = mCenterDAO.getMCenterPocByEmp(emp);
 mCenter = mCenterDAO.getMCenterByObject(mCenter);
 String mPocName = mCenter.getMCenterPocName();
 String mCenter = mCenter.getMCenterName();
 if (mPocName == null || mCenter == null) {
  String json = "error";
 } else {
  String json = getMCenterPoc(emp);
 }
 pw.print(json);
 pw.close();
}

关于java - RequestDispatcher 未将 java servlet 中的重定向到 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39878906/

相关文章:

java - 如何从url中获取参数

java - 为什么我的多头变成了整数?

java - 使用 JDBC 和 JSP 的 UPSERT MYSQL 命令

java - 如何从另一台计算机上的独立客户端通过互联网调用在远程计算机上运行的 EJB,而无需 JSP/Servlet 作为中间层?

java - 显示未知时如何在android studio中显示模型名称?

java - 关于缺少自定义 javadoc 标签的警告

java - etat HTTP 500 - javax.servlet.ServletException : javax. servlet.jsp.JspException:找不到 ActionMappings 或 ActionFormBeans 集合

java - 无法在选择查询中使用 session 数据

java - Spring boot 应用程序无法从控制台以 .jar 形式打开

java - 使用 Android SAXParser,我的 XML 元素神秘地分成两半