没有网址的服务器映射

时间:2014-01-30 09:03:44

标签: java servlets url-rewriting web.xml

在某些进程之后,我有一个自定义路由器和forward对指定servlet的请求。所以servlet在web.xml中实际上是私有的,但路由器本身就是私有的。

是否可以为servlet设置url-pattern并使其无法从Web访问? 目前我正在使用大型哈希作为url-pattern并检查直接请求中不存在的一些标志。

2 个答案:

答案 0 :(得分:1)

由于您的类实际上并未用作Servlet,我建议它们不是作为servlet实现的。远离web.xml中的映射,而是使用HasMap<String, Class>代替映射。

答案 1 :(得分: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

然而,我建议你更好地帮助你的人:)