【问题标题】:jetty servlet mapping uri to filesjetty servlet 映射 uri 到文件
【发布时间】:2012-11-23 16:02:00
【问题描述】:

通过HttpServletRequest.getRequestURI,我们可以得到用户访问servlet时输入的路径。

如何编写将这些 URI 映射到我的主目录中的文件的 servlet。例如,如果用户输入 servlet 的 URL

“http://localhost:8080/webbtechnologies/html/index.html”

发送文件

C:\Users\User\My Documents\Web Technologies\html\ index.html

给用户。

这是我目前的代码:

public class SimpleFileManagerServlet extends HttpServlet {
private String location;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html; charset=UTF-8");
resp.setStatus(HttpServletResponse.SC_OK);
PrintWriter out = resp.getWriter();
location = req.getRequestURI(); 
}

public static void main(String... args) throws Exception {
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.addServlet(SimpleFileManagerServlet.class, "/");

Server server = new Server(8080);
server.setHandler(context);
server.start();
server.join();
}


}

【问题讨论】:

    标签: java servlets jetty


    【解决方案1】:

    看看 jetty 的 DefaultServlet 正是你想要的。如果您想做其他事情,您可以使用 DefaultServlet 中的代码并对其进行扩展。

    但是,提供您对用例 DefaultServlet 的描述对您来说应该足够了。

    这里是 javadoc:http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/servlet/DefaultServlet.html

    查看随发行版提供的测试 webapp,了解如何在 web.xml 等中进行配置。

    【讨论】:

      【解决方案2】:

      Jetty 的DefaultServlet 将为您完成这项工作。你真正需要做的就是告诉它在你的服务器上从哪里提供文件。

      试试这个:

      import org.eclipse.jetty.servlet.DefaultServlet;
      
      public static void main(String... args) throws Exception {
      
          ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
      
          context.setResourceBase("file:///C:/Users/User/My Documents/Web Technologies");
          context.setContextPath("/");
          context.addServlet(new ServletHolder("default", DefaultServlet.class), "/*");
      
          Server server = new Server(8080);
          server.setHandler(context);
          server.start();
          server.join();
      }
      

      【讨论】:

        猜你喜欢
        • 2016-10-14
        • 2016-02-26
        • 2013-11-29
        • 2012-05-14
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        • 2018-04-01
        • 1970-01-01
        相关资源
        最近更新 更多