Java 如何在单击“提交”按钮后运行多个servlet?
我想在html页面中单击submit按钮时运行两个servlet 下面是servlet和html代码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
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())之后,它将只创建一个响应;包括(请求、响应);你能告诉我我犯了什么错误吗?