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