Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.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_Html_Servlets - Fatal编程技术网

Java 如何在单击“提交”按钮后运行多个servlet?

Java 如何在单击“提交”按钮后运行多个servlet?,java,html,servlets,Java,Html,Servlets,我想在html页面中单击submit按钮时运行两个servlet 下面是servlet和html代码 package com.serv; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; i

我想在html页面中单击submit按钮时运行两个servlet 下面是servlet和html代码

package com.serv;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MyServlet
 */
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        try {
            String user=request.getParameter("user");
            out.println("<h2>"+user+"</h2>");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        }

}
package com.serv;
导入java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
/**
*Servlet实现类MyServlet
*/
@WebServlet(“/MyServlet”)
公共类MyServlet扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
/**
*@请参阅HttpServlet#doPost(HttpServletRequest请求,HttpServletResponse响应)
*/
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
//TODO自动生成的方法存根
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
试一试{
字符串user=request.getParameter(“用户”);
out.println(“+user+”);
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
这是第二个servlet

package com.serv;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MyServlet2
 */
@WebServlet("/MyServlet2")
public class MyServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.setContentType("text/html");
    PrintWriter out1=response.getWriter();
    try {
        String user1=request.getParameter("user1");
        out1.println("<h2>"+user1+"</h2>");
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}
package com.serv;
导入java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
/**
*Servlet实现类MyServlet2
*/
@WebServlet(“/MyServlet2”)
公共类MyServlet2扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
/**
*@参见HttpServlet#doGet(HttpServletRequest请求,HttpServletResponse响应)
*/
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
//TODO自动生成的方法存根
response.setContentType(“text/html”);
PrintWriter out1=response.getWriter();
试一试{
字符串user1=request.getParameter(“user1”);
out1.println(“+user1+”);
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
这里是HTML文件

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form method="post" action="MyServlet">
        Name<input type="text" name="user">

    </form>
    <form method="post" action="MyServlet2">
        Sir Name<input type="text" name="user1">
    <input type="submit" value="submit">
    </form>

    </body>
</html>

在此处插入标题
名称
先生姓名

我试着把提交按钮放在不同的地方,但它不起作用。有人能告诉我如何编写代码以便调用这两个servlet吗?一个解决方案是使用过滤器拦截请求,并从中转发到两个doPost方法

这可以帮助您:

另一个解决方案是从一个servlet转发到另一个servlet。如果您可以修改servlet,那么这可能比过滤器更好

看看这个:


您还可以使用JavaScript从浏览器发送两个请求来解决此问题,但我知道问题的范围仅限于Java。

您可以使用JavaScript将请求从一个servlet传递到另一个servlet

Request.getRequestDispatcher(String).forward()
Request.getRequestDispatcher(字符串).include()


基于您希望如何处理servlet生成的响应。我不清楚为什么在不同的servlet中获得
user
user1
参数。而是在一个Servlet类中执行所有操作。请看一看主要用于请求初步处理的Servlet过滤器。阅读有关适当使用它们的内容

servlet只能处理一个http请求,如果需要预处理,您可以创建一个过滤器该如何使用?通常,从请求到servlet应该有1:1的映射。如果您希望发生多个事件,您的servlet应该对业务层进行不同的调用。我只想显示servlet内容。您可以使用
include()
方法来执行此操作。我需要同时显示两个servlet输出。它是否工作?是,在第二个servlet处理RequestDispatcher rs=request.getRequestDispatcher(getServletName())之后,它将只创建一个响应;包括(请求、响应);你能告诉我我犯了什么错误吗?