Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个servlet之间的数据传输_Java_Jsp_Servlets - Fatal编程技术网

Java 两个servlet之间的数据传输

Java 两个servlet之间的数据传输,java,jsp,servlets,Java,Jsp,Servlets,我有两个。 第一个(doGet)显示表单,第二个(doPost)处理表单 这是我的第一个servlet protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Nodes nodes = nodes_dao.start(request); int id = nodes.getI

我有两个。 第一个(doGet)显示表单,第二个(doPost)处理表单

这是我的第一个servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
        Nodes nodes = nodes_dao.start(request);
        int id = nodes.getId_node();

        request.setAttribute("nodes", nodes);
        request.setAttribute("id", id);
        request.getRequestDispatcher(VUE).forward(request, response);
    }
这是我的第二个servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
        String question = null;
        String result = null;   

        question = request.getParameter("question");
        result = request.getParameter("result");
        Node_dao dao = new Node_dao();

        try
        {
            dao.insert_result(result);
            int left_id = dao.select_left_id(result);
            dao.insert_question(question, left_id);


        }
例如,如何在第二个servlet中检索第一个servlet的id


谢谢

您可以使用Cookie或httpsession来完成此操作。
这个链接会让你感兴趣:

你已经在调用
request.setAttribute(“id”,id)在第一个servlet中,然后转发到第二个servlet。所以您所缺少的就是调用
intid=(int)request.getAttribute(“id”)


然而,还有第二个问题。无法通过转发来神奇地更改方法类型。如果原始请求是GET,则在转发之后仍然是GET。因此,您的第二个servlet需要在doGet而不是doPost中处理请求。

您可以使用会话、请求或servlet上下文共享,请参见:将其放在表单中的隐藏输入字段中?它不像您直接从servlet A转到servlet B,在两者之间有一个提交表单数据的客户端(浏览器)。至少我是这么认为的,你发布的内容非常模糊,因为里面还有一个转发…为什么有人会建议他添加一个隐藏的输入,而他显然是在请求属性中添加id,然后转发?上面的代码中甚至没有HTML表单。@developerwjk对于我们这些以前没有见过以这种方式使用转发的人来说,这个问题令人困惑。你为什么要做OP上面做的事?另外,他说有一个“GET”正在完成,然后一个“POST”意味着两个独立的请求,而不是转发。假设他为了简洁而省略了HTML。@KyleM,我同意。我也有点困惑。好的,谢谢,我知道这个问题,但是在第一个jsp中,它是一系列关于get方法的问题。在第二个jsp中,用户使用方法post插入新问题和新结果。因此,我有一个带有doGet的servlet,第二个带有doPost。没有解决办法?谢谢