Servlet映射:url模式问题

时间:2015-11-26 16:20:05

标签: spring-mvc servlets

我正在尝试设置servlet映射,以便我的DispatcherServlet“调度程序”映射“/ getFile / {fileId}”形式的URL。

如果我按如下方式设置我的web.xml,则只会映射“/ getFile”,我无法附加fileId或者它会中断。

gremlin> found = g.V(vertices["LV"]).out().out().fold().
gremlin>           where(count(local).is(m.size() << 1)).
gremlin>           not(unfold().is(without(leafs))).hasNext()
==>false

所以我原以为我应该使用

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/getFile</url-pattern>
</servlet-mapping>

但这根本不起作用。

我试图调用的方法是

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/getFile/*</url-pattern>
</servlet-mapping>

知道我做错了吗?

编辑:它不像下面那样重复,因为我没有只是“/”的servlet映射。因此,没有默认的回退映射。

我的完整映射。

  @RequestMapping(value = "/getFile/{documentId}", method = RequestMethod.GET)
public void getFile(@PathVariable int documentId, HttpServletResponse response) throws Exception {
    User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

    UserDB userDB = UserDBService.getUser(user.getUsername());

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    Document document = DocumentService.getDocument(documentId);
    String extension = document.getExtension();
    try {
        String path = ApplicationPropertiesConstants.SAFESITE_DOCUMENTS_DIRECTORY + userDB.getSite().getId() + "\\" + documentId + "." + extension;
        InputStream is = new FileInputStream(path);

        response.setHeader("Cache-Control", "no-store");
        response.setHeader("Pragma", "no-cache");
        response.setDateHeader("Expires", 0);
        response.setContentType("image/png");
        org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());

        response.flushBuffer();
    } catch (IllegalArgumentException e) {
        response.sendError(HttpServletResponse.SC_NOT_FOUND);
    }

}

1 个答案:

答案 0 :(得分:0)

是的,所以我使用url

修复了它
  

/的GetFile /的GetFile / {documentId}

在我的客户端。