通常我从servlet转发到jsp或映射的URL,并且互联网上充满了这样的例子。但我需要将请求转发给内部servlet。例如,通过使用其完整的类名,而不将该servlet映射到URL。如何将请求从另一个servlet或过滤器转发到内部servlet?
答案 0 :(得分:0)
正如Shadab评论的那样,我认为你应该使用@WebServlet注释(和RequestDispatcher),例如:
@WebServlet(urlPatterns = { "/sample" })
public class SampleServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
RequestDispatcher dispatch = req.getRequestDispatcher( "/forwardpath");
dispatch.forward(req, res);
}
SampleServlet - > ForwardedServlet
@WebServlet(urlPatterns = { "/forwardpath" })
public class ForwardedServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
...
}
答案 1 :(得分:0)
您需要的方法是RequestDispatcher getNamedDispatcher(String name);
,它返回一个RequestDispatcher对象,该对象充当命名servlet的包装器。
ServletConfig.getServletName()
的javadoc说:
名称可以通过服务器管理提供,在Web应用程序部署描述符中指定,或者对于未注册(因此未命名)的servlet实例,它将是servlet的类名。
你必须这样做:
getServletContext().getNamedDispatcher("full.class.name.for.new.servlet");