java servlet是否可以调用另一个java servlet中的函数?如果有可能,你能告诉我一个如何做的简单例子吗?
提前谢谢
答案 0 :(得分:2)
不建议直接从另一个servlet调用servlet,这被认为是不好的做法,因为servlet实例由servlet容器管理。您应该遵循separation of concerns原则。
servlet仅负责与客户端的接口,不应包含业务逻辑。将业务逻辑放在单独的层中(例如,另一个包中的类),并仅从servlet调用它。因此,业务类负责实际的内部数据和转换,而servlet负责向外部提供不同的视图。
答案 1 :(得分:0)
有几种选择。
单向静止(我不喜欢)。
创建一个类并提供所需的参数并在每个servlet中创建实例。
答案 2 :(得分:0)
有点hackish的方式:
RequestDispatcher dispatcher = request.getRequestDispatcher("/someServletOfYours");
dispatcher.forward(request, response);
现在,在你的" someServletOfYours"的 doPost 中实现你的方法。类。如果需要传递参数,请调用ServletRequest的setAttribute
方法,并从下一个servlet中的请求中获取参数。来自" someServletOfYourrs"您可以重定向回原始的servlet。它将通过http。
答案 3 :(得分:-1)
Servlet1
import java.io.IOException;
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 Servlet1
*/
@WebServlet("/Servlet1")
public class Servlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
Servlet2 s = new Servlet2();
s.CreateUser();
response.getWriter().append("Served at: ").append(request.getContextPath());
}
}
Servlet2
import java.io.FileNotFoundException;
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 Servlet1
*/
@WebServlet("/Servlet2")
public class Servlet2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
public void CreateUser() throws FileNotFoundException{
System.out.println("Create Users...");
}
}
输出: