我正在运行一个JSP调用servlet1的应用程序。此servlet1在内部调用servlet2以获取一些数据。Servlet1自己计算一些数据,从servlet2获得一些数据,并将其发送回JSP。
但我得到了以下错误:
HTTP状态500-
类型异常报告
留言
说明服务器遇到内部错误(),无法完成此请求。
例外情况
JAVAlang.IllegalStateException:提交响应后无法转发RoutingParser。doPost(RoutingParser.java:389)javax。servlet。http。HttpServlet。服务(HttpServlet.java:754)javax。servlet。http。HttpServlet。服务(HttpServlet.java:847)
注意根原因的完整堆栈跟踪可在Apache Tomcat/7.0.16日志中找到。
import java.awt.List;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import org.w3c.dom.Element;
//import javax.lang.model.element.Element;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.text.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import java.io.File;
import java.util.ArrayList;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
//import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;
public class RoutingParser extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
System.out.println("Routing Parser is accessible");
System.out.println("i reached servlet");
try {
ArrayList inputlist1= new ArrayList();
inputlist1.add(request.getParameter("CardNetwork"));//CardNetwork
inputlist1.add(request.getParameter("Currency"));//Currency
inputlist1.add(request.getParameter("TxnCategory"));//TxnCategory
inputlist1.add(request.getParameter("TxnType"));//TxnType
ArrayList list1=new ArrayList();
ArrayList returnedData= new ArrayList();
System.out.println("i reached servlet");
try {
File fXmlFile = new File("c:\\eclipse\\RoutingTable.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
org.w3c.dom.Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("Entry");
System.out.println("-----------------------");
for (int temp = 0; temp < nList.getLength(); temp++)
{
//some piece of code
returnedData.add(data1);
returnedData.add(extra_info);
break;
}
}
/*it is important to remove the earlier node elements as the comparison starts from 0 all the time, we make a purely fresh arraylist for every node
* if we dont remove, the arraylist will keep on adding elements to the end and the comparison will not be made with latest node elements.
*/
for (int remove = 0; remove < 26; remove++){
list1.remove(0);
}
}
//this will be returned to JSP page
ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/Mid");
// change your request and response accordingly
dispatcher.forward(request, response);
request.setAttribute("returndata",returnedData);
System.out.println("data1 set in arraylist for JSP page is: "+ returnedData.get(0));
System.out.println("extra_info set in arraylist for JSP page is: "+ returnedData.get(1));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("array list in end is: " + list1);
} finally {
RequestDispatcher requestDispatcher = getServletContext().getRequestDispatcher("/show_result_combination_2.jsp");
requestDispatcher.forward(request,response);
}
}
private static String getTagValue(String sTag, Element eElement) {
NodeList nlList = (eElement).getElementsByTagName(sTag).item(0).getChildNodes();
Node nValue = (Node) nlList.item(0);
return nValue.getNodeValue();
}
}
有人能帮我解决这个错误吗?
提前谢谢。
你在逻辑上有问题。最后块中的代码应该移动到捕获块内几行(因为我知道你想转发响应 /Mid如果一切正常,如果不是你想重定向到/show_result_combination_2.jsp)
如果不是这样,那么您应该修改代码,因为您有两个可能发生的正向条件。这就是导致错误的原因。如果执行第一个,则第二个转发生成异常
问题是,您试图在转发后写入响应。Servlet 2可能正在提交响应。
尝试使用RequestDispatcher。而是包括。
我研究一个简单的问题已经有相当长的时间了。在包括这个网站在内的许多论坛上搜索了很多,但仍然无法解决这个问题。因此请求您的帮助。 我有一个带有文本区域和提交按钮的JSP页面。 在Servlet类中,我执行以下操作- 因此,在我点击提交按钮后,我的请求将转到servlet,并从servlet返回到原始的jsp,但我无法用servlet输出填充文本区域。我已经尝试了很多方法,就像我在互联网上发现的那样,
我回来时问了同样的问题,但这次有更多的记录。我有一个包含许多servlet和JSP的web应用程序。应用程序有一个登录选项。在登录servlet中,我启动一个新会话,在会话中放置一些信息后,我转到一个JSP。 登录。java相关代码: 转发后,我得到一个名为Insert.jsp的Jsp页面,在那里我得到会话属性。 插入jsp相关代码: 在这之后,我有一个表单将我引导到servlet Adaugar
我们在Liferay 7.0.6中实现了一个corejspook模块来定制user_action.jsp,它工作得很好。 升级到Liferay 7.3.6后,它停止工作。通过在gogo shell中搜索,我已经确保了我们将jsp替换成的模块是正确的。我还查看了源代码,以确认包含。jsp是对的。我将版本号更新为Liferay 7.3捆绑包版本(5.0.53)。我的bnd中的条目。bnd是:Fragm
如何将表单信息从jsp传递到java再传递到jsp。 我有一个jsp表单,当我提交它时,它会直接传递到另一个显示这些信息的jsp页面。但我想先在java文件中处理这些信息,然后再将其传递给jsp。 我在jsp中做了类似的事情。。 然后在process.java我使用request.set属性(“数据”)来存储处理后的数据。但是如何将其重定向回html视图文件?抱歉,这里是新用户。 对不起,这应该是
主要内容:JSP的由来,Servlet与JSP异同点,JSP相对于Servlet的优点JSP(Java Server Pages)是一种动态网页开发技术。JSP 文件就是在传统的 HTML 文件中插入 Java 代码和 JSP 标签,后缀名为 。 JSP 与 PHP、ASP、ASP.NET 等语言类似,都运行在服务端。通常返回给客户端的就是一个 HTML 文件,因此只要有浏览器就能查看 JSP 页面。 JSP 使用 JSP 标签在 HTML 网页中插入 Java 代码,标签通常以
介绍:JAVA Web应用程序中包含的Servlet。有一些值用于所有servlet,而另一些值仅与指定的servlet相关。因此,使用一个输入表单(JSP),然后它将这些值/表单输入发布到另一个“新”JSP。从这个JSP中,以前的表单(JSP)中的值应该被发布到一个servlet(-有时,会加入新表单中的附加值) 使用一个简单的HTML表单,将JSP中的值成功地发布到另一个JSP中。 问题:比如