Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 没有url的服务器映射_Java_Servlets_Url Rewriting_Web.xml - Fatal编程技术网

Java 没有url的服务器映射

Java 没有url的服务器映射,java,servlets,url-rewriting,web.xml,Java,Servlets,Url Rewriting,Web.xml,我有一个自定义路由器,在一些过程之后,将请求转发给指定的servlet。所以servlet在web.xml中实际上是私有的,但路由器本身是私有的 是否可以不为servlet设置url模式并使其无法从web访问? 目前,我正在使用一个大哈希作为url模式,并检查一些直接请求中不存在的标志。由于您的类并没有真正用作servlet,我建议它们不作为servlet实现。远离web.xml中的映射,使用HasMap进行映射。对于您的非常好的评论,这里是: @WebServlet(urlPatterns =

我有一个自定义路由器,在一些过程之后,
将请求转发给指定的servlet。所以servlet在web.xml中实际上是私有的,但路由器本身是私有的

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

由于您的类并没有真正用作servlet,我建议它们不作为servlet实现。远离
web.xml中的映射,使用
HasMap
进行映射。

对于您的非常好的评论,这里是:

@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");
    }

}

这一点非常有效

而测试servlet不可访问


但是,我建议您对试图帮助您的人要友好一些:)

您是否尝试过将servlet映射到类似于
/WEB-INF/servletName
?只是一个假设,我从来没有尝试过。如果不设置servlet url模式,将很难将请求转发给它。这些其他servlet必须是servlet吗?它们是否可以是只执行您希望它们执行的操作的操作类,而不必将请求作为servlet获取?@MicheleMariotti工作得很好!谢谢它返回404而不将请求传递给servlet。@DanielBarbarian您是对的。没有url模式的Servlet实际上不是Servlet。我只是使用web.xml结构(key-servlet类)来查找servlet类。我将web.xml用作映射,我不使用简单映射(例如HashMap)的唯一原因是web.xml不允许错误的类名,重构类将更新它。所以,如果你知道一个适合我的强映射,我会很感激的。@AHHP那么HashMap不会起作用吗?哈哈哈……你误解了Michele!我测试了它,得到了404,这就是我想要的(分配不可访问的URL)。因此,您的解决方案非常有效,我在之前的评论中对此表示感谢。O.O我非常抱歉!!我还以为你在挖苦人呢!我就是想不起来:D
@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);
    }
}