2014-01-30 41 views
0

我有一个自定义路由器和forward请求指定的servlet在一些进程后。所以servlet在web.xml中实际上是私有的,但是路由器本身是私有不带url的服务器映射

是否有可能不是为servlet设置url-pattern并使其无法从Web访问? 目前我使用一个大的散列作为url-pattern并检查一些不存在于直接请求中的标志。

+1

做你试图映射的servlet像'/ WEB-INF/servletName '?只是一个假设,从未尝试过自己。 –

+0

如果您没有设置servlet url模式,那么将很难将请求转发给它。这些其他servlet是否必须是servlet?他们可以成为行动类,只是做你想要他们的行动,而不必作为一个servlet获得请求? – DanielBarbarian

+0

@MicheleMariotti工作很棒!谢谢。它返回404而不将请求传递给servlet。 – AHHP

回答

1

在回答你的非常漂亮评论,在这里你是:

@WebServlet(urlPatterns = "/WEB-INF/test") 
public class Test extends HttpServlet 
{ 
    private static final long serialVersionUID = 1L; 

    @Override 
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
    { 
     resp.getWriter().println("helloooooooooooo"); 
    } 

} 

@WebServlet(urlPatterns = "/router") 
public class Router extends HttpServlet 
{ 
    private static final long serialVersionUID = 1L; 

    @Override 
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     request.getRequestDispatcher("/WEB-INF/test").forward(request, response); 
    } 
} 

这一点也适用完美

screenshot

,而测试的servlet是无法访问的

screenshot2

然而

,我建议你可以更好的与人想帮你:)

+0

哈哈哈......你误解了米歇尔!我测试了它,得到了404,这是我想要的(分配不可访问的URL)。所以你的解决方案工作很大,我赞赏我以前的评论。 – AHHP

+0

O.o我很抱歉!我以为你是讽刺!我无法得到[sarcastaball](http://www.youtube.com/watch?v=vlv6BrrxD_4):D –

1

由于你的类不是真正用作Servlet,我建议他们不作为servlet实现。远离映射web.xml,并使用HasMap<String, Class>代替映射。